From 828d753668bb9df8d59d21f5b7e90d841476a3ea Mon Sep 17 00:00:00 2001 From: zicodxx <> Date: Sat, 13 Dec 2008 12:58:57 +0000 Subject: [PATCH] Seperated help screens for game, netgame and demo; Also show them in Controls menu; Small Menu UI fix for ScrollOffset when calling menus in a scrolled area of a menu --- CHANGELOG.txt | 1 + main/game.c | 74 ++++++++++++++++++++++++++++++++------------------ main/game.h | 4 ++- main/menu.c | 17 ++++++++++-- main/newmenu.c | 8 ++++++ 5 files changed, 74 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 9834c763a..a9fe4a1cc 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -3,6 +3,7 @@ D1X-Rebirth Changelog 20081213 -------- main/network.c: Fix short_frameinfo sending code for big endian processors +main/game.c, main/game.h, main/menu.c: Seperated help screens for game, netgame and demo; Also show them in Controls menu; Small Menu UI fix for ScrollOffset when calling menus in a scrolled area of a menu 20081212 -------- diff --git a/main/game.c b/main/game.c index 1d28d4a61..3b57f03c3 100644 --- a/main/game.c +++ b/main/game.c @@ -1343,10 +1343,11 @@ int do_game_pause() void show_help() { int nitems = 0; - newmenu_item m[28]; - + newmenu_item m[25]; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = TXT_HELP_ESC; m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "SHIFT-ESC\t SHOW GAME LOG"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "F1\t THIS SCREEN"; m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = TXT_HELP_F2; #if !(defined(__APPLE__) || defined(macintosh)) m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "Alt-F2/F3\t SAVE/LOAD GAME"; @@ -1373,13 +1374,6 @@ void show_help() m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "\x85-Up/Down\t Play/Pause " EXT_MUSIC_TEXT; m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "\x85-Left/Right\t Previous/Next Song"; #endif - m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = ""; - m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "MULTIPLAYER:"; - m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "ALT-F4\t SHOW RETICLE NAMES"; - m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "F7\t TOGGLE KILL LIST"; - m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "F8\t SEND MESSAGE"; - m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "(SHIFT-)F8 to F12\t (DEFINE)SEND MACRO"; - m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "PAUSE\t SHOW NETGAME INFORMATION"; #if (defined(__APPLE__) || defined(macintosh)) m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = ""; m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "(Use \x85-# for F#. e.g. \x85-1 for F1)"; @@ -1387,28 +1381,54 @@ void show_help() newmenu_dotiny( NULL, TXT_KEYS, nitems, m, NULL ); } +void show_netgame_help() +{ + int nitems = 0; + newmenu_item m[12]; + + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "F1\t THIS SCREEN"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "ALT-F4\t SHOW RETICLE NAMES"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "F7\t TOGGLE KILL LIST"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "F8\t SEND MESSAGE"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "(SHIFT-)F8 to F12\t (DEFINE)SEND MACRO"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "PAUSE\t SHOW NETGAME INFORMATION"; + +#if (defined(__APPLE__) || defined(macintosh)) + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = ""; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "(Use \x85-# for F#. e.g. \x85-1 for F1)"; +#endif + + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = ""; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "MULTIPLAYER MESSAGE COMMANDS:"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "kick: (*)\t KICK PLAYER (*) FROM GAME (Host-only)"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "KillReactor\t BLOW UP THE MINE (Host-only)"; + + newmenu_dotiny( NULL, TXT_KEYS, nitems, m, NULL ); +} + void show_newdemo_help() { - newmenu_item m[14]; - int mc = 0; + newmenu_item m[15]; + int nitems = 0; - m[mc].type = NM_TYPE_TEXT; m[mc].text = "ESC\t QUIT DEMO PLAYBACK"; mc++; - m[mc].type = NM_TYPE_TEXT; m[mc].text = TXT_HELP_F2; mc++; - m[mc].type = NM_TYPE_TEXT; m[mc].text = "F3\t SWITCH COCKPIT MODES"; mc++; - m[mc].type = NM_TYPE_TEXT; m[mc].text = "F4\t TOGGLE PERCENTAGE DISPLAY"; mc++; - m[mc].type = NM_TYPE_TEXT; m[mc].text = "UP\t PLAY"; mc++; - m[mc].type = NM_TYPE_TEXT; m[mc].text = "DOWN\t PAUSE"; mc++; - m[mc].type = NM_TYPE_TEXT; m[mc].text = "RIGHT\t ONE FRAME FORWARD"; mc++; - m[mc].type = NM_TYPE_TEXT; m[mc].text = "LEFT\t ONE FRAME BACKWARD"; mc++; - m[mc].type = NM_TYPE_TEXT; m[mc].text = "SHIFT-RIGHT\t FAST FORWARD"; mc++; - m[mc].type = NM_TYPE_TEXT; m[mc].text = "SHIFT-LEFT\t FAST BACKWARD"; mc++; - m[mc].type = NM_TYPE_TEXT; m[mc].text = "CTRL-RIGHT\t JUMP TO END"; mc++; - m[mc].type = NM_TYPE_TEXT; m[mc].text = "CTRL-LEFT\t JUMP TO START"; mc++; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "ESC\t QUIT DEMO PLAYBACK"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "F1\t THIS SCREEN"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = TXT_HELP_F2; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "F3\t SWITCH COCKPIT MODES"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "F4\t TOGGLE PERCENTAGE DISPLAY"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "UP\t PLAY"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "DOWN\t PAUSE"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "RIGHT\t ONE FRAME FORWARD"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "LEFT\t ONE FRAME BACKWARD"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "SHIFT-RIGHT\t FAST FORWARD"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "SHIFT-LEFT\t FAST BACKWARD"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "CTRL-RIGHT\t JUMP TO END"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "CTRL-LEFT\t JUMP TO START"; #if (defined(__APPLE__) || defined(macintosh)) - m[mc].type = NM_TYPE_TEXT; m[mc].text = ""; mc++; - m[mc].type = NM_TYPE_TEXT; m[mc].text = "(Use \x85-# for F#. e.g. \x85-1 for F1)"; mc++; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = ""; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "(Use \x85-# for F#. e.g. \x85-1 for F1)"; #endif - newmenu_dotiny( NULL, "DEMO PLAYBACK CONTROLS", mc, m, NULL ); + newmenu_dotiny( NULL, "DEMO PLAYBACK CONTROLS", nitems, m, NULL ); } //temp function until Matt cleans up game sequencing @@ -2159,7 +2179,7 @@ void HandleGameKey(int key) } break; MAC(case KEY_COMMAND+KEY_1:) - case KEY_F1: show_help(); break; + case KEY_F1: if (Game_mode & GM_MULTI) show_netgame_help(); else show_help(); break; MAC(case KEY_COMMAND+KEY_2:) case KEY_F2: Config_menu_flag = 1; break; MAC(case KEY_COMMAND+KEY_3:) diff --git a/main/game.h b/main/game.h index a02707e34..9df84070b 100644 --- a/main/game.h +++ b/main/game.h @@ -198,7 +198,9 @@ void reset_palette_add (void); void palette_restore (void); //put up the help message -void show_help (); +void show_help(); +void show_netgame_help(); +void show_newdemo_help(); //show a message in a nice little box void show_boxed_message (char *msg, int RenderFlag); diff --git a/main/menu.c b/main/menu.c index 850b387ea..3cdbe5da7 100644 --- a/main/menu.c +++ b/main/menu.c @@ -577,9 +577,9 @@ void input_menuset(int nitems, newmenu_item * items, int *last_key, int citem ) void input_config() { - newmenu_item m[17]; + newmenu_item m[21]; int i, i1 = 5, j; - int nitems = 17; + int nitems = 21; m[0].type = NM_TYPE_RADIO; m[0].text = "KEYBOARD"; m[0].value = 0; m[0].group = 0; m[1].type = NM_TYPE_RADIO; m[1].text = "JOYSTICK"; m[1].value = 0; m[1].group = 0; @@ -598,6 +598,10 @@ void input_config() m[14].type = NM_TYPE_TEXT; m[14].text = "Mouse"; m[15].type = NM_TYPE_SLIDER; m[15].text="X Sensitivity"; m[15].value=PlayerCfg.MouseSensitivityX; m[15].min_value = 0; m[15].max_value = 16; m[16].type = NM_TYPE_SLIDER; m[16].text="Y Sensitivity"; m[16].value=PlayerCfg.MouseSensitivityY; m[16].min_value = 0; m[16].max_value = 16; + m[17].type = NM_TYPE_TEXT; m[17].text = ""; + m[18].type = NM_TYPE_MENU; m[18].text = "GAME SYSTEM KEYS"; + m[19].type = NM_TYPE_MENU; m[19].text = "NETGAME SYSTEM KEYS"; + m[20].type = NM_TYPE_MENU; m[20].text = "DEMO SYSTEM KEYS"; do { @@ -634,6 +638,15 @@ void input_config() case 7: kconfig(4, "WEAPON KEYS"); break; + case 18: + show_help(); + break; + case 19: + show_netgame_help(); + break; + case 20: + show_newdemo_help(); + break; } } while (i1>-1); diff --git a/main/newmenu.c b/main/newmenu.c index 179d21320..727c6d2e6 100644 --- a/main/newmenu.c +++ b/main/newmenu.c @@ -664,6 +664,14 @@ int newmenu_do3_real( char * title, char * subtitle, int nitems, newmenu_item * IsScrollBox=1; h=((MaxOnMenu+(subtitle?1:0))*LINE_SPACING); MaxDisplayable=MaxOnMenu; + + // if our last citem was > MaxOnMenu, make sure we re-scroll when we call this menu again + if (citem > MaxOnMenu-4) + { + ScrollOffset = citem - (MaxOnMenu-4); + if (ScrollOffset + MaxOnMenu > nitems) + ScrollOffset = nitems - MaxOnMenu; + } } else {