From 4d5b2f91b1c380514f318efff660d9000886cd24 Mon Sep 17 00:00:00 2001 From: mcmartin Date: Wed, 14 Sep 2005 22:03:42 +0000 Subject: [PATCH] Setup menu has been split up into submenus for screen space git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1873 8092fc87-c524-0410-9efc-e669fe64eaf9 --- sc2/ChangeLog | 1 + sc2/content/lbm/setupmenu.1.png | Bin 0 -> 15873 bytes sc2/content/lbm/setupmenu.2.png | Bin 0 -> 10274 bytes sc2/content/lbm/setupmenu.3.png | Bin 0 -> 15875 bytes sc2/content/lbm/setupmenu.ani | 4 + sc2/src/sc2code/libs/graphics/widgets.c | 51 ++++- sc2/src/sc2code/libs/graphics/widgets.h | 35 ++++ sc2/src/sc2code/setupmenu.c | 250 +++++++++++++++++++----- 8 files changed, 294 insertions(+), 47 deletions(-) create mode 100644 sc2/content/lbm/setupmenu.1.png create mode 100644 sc2/content/lbm/setupmenu.2.png create mode 100644 sc2/content/lbm/setupmenu.3.png diff --git a/sc2/ChangeLog b/sc2/ChangeLog index 6ebd1e764..630bcae2b 100644 --- a/sc2/ChangeLog +++ b/sc2/ChangeLog @@ -1,4 +1,5 @@ Changes towards version 0.5: +- Setup menu split into four submenus - Michael - Fixed fallback in getHomeDir() for when $HOME is not defined on *nix - SvdB - %APPDATA% fallback no longer to "../userdata", but to "./userdata", diff --git a/sc2/content/lbm/setupmenu.1.png b/sc2/content/lbm/setupmenu.1.png new file mode 100644 index 0000000000000000000000000000000000000000..08f38a95f201fc504ac02bad4f92b3de422d96fa GIT binary patch literal 15873 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 literal 0 HcmV?d00001 diff --git a/sc2/content/lbm/setupmenu.2.png b/sc2/content/lbm/setupmenu.2.png new file mode 100644 index 0000000000000000000000000000000000000000..5431a67809e421c9bd230ba952cbb33087104e43 GIT binary patch literal 10274 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 EfA5o+=>Px# literal 0 HcmV?d00001 diff --git a/sc2/content/lbm/setupmenu.3.png b/sc2/content/lbm/setupmenu.3.png new file mode 100644 index 0000000000000000000000000000000000000000..97d93a07d4325be09a44648f868f9a098c01a0f6 GIT binary patch literal 15875 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 + 1) * 2)); home_y = t.baseline.y; t.align = ALIGN_CENTER; for (i = 0; i < self->numopts; i++) { - t.baseline.x = home_x + ((i % 3) * (SCREEN_WIDTH / 4)); + t.baseline.x = home_x + ((i % 3) * (SCREEN_WIDTH / (self->maxcolumns + 1))); t.baseline.y = home_y + (8 * (i / 3)); t.pStr = self->options[i].optname; if ((widget_focus == _self) && @@ -235,6 +235,35 @@ Widget_DrawButton (WIDGET *_self, int x, int y) (void) x; } +void +Widget_DrawLabel (WIDGET *_self, int x, int y) +{ + WIDGET_LABEL *self = (WIDGET_LABEL *)_self; + COLOR oldtext = SetContextForeGroundColor ( + BUILD_COLOR (MAKE_RGB15 (0x1F, 0x1F, 0x1F), 0x0F)); +; FONT oldfont = SetContextFont (StarConFont); + FONTEFFECT oldFontEffect = SetContextFontEffect (0, 0, 0); + TEXT t; + int i; + + t.baseline.x = 160; + t.baseline.y = y; + t.align = ALIGN_CENTER; + t.valign = VALIGN_BOTTOM; + t.CharCount = ~0; + + for (i = 0; i < self->line_count; i++) + { + t.pStr = self->lines[i]; + font_DrawText (&t); + t.baseline.y += 8; + } + SetContextFontEffect (oldFontEffect.type, oldFontEffect.from, oldFontEffect.to); + SetContextFont (oldfont); + SetContextForeGroundColor (oldtext); + (void) x; +} + int Widget_HeightChoice (WIDGET *_self) { @@ -255,7 +284,15 @@ Widget_HeightOneLine (WIDGET *_self) return 8; } -int Widget_WidthFullScreen (WIDGET *_self) +int +Widget_HeightLabel (WIDGET *_self) +{ + WIDGET_LABEL *self = (WIDGET_LABEL *)_self; + return self->line_count * 8; +} + +int +Widget_WidthFullScreen (WIDGET *_self) { (void)_self; return SCREEN_WIDTH; @@ -312,6 +349,14 @@ Widget_ReceiveFocusMenuScreen (WIDGET *_self, int event) return FALSE; } +int +Widget_ReceiveFocusRefuseFocus (WIDGET *self, int event) +{ + (void)self; + (void)event; + return FALSE; +} + int Widget_HandleEventIgnoreAll (WIDGET *self, int event) { diff --git a/sc2/src/sc2code/libs/graphics/widgets.h b/sc2/src/sc2code/libs/graphics/widgets.h index 2ef43ec31..99f089eef 100644 --- a/sc2/src/sc2code/libs/graphics/widgets.h +++ b/sc2/src/sc2code/libs/graphics/widgets.h @@ -69,6 +69,7 @@ typedef struct _widget_choice { int (*width)(struct _widget *self); const char *category; int numopts; + int maxcolumns; CHOICE_OPTION *options; int selected, highlighted; } WIDGET_CHOICE; @@ -84,6 +85,17 @@ typedef struct _widget_button { const char *tooltip[3]; } WIDGET_BUTTON; +typedef struct _widget_label { + struct _widget *parent; + int (*handleEvent)(struct _widget *self, int event); + int (*receiveFocus)(struct _widget *self, int event); + void (*draw)(struct _widget *self, int x, int y); + int (*height)(struct _widget *self); + int (*width)(struct _widget *self); + int line_count; + const char **lines; +} WIDGET_LABEL; + void DrawShadowedBox (PRECT r, COLOR bg, COLOR dark, COLOR medium); int Widget_Event (int event); @@ -93,6 +105,7 @@ int Widget_Event (int event); int Widget_ReceiveFocusMenuScreen (WIDGET *_self, int event); int Widget_ReceiveFocusChoice (WIDGET *_self, int event); int Widget_ReceiveFocusButton (WIDGET *_self, int event); +int Widget_ReceiveFocusRefuseFocus (WIDGET *_self, int event); int Widget_HandleEventMenuScreen (WIDGET *_self, int event); int Widget_HandleEventChoice (WIDGET *_self, int event); @@ -101,11 +114,33 @@ int Widget_HandleEventIgnoreAll (WIDGET *_self, int event); int Widget_HeightChoice (WIDGET *_self); int Widget_HeightFullScreen (WIDGET *_self); int Widget_HeightOneLine (WIDGET *_self); +int Widget_HeightLabel (WIDGET *_self); int Widget_WidthFullScreen (WIDGET *_self); void Widget_DrawMenuScreen (WIDGET *_self, int x, int y); void Widget_DrawChoice (WIDGET *_self, int x, int y); void Widget_DrawButton (WIDGET *_self, int x, int y); +void Widget_DrawLabel (WIDGET *_self, int x, int y); + +/* "Constructor" macros */ + +#define BUTTON_INIT(handler, name, ttip1, ttip2, ttip3) { \ + NULL, handler, Widget_ReceiveFocusButton, Widget_DrawButton, \ + Widget_HeightOneLine, Widget_WidthFullScreen, \ + (name), { (ttip1), (ttip2), (ttip3) } } + +#define CHOICE_PREFACE NULL, Widget_HandleEventChoice, \ + Widget_ReceiveFocusChoice, Widget_DrawChoice, \ + Widget_HeightChoice, Widget_WidthFullScreen + +#define LABEL_PREFACE NULL, Widget_HandleEventIgnoreAll, \ + Widget_ReceiveFocusRefuseFocus, Widget_DrawLabel, \ + Widget_HeightLabel, Widget_WidthFullScreen + +#define MENU_SCREEN_PREFACE NULL, Widget_HandleEventMenuScreen, \ + Widget_ReceiveFocusMenuScreen, \ + Widget_DrawMenuScreen, Widget_HeightFullScreen, \ + Widget_WidthFullScreen #endif /* _WIDGETS_H */ diff --git a/sc2/src/sc2code/setupmenu.c b/sc2/src/sc2code/setupmenu.c index 68d17d710..80c569533 100644 --- a/sc2/src/sc2code/setupmenu.c +++ b/sc2/src/sc2code/setupmenu.c @@ -41,18 +41,14 @@ typedef SETUP_MENU_STATE *PSETUP_MENU_STATE; static BOOLEAN DoSetupMenu (PSETUP_MENU_STATE pInputState); static BOOLEAN done; +static WIDGET *current, *next; -static int -quit_main_menu (WIDGET *self, int event) -{ - if (event == WIDGET_EVENT_SELECT) - { - done = TRUE; - return TRUE; - } - (void)self; - return FALSE; -} +static int quit_main_menu (WIDGET *self, int event); +static int quit_sub_menu (WIDGET *self, int event); +static int do_graphics (WIDGET *self, int event); +static int do_engine (WIDGET *self, int event); +static int do_resources (WIDGET *self, int event); +static int do_keyconfig (WIDGET *self, int event); static CHOICE_OPTION scaler_opts[] = { { "None", @@ -228,47 +224,190 @@ static CHOICE_OPTION bpp_opts[] = { #define RES_OPTS 2 #endif -#define NUM_OPTS 9 - -#define CHOICE_PREFACE NULL, Widget_HandleEventChoice, Widget_ReceiveFocusChoice, Widget_DrawChoice, Widget_HeightChoice, Widget_WidthFullScreen - static WIDGET_CHOICE cmdline_opts[] = { - { CHOICE_PREFACE, "Resolution", RES_OPTS, resdriver_opts, 0, 0}, - { CHOICE_PREFACE, "Color depth", 3, bpp_opts, 0, 0 }, - { CHOICE_PREFACE, "Scaler", 5, scaler_opts, 0, 0 }, - { CHOICE_PREFACE, "Scanlines", 2, scanlines_opts, 0, 0 }, - { CHOICE_PREFACE, "Menu Style", 2, menu_opts, 0, 0 }, - { CHOICE_PREFACE, "Font Style", 2, font_opts, 0, 0 }, - { CHOICE_PREFACE, "Scan Style", 2, scan_opts, 0, 0 }, - { CHOICE_PREFACE, "Scroll Style", 2, scroll_opts, 0, 0 }, - { CHOICE_PREFACE, "Subtitles", 2, subtitles_opts, 0, 0 } }; + { CHOICE_PREFACE, "Resolution", RES_OPTS, 3, resdriver_opts, 0, 0}, + { CHOICE_PREFACE, "Color depth", 3, 3, bpp_opts, 0, 0 }, + { CHOICE_PREFACE, "Scaler", 5, 3, scaler_opts, 0, 0 }, + { CHOICE_PREFACE, "Scanlines", 2, 3, scanlines_opts, 0, 0 }, + { CHOICE_PREFACE, "Menu Style", 2, 2, menu_opts, 0, 0 }, + { CHOICE_PREFACE, "Font Style", 2, 2, font_opts, 0, 0 }, + { CHOICE_PREFACE, "Scan Style", 2, 2, scan_opts, 0, 0 }, + { CHOICE_PREFACE, "Scroll Style", 2, 2, scroll_opts, 0, 0 }, + { CHOICE_PREFACE, "Subtitles", 2, 2, subtitles_opts, 0, 0 }, + { CHOICE_PREFACE, "Music Driver", 2, 3, music_opts, 0, 0 } }; -static WIDGET_BUTTON quit_button = { - NULL, quit_main_menu, Widget_ReceiveFocusButton, Widget_DrawButton, - Widget_HeightOneLine, Widget_WidthFullScreen, - "Quit Setup Menu", {"Return to the main menu.", "", ""} }; +static WIDGET_BUTTON quit_button = BUTTON_INIT (quit_main_menu, + "Quit Setup Menu", + "Return to the main menu.", "", ""); -static WIDGET *opt_widgets[] = { +static WIDGET_BUTTON prev_button = BUTTON_INIT (quit_sub_menu, + "Return to Main Menu", + "Save changes and return to main menu.", + "Changes will not be applied until", + "you quit setup entirely."); + +static WIDGET_BUTTON graphics_button = BUTTON_INIT (do_graphics, "Graphics Options", + "Configure display options for UQM.", + "Graphics drivers, resolution, and scalers.", ""); + +static WIDGET_BUTTON engine_button = BUTTON_INIT (do_engine, "PC/3do Compatibility Options", + "Configure behavior of UQM", + "to more closely match the PC or 3do behavior.", ""); + +static WIDGET_BUTTON resources_button = BUTTON_INIT (do_resources, "Resources Options", + "Configure UQM Addon Packs.", "", "Currently unimplemented."); + +static WIDGET_BUTTON keyconfig_button = BUTTON_INIT (do_keyconfig, "Configure Controls", + "Set up keyboard and joystick controls.", "", "Currently unimplemented."); + +static const char *incomplete_msg[] = { + "This part of the configuration", + "has not yet been implemented.", + "", + "Expect it in a future version." }; + +static WIDGET_LABEL incomplete_label = { + LABEL_PREFACE, + 4, incomplete_msg }; + +static WIDGET *main_widgets[] = { + (WIDGET *)(&graphics_button), + (WIDGET *)(&engine_button), + (WIDGET *)(&resources_button), + (WIDGET *)(&keyconfig_button), + (WIDGET *)(&quit_button) }; + +static WIDGET *graphics_widgets[] = { (WIDGET *)(&cmdline_opts[0]), (WIDGET *)(&cmdline_opts[1]), (WIDGET *)(&cmdline_opts[2]), (WIDGET *)(&cmdline_opts[3]), + (WIDGET *)(&prev_button) }; + +static WIDGET *engine_widgets[] = { (WIDGET *)(&cmdline_opts[4]), (WIDGET *)(&cmdline_opts[5]), (WIDGET *)(&cmdline_opts[6]), (WIDGET *)(&cmdline_opts[7]), (WIDGET *)(&cmdline_opts[8]), - (WIDGET *)(&quit_button) } ; + (WIDGET *)(&prev_button) }; +static WIDGET *incomplete_widgets[] = { + (WIDGET *)(&incomplete_label), + (WIDGET *)(&prev_button) }; + static WIDGET_MENU_SCREEN menu = { - NULL, Widget_HandleEventMenuScreen, Widget_ReceiveFocusMenuScreen, - Widget_DrawMenuScreen, Widget_HeightFullScreen, Widget_WidthFullScreen, + MENU_SCREEN_PREFACE, "Ur-Quan Masters Setup", "", { {0, 0}, NULL }, - 10, opt_widgets, + 5, main_widgets, + 0 }; + +static WIDGET_MENU_SCREEN graphics_menu = { + MENU_SCREEN_PREFACE, + "Ur-Quan Masters Setup", + "Graphics Options", + { {0, 0}, NULL }, + 5, graphics_widgets, 0 }; +static WIDGET_MENU_SCREEN engine_menu = { + MENU_SCREEN_PREFACE, + "Ur-Quan Masters Setup", + "3do/PC Options", + { {0, 0}, NULL }, + 6, engine_widgets, + 0 }; + +static WIDGET_MENU_SCREEN resources_menu = { + MENU_SCREEN_PREFACE, + "Ur-Quan Masters Setup", + "Addon Packs", + { {0, 0}, NULL }, + 2, incomplete_widgets, + 0 }; + +static WIDGET_MENU_SCREEN keyconfig_menu = { + MENU_SCREEN_PREFACE, + "Ur-Quan Masters Setup", + "Controls Setup", + { {0, 0}, NULL }, + 2, incomplete_widgets, + 0 }; + +static int +quit_main_menu (WIDGET *self, int event) +{ + if (event == WIDGET_EVENT_SELECT) + { + next = NULL; + return TRUE; + } + (void)self; + return FALSE; +} + +static int +quit_sub_menu (WIDGET *self, int event) +{ + if (event == WIDGET_EVENT_SELECT) + { + next = (WIDGET *)(&menu); + return TRUE; + } + (void)self; + return FALSE; +} + +static int +do_graphics (WIDGET *self, int event) +{ + if (event == WIDGET_EVENT_SELECT) + { + next = (WIDGET *)(&graphics_menu); + return TRUE; + } + (void)self; + return FALSE; +} + +static int +do_engine (WIDGET *self, int event) +{ + if (event == WIDGET_EVENT_SELECT) + { + next = (WIDGET *)(&engine_menu); + return TRUE; + } + (void)self; + return FALSE; +} + +static int +do_resources (WIDGET *self, int event) +{ + if (event == WIDGET_EVENT_SELECT) + { + next = (WIDGET *)(&resources_menu); + return TRUE; + } + (void)self; + return FALSE; +} + +static int +do_keyconfig (WIDGET *self, int event) +{ + if (event == WIDGET_EVENT_SELECT) + { + next = (WIDGET *)(&keyconfig_menu); + return TRUE; + } + (void)self; + return FALSE; +} + #define NUM_STEPS 20 #define X_STEP (SCREEN_WIDTH / NUM_STEPS) #define Y_STEP (SCREEN_HEIGHT / NUM_STEPS) @@ -322,20 +461,49 @@ DoSetupMenu (PSETUP_MENU_STATE pInputState) if (!pInputState->initialized) { SetDefaultMenuRepeatDelay (); - SetTransitionSource (NULL); pInputState->NextTime = GetTimeCounter (); SetDefaults (); - (*menu.receiveFocus) ((WIDGET *)(&menu), WIDGET_EVENT_DOWN); + + current = NULL; + next = (WIDGET *)(&menu); + + pInputState->initialized = TRUE; } if (!menu.bgStamp.frame) { + FRAME f = CaptureDrawable (LoadCelFile (MENU_BKG)); menu.bgStamp.origin.x = 0; menu.bgStamp.origin.y = 0; - menu.bgStamp.frame = CaptureDrawable (LoadCelFile (MENU_BKG)); + menu.bgStamp.frame = SetAbsFrameIndex (f, 0); + graphics_menu.bgStamp.origin.x = 0; + graphics_menu.bgStamp.origin.y = 0; + graphics_menu.bgStamp.frame = SetAbsFrameIndex (f, 1); + engine_menu.bgStamp.origin.x = 0; + engine_menu.bgStamp.origin.y = 0; + engine_menu.bgStamp.frame = SetAbsFrameIndex (f, 2); + resources_menu.bgStamp.origin.x = 0; + resources_menu.bgStamp.origin.y = 0; + resources_menu.bgStamp.frame = SetAbsFrameIndex (f, 3); + keyconfig_menu.bgStamp.origin.x = 0; + keyconfig_menu.bgStamp.origin.y = 0; + keyconfig_menu.bgStamp.frame = SetAbsFrameIndex (f, 1); + } + if (current != next) + { + SetTransitionSource (NULL); + (*next->receiveFocus) (next, WIDGET_EVENT_DOWN); } BatchGraphics (); - (*menu.draw)((WIDGET *)(&menu), 0, 0); + (*next->draw)(next, 0, 0); + + if (current != next) + { + ScreenTransition (3, NULL); + current = next; + } + + UnbatchGraphics (); if (PulsedInputState.key[KEY_MENU_UP]) { @@ -358,16 +526,10 @@ DoSetupMenu (PSETUP_MENU_STATE pInputState) Widget_Event (WIDGET_EVENT_SELECT); } - if (!pInputState->initialized) - { - pInputState->initialized = TRUE; - ScreenTransition (3, NULL); - } - UnbatchGraphics (); SleepThreadUntil (pInputState->NextTime + MENU_FRAME_RATE); pInputState->NextTime = GetTimeCounter (); return !((GLOBAL (CurrentActivity) & CHECK_ABORT) || - PulsedInputState.key[KEY_MENU_CANCEL] || done); + PulsedInputState.key[KEY_MENU_CANCEL] || (next == NULL)); } void