From 727ca143b590d910cbf56c8662d6ff1474ca9ce6 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Sat, 10 Nov 2018 13:28:10 -0500 Subject: [PATCH 01/12] Branch G_Controldefault into FPS and PLATFORM --- src/g_input.c | 94 ++++++++++++++++++++++++++++++++------------------- src/g_input.h | 6 +++- src/m_misc.c | 4 +-- 3 files changed, 66 insertions(+), 38 deletions(-) diff --git a/src/g_input.c b/src/g_input.c index 67aaf4179..cb27fb345 100644 --- a/src/g_input.c +++ b/src/g_input.c @@ -611,42 +611,66 @@ INT32 G_KeyStringtoNum(const char *keystr) return 0; } -void G_Controldefault(void) +void G_Controldefault(INT32 scheme, boolean setcommon) { - gamecontrol[gc_forward ][0] = 'w'; - gamecontrol[gc_backward ][0] = 's'; - gamecontrol[gc_strafeleft ][0] = 'a'; - gamecontrol[gc_straferight][0] = 'd'; - gamecontrol[gc_turnleft ][0] = KEY_LEFTARROW; - gamecontrol[gc_turnright ][0] = KEY_RIGHTARROW; - gamecontrol[gc_weaponnext ][0] = 'e'; - gamecontrol[gc_weaponprev ][0] = 'q'; - gamecontrol[gc_wepslot1 ][0] = '1'; - gamecontrol[gc_wepslot2 ][0] = '2'; - gamecontrol[gc_wepslot3 ][0] = '3'; - gamecontrol[gc_wepslot4 ][0] = '4'; - gamecontrol[gc_wepslot5 ][0] = '5'; - gamecontrol[gc_wepslot6 ][0] = '6'; - gamecontrol[gc_wepslot7 ][0] = '7'; - gamecontrol[gc_wepslot8 ][0] = '8'; - gamecontrol[gc_wepslot9 ][0] = '9'; - gamecontrol[gc_wepslot10 ][0] = '0'; - gamecontrol[gc_fire ][0] = KEY_RCTRL; - gamecontrol[gc_fire ][1] = KEY_MOUSE1+0; - gamecontrol[gc_firenormal ][0] = 'c'; - gamecontrol[gc_tossflag ][0] = '\''; - gamecontrol[gc_use ][0] = KEY_LSHIFT; - gamecontrol[gc_camtoggle ][0] = 'v'; - gamecontrol[gc_camreset ][0] = 'r'; - gamecontrol[gc_lookup ][0] = KEY_UPARROW; - gamecontrol[gc_lookdown ][0] = KEY_DOWNARROW; - gamecontrol[gc_centerview ][0] = KEY_END; - gamecontrol[gc_talkkey ][0] = 't'; - gamecontrol[gc_teamkey ][0] = 'y'; - gamecontrol[gc_scores ][0] = KEY_TAB; - gamecontrol[gc_jump ][0] = KEY_SPACE; - gamecontrol[gc_console ][0] = KEY_CONSOLE; - gamecontrol[gc_pause ][0] = KEY_PAUSE; + if (scheme == CONTROL_DEFAULT_PLATFORM) + { + gamecontrol[gc_forward ][0] = KEY_UPARROW; + gamecontrol[gc_backward ][0] = KEY_DOWNARROW; + gamecontrol[gc_strafeleft ][0] = 'a'; + gamecontrol[gc_straferight][0] = 'd'; + gamecontrol[gc_lookup ][0] = KEY_PGUP; + gamecontrol[gc_lookdown ][0] = KEY_PGDN; + gamecontrol[gc_turnleft ][0] = KEY_LEFTARROW; + gamecontrol[gc_turnright ][0] = KEY_RIGHTARROW; + gamecontrol[gc_centerview ][0] = KEY_END; + gamecontrol[gc_jump ][0] = KEY_SPACE; + gamecontrol[gc_use ][0] = KEY_LSHIFT; + gamecontrol[gc_fire ][0] = 's'; + gamecontrol[gc_fire ][1] = KEY_MOUSE1+0; + gamecontrol[gc_firenormal ][0] = 'w'; + } + else // if (scheme == CONTROL_DEFAULT_FPS) + { + gamecontrol[gc_forward ][0] = 'w'; + gamecontrol[gc_backward ][0] = 's'; + gamecontrol[gc_strafeleft ][0] = 'a'; + gamecontrol[gc_straferight][0] = 'd'; + gamecontrol[gc_lookup ][0] = KEY_UPARROW; + gamecontrol[gc_lookdown ][0] = KEY_DOWNARROW; + gamecontrol[gc_turnleft ][0] = KEY_LEFTARROW; + gamecontrol[gc_turnright ][0] = KEY_RIGHTARROW; + gamecontrol[gc_centerview ][0] = KEY_END; + gamecontrol[gc_jump ][0] = KEY_SPACE; + gamecontrol[gc_use ][0] = KEY_LSHIFT; + gamecontrol[gc_fire ][0] = KEY_RCTRL; + gamecontrol[gc_fire ][1] = KEY_MOUSE1+0; + gamecontrol[gc_firenormal ][0] = 'c'; + } + + if (setcommon) + { + gamecontrol[gc_weaponnext ][0] = 'e'; + gamecontrol[gc_weaponprev ][0] = 'q'; + gamecontrol[gc_wepslot1 ][0] = '1'; + gamecontrol[gc_wepslot2 ][0] = '2'; + gamecontrol[gc_wepslot3 ][0] = '3'; + gamecontrol[gc_wepslot4 ][0] = '4'; + gamecontrol[gc_wepslot5 ][0] = '5'; + gamecontrol[gc_wepslot6 ][0] = '6'; + gamecontrol[gc_wepslot7 ][0] = '7'; + gamecontrol[gc_wepslot8 ][0] = '8'; + gamecontrol[gc_wepslot9 ][0] = '9'; + gamecontrol[gc_wepslot10 ][0] = '0'; + gamecontrol[gc_tossflag ][0] = '\''; + gamecontrol[gc_camtoggle ][0] = 'v'; + gamecontrol[gc_camreset ][0] = 'r'; + gamecontrol[gc_talkkey ][0] = 't'; + gamecontrol[gc_teamkey ][0] = 'y'; + gamecontrol[gc_scores ][0] = KEY_TAB; + gamecontrol[gc_console ][0] = KEY_CONSOLE; + gamecontrol[gc_pause ][0] = KEY_PAUSE; + } } void G_SaveKeySetting(FILE *f) diff --git a/src/g_input.h b/src/g_input.h index 2a447c683..ea952a8ea 100644 --- a/src/g_input.h +++ b/src/g_input.h @@ -27,6 +27,10 @@ #define JOYHATS 4 // 4 hats #define JOYAXISSET 4 // 4 Sets of 2 axises +#define CONTROL_DEFAULT_FPS 0 +#define CONTROL_DEFAULT_PLATFORM 1 +#define CONTROL_DEFAULT_CUSTOM 2 + // // mouse and joystick buttons are handled as 'virtual' keys // @@ -133,7 +137,7 @@ INT32 G_KeyStringtoNum(const char *keystr); void G_ClearControlKeys(INT32 (*setupcontrols)[2], INT32 control); void Command_Setcontrol_f(void); void Command_Setcontrol2_f(void); -void G_Controldefault(void); +void G_Controldefault(INT32 scheme); void G_SaveKeySetting(FILE *f); void G_CheckDoubleUsage(INT32 keynum); diff --git a/src/m_misc.c b/src/m_misc.c index 50b6d7a05..cfd788d87 100644 --- a/src/m_misc.c +++ b/src/m_misc.c @@ -58,7 +58,7 @@ typedef off_t off64_t; #if defined(__MINGW32__) && ((__GNUC__ > 7) || (__GNUC__ == 6 && __GNUC_MINOR__ >= 3)) #define PRIdS "u" -#elif defined (_WIN32) +#elif defined (_WIN32) #define PRIdS "Iu" #elif defined (DJGPP) #define PRIdS "u" @@ -475,7 +475,7 @@ void M_FirstLoadConfig(void) } // load default control - G_Controldefault(); + G_Controldefault(CONTROL_DEFAULT_FPS, true); // load config, make sure those commands doesnt require the screen... COM_BufInsertText(va("exec \"%s\"\n", configfile)); From 775b34e3f23a1ca864ddde9e9303212bc5814709 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Sat, 10 Nov 2018 17:06:35 -0500 Subject: [PATCH 02/12] Made gamecontrol tables more portable * G_DefineDefaultControls * G_GetControlScheme * G_CopyControls * G_SaveKeySetting * gamecontrolschemes_e --- src/g_input.c | 167 +++++++++++++++++++++++++++++++------------------- src/g_input.h | 19 ++++-- src/m_misc.c | 5 +- 3 files changed, 120 insertions(+), 71 deletions(-) diff --git a/src/g_input.c b/src/g_input.c index cb27fb345..b1511fcd9 100644 --- a/src/g_input.c +++ b/src/g_input.c @@ -45,6 +45,7 @@ UINT8 gamekeydown[NUMINPUTS]; // two key codes (or virtual key) per game control INT32 gamecontrol[num_gamecontrols][2]; INT32 gamecontrolbis[num_gamecontrols][2]; // secondary splitscreen player +INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // default control storage, use 0 (gcs_custom) for memory retention typedef struct { @@ -611,79 +612,119 @@ INT32 G_KeyStringtoNum(const char *keystr) return 0; } -void G_Controldefault(INT32 scheme, boolean setcommon) +void G_DefineDefaultControls(void) { - if (scheme == CONTROL_DEFAULT_PLATFORM) - { - gamecontrol[gc_forward ][0] = KEY_UPARROW; - gamecontrol[gc_backward ][0] = KEY_DOWNARROW; - gamecontrol[gc_strafeleft ][0] = 'a'; - gamecontrol[gc_straferight][0] = 'd'; - gamecontrol[gc_lookup ][0] = KEY_PGUP; - gamecontrol[gc_lookdown ][0] = KEY_PGDN; - gamecontrol[gc_turnleft ][0] = KEY_LEFTARROW; - gamecontrol[gc_turnright ][0] = KEY_RIGHTARROW; - gamecontrol[gc_centerview ][0] = KEY_END; - gamecontrol[gc_jump ][0] = KEY_SPACE; - gamecontrol[gc_use ][0] = KEY_LSHIFT; - gamecontrol[gc_fire ][0] = 's'; - gamecontrol[gc_fire ][1] = KEY_MOUSE1+0; - gamecontrol[gc_firenormal ][0] = 'w'; - } - else // if (scheme == CONTROL_DEFAULT_FPS) - { - gamecontrol[gc_forward ][0] = 'w'; - gamecontrol[gc_backward ][0] = 's'; - gamecontrol[gc_strafeleft ][0] = 'a'; - gamecontrol[gc_straferight][0] = 'd'; - gamecontrol[gc_lookup ][0] = KEY_UPARROW; - gamecontrol[gc_lookdown ][0] = KEY_DOWNARROW; - gamecontrol[gc_turnleft ][0] = KEY_LEFTARROW; - gamecontrol[gc_turnright ][0] = KEY_RIGHTARROW; - gamecontrol[gc_centerview ][0] = KEY_END; - gamecontrol[gc_jump ][0] = KEY_SPACE; - gamecontrol[gc_use ][0] = KEY_LSHIFT; - gamecontrol[gc_fire ][0] = KEY_RCTRL; - gamecontrol[gc_fire ][1] = KEY_MOUSE1+0; - gamecontrol[gc_firenormal ][0] = 'c'; - } + INT32 i; - if (setcommon) + // FPS game controls (WASD) + gamecontroldefault[gcs_fps][gc_forward ][0] = 'w'; + gamecontroldefault[gcs_fps][gc_backward ][0] = 's'; + gamecontroldefault[gcs_fps][gc_strafeleft ][0] = 'a'; + gamecontroldefault[gcs_fps][gc_straferight][0] = 'd'; + gamecontroldefault[gcs_fps][gc_lookup ][0] = KEY_UPARROW; + gamecontroldefault[gcs_fps][gc_lookdown ][0] = KEY_DOWNARROW; + gamecontroldefault[gcs_fps][gc_turnleft ][0] = KEY_LEFTARROW; + gamecontroldefault[gcs_fps][gc_turnright ][0] = KEY_RIGHTARROW; + gamecontroldefault[gcs_fps][gc_centerview ][0] = KEY_END; + gamecontroldefault[gcs_fps][gc_jump ][0] = KEY_SPACE; + gamecontroldefault[gcs_fps][gc_use ][0] = KEY_LSHIFT; + gamecontroldefault[gcs_fps][gc_fire ][0] = KEY_RCTRL; + gamecontroldefault[gcs_fps][gc_fire ][1] = KEY_MOUSE1+0; + gamecontroldefault[gcs_fps][gc_firenormal ][0] = 'c'; + + // Platform game controls (arrow keys) + // gamecontroldefault[gcs_platform][gc_forward ][0] = KEY_UPARROW; + // gamecontroldefault[gcs_platform][gc_backward ][0] = KEY_DOWNARROW; + // gamecontroldefault[gcs_platform][gc_strafeleft ][0] = 'a'; + // gamecontroldefault[gcs_platform][gc_straferight][0] = 'd'; + // gamecontroldefault[gcs_platform][gc_lookup ][0] = KEY_PGUP; + // gamecontroldefault[gcs_platform][gc_lookdown ][0] = KEY_PGDN; + // gamecontroldefault[gcs_platform][gc_turnleft ][0] = KEY_LEFTARROW; + // gamecontroldefault[gcs_platform][gc_turnright ][0] = KEY_RIGHTARROW; + // gamecontroldefault[gcs_platform][gc_centerview ][0] = KEY_END; + // gamecontroldefault[gcs_platform][gc_jump ][0] = KEY_SPACE; + // gamecontroldefault[gcs_platform][gc_use ][0] = KEY_LSHIFT; + // gamecontroldefault[gcs_platform][gc_fire ][0] = 's'; + // gamecontroldefault[gcs_platform][gc_fire ][1] = KEY_MOUSE1+0; + // gamecontroldefault[gcs_platform][gc_firenormal ][0] = 'w'; + + for (i = 1; i < num_gamecontrolschemes; i++) // skip gcs_custom (0) { - gamecontrol[gc_weaponnext ][0] = 'e'; - gamecontrol[gc_weaponprev ][0] = 'q'; - gamecontrol[gc_wepslot1 ][0] = '1'; - gamecontrol[gc_wepslot2 ][0] = '2'; - gamecontrol[gc_wepslot3 ][0] = '3'; - gamecontrol[gc_wepslot4 ][0] = '4'; - gamecontrol[gc_wepslot5 ][0] = '5'; - gamecontrol[gc_wepslot6 ][0] = '6'; - gamecontrol[gc_wepslot7 ][0] = '7'; - gamecontrol[gc_wepslot8 ][0] = '8'; - gamecontrol[gc_wepslot9 ][0] = '9'; - gamecontrol[gc_wepslot10 ][0] = '0'; - gamecontrol[gc_tossflag ][0] = '\''; - gamecontrol[gc_camtoggle ][0] = 'v'; - gamecontrol[gc_camreset ][0] = 'r'; - gamecontrol[gc_talkkey ][0] = 't'; - gamecontrol[gc_teamkey ][0] = 'y'; - gamecontrol[gc_scores ][0] = KEY_TAB; - gamecontrol[gc_console ][0] = KEY_CONSOLE; - gamecontrol[gc_pause ][0] = KEY_PAUSE; + gamecontroldefault[i][gc_weaponnext ][0] = 'e'; + gamecontroldefault[i][gc_weaponprev ][0] = 'q'; + gamecontroldefault[i][gc_wepslot1 ][0] = '1'; + gamecontroldefault[i][gc_wepslot2 ][0] = '2'; + gamecontroldefault[i][gc_wepslot3 ][0] = '3'; + gamecontroldefault[i][gc_wepslot4 ][0] = '4'; + gamecontroldefault[i][gc_wepslot5 ][0] = '5'; + gamecontroldefault[i][gc_wepslot6 ][0] = '6'; + gamecontroldefault[i][gc_wepslot7 ][0] = '7'; + gamecontroldefault[i][gc_wepslot8 ][0] = '8'; + gamecontroldefault[i][gc_wepslot9 ][0] = '9'; + gamecontroldefault[i][gc_wepslot10 ][0] = '0'; + gamecontroldefault[i][gc_tossflag ][0] = '\''; + gamecontroldefault[i][gc_camtoggle ][0] = 'v'; + gamecontroldefault[i][gc_camreset ][0] = 'r'; + gamecontroldefault[i][gc_talkkey ][0] = 't'; + gamecontroldefault[i][gc_teamkey ][0] = 'y'; + gamecontroldefault[i][gc_scores ][0] = KEY_TAB; + gamecontroldefault[i][gc_console ][0] = KEY_CONSOLE; + gamecontroldefault[i][gc_pause ][0] = KEY_PAUSE; } } -void G_SaveKeySetting(FILE *f) +INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], boolean movementonly) +{ + INT32 i, j, gc; + boolean skipscheme; + + gamecontrols_e movement[] = { + gc_forward, gc_backward, gc_strafeleft, gc_straferight, + gc_lookup, gc_lookdown, gc_turnleft, gc_turnright, gc_centerview, + gc_jump, gc_use + // , gc_fire, gc_firenormal + }; + + for (i = 1; i < num_gamecontrolschemes; i++) // skip gcs_custom (0) + { + skipscheme = false; + for (j = 0; j < (movementonly ? sizeof(movement) : num_gamecontrols); j++) + { + gc = (movementonly) ? movement[j] : j; + if (fromcontrols[gc][0] != gamecontroldefault[i][gc][0] && fromcontrols[gc][1] != gamecontroldefault[i][gc][1]) + { + skipscheme = true; + break; + } + } + if (!skipscheme) + return i; + } + + return gcs_custom; +} + +void G_CopyControls(INT32 (*setupcontrols)[2], INT32 (*fromcontrols)[2]) +{ + INT32 i; + for (i = 0; i < num_gamecontrols; i++) + { + setupcontrols[i][0] = fromcontrols[i][0]; + setupcontrols[i][1] = fromcontrols[i][1]; + } +} + +void G_SaveKeySetting(FILE *f, INT32 (*fromcontrols)[2], INT32 (*fromcontrolsbis)[2]) { INT32 i; for (i = 1; i < num_gamecontrols; i++) { fprintf(f, "setcontrol \"%s\" \"%s\"", gamecontrolname[i], - G_KeynumToString(gamecontrol[i][0])); + G_KeynumToString(fromcontrols[i][0])); - if (gamecontrol[i][1]) - fprintf(f, " \"%s\"\n", G_KeynumToString(gamecontrol[i][1])); + if (fromcontrols[i][1]) + fprintf(f, " \"%s\"\n", G_KeynumToString(fromcontrols[i][1])); else fprintf(f, "\n"); } @@ -691,10 +732,10 @@ void G_SaveKeySetting(FILE *f) for (i = 1; i < num_gamecontrols; i++) { fprintf(f, "setcontrol2 \"%s\" \"%s\"", gamecontrolname[i], - G_KeynumToString(gamecontrolbis[i][0])); + G_KeynumToString(fromcontrolsbis[i][0])); - if (gamecontrolbis[i][1]) - fprintf(f, " \"%s\"\n", G_KeynumToString(gamecontrolbis[i][1])); + if (fromcontrolsbis[i][1]) + fprintf(f, " \"%s\"\n", G_KeynumToString(fromcontrolsbis[i][1])); else fprintf(f, "\n"); } diff --git a/src/g_input.h b/src/g_input.h index ea952a8ea..af52bbd65 100644 --- a/src/g_input.h +++ b/src/g_input.h @@ -27,10 +27,6 @@ #define JOYHATS 4 // 4 hats #define JOYAXISSET 4 // 4 Sets of 2 axises -#define CONTROL_DEFAULT_FPS 0 -#define CONTROL_DEFAULT_PLATFORM 1 -#define CONTROL_DEFAULT_CUSTOM 2 - // // mouse and joystick buttons are handled as 'virtual' keys // @@ -103,6 +99,14 @@ typedef enum num_gamecontrols } gamecontrols_e; +typedef enum +{ + gcs_custom, + gcs_fps, + //gcs_platform, + num_gamecontrolschemes +} gamecontrolschemes_e; + // mouse values are used once extern consvar_t cv_mousesens, cv_mouseysens; extern consvar_t cv_mousesens2, cv_mouseysens2; @@ -120,6 +124,7 @@ extern UINT8 gamekeydown[NUMINPUTS]; // two key codes (or virtual key) per game control extern INT32 gamecontrol[num_gamecontrols][2]; extern INT32 gamecontrolbis[num_gamecontrols][2]; // secondary splitscreen player +extern INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // default control storage, use 0 (gcs_custom) for memory retention #define PLAYER1INPUTDOWN(gc) (gamekeydown[gamecontrol[gc][0]] || gamekeydown[gamecontrol[gc][1]]) #define PLAYER2INPUTDOWN(gc) (gamekeydown[gamecontrolbis[gc][0]] || gamekeydown[gamecontrolbis[gc][1]]) @@ -137,8 +142,10 @@ INT32 G_KeyStringtoNum(const char *keystr); void G_ClearControlKeys(INT32 (*setupcontrols)[2], INT32 control); void Command_Setcontrol_f(void); void Command_Setcontrol2_f(void); -void G_Controldefault(INT32 scheme); -void G_SaveKeySetting(FILE *f); +void G_DefineDefaultControls(void); +INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], boolean movementonly); +void G_CopyControls(INT32 (*setupcontrols)[2], INT32 (*fromcontrols)[2]); +void G_SaveKeySetting(FILE *f, INT32 (*fromcontrols)[2], INT32 (*fromcontrolsbis)[2]); void G_CheckDoubleUsage(INT32 keynum); #endif diff --git a/src/m_misc.c b/src/m_misc.c index cfd788d87..8211239ef 100644 --- a/src/m_misc.c +++ b/src/m_misc.c @@ -475,7 +475,8 @@ void M_FirstLoadConfig(void) } // load default control - G_Controldefault(CONTROL_DEFAULT_FPS, true); + G_DefineDefaultControls(); + G_CopyControls(gamecontrol, gamecontroldefault[gcs_fps]); // load config, make sure those commands doesnt require the screen... COM_BufInsertText(va("exec \"%s\"\n", configfile)); @@ -539,7 +540,7 @@ void M_SaveConfig(const char *filename) // FIXME: save key aliases if ever implemented.. CV_SaveVariables(f); - if (!dedicated) G_SaveKeySetting(f); + if (!dedicated) G_SaveKeySetting(f, gamecontrol, gamecontrolbis); fclose(f); } From 9f1c40f8812e7e66215d41ae4129d45a5fca3381 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Sun, 11 Nov 2018 08:19:44 -0500 Subject: [PATCH 03/12] G_CopyControls and G_GetControlScheme adjustment (take input list of gc's to check) --- src/g_input.c | 38 ++++++++++++++++++++++---------------- src/g_input.h | 7 +++++-- src/m_misc.c | 10 ++++++++-- 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/src/g_input.c b/src/g_input.c index b1511fcd9..77239621c 100644 --- a/src/g_input.c +++ b/src/g_input.c @@ -47,6 +47,14 @@ INT32 gamecontrol[num_gamecontrols][2]; INT32 gamecontrolbis[num_gamecontrols][2]; // secondary splitscreen player INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // default control storage, use 0 (gcs_custom) for memory retention +// lists of GC codes for selective operation +INT32 gcmovement[num_gcmovement] = { + gc_forward, gc_backward, gc_strafeleft, gc_straferight, + gc_lookup, gc_lookdown, gc_turnleft, gc_turnright, gc_centerview, + gc_jump, gc_use + // , gc_fire, gc_firenormal +}; + typedef struct { UINT8 time; @@ -673,25 +681,21 @@ void G_DefineDefaultControls(void) } } -INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], boolean movementonly) +INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], INT32 gclist[], INT32 gclen) { INT32 i, j, gc; boolean skipscheme; - gamecontrols_e movement[] = { - gc_forward, gc_backward, gc_strafeleft, gc_straferight, - gc_lookup, gc_lookdown, gc_turnleft, gc_turnright, gc_centerview, - gc_jump, gc_use - // , gc_fire, gc_firenormal - }; - for (i = 1; i < num_gamecontrolschemes; i++) // skip gcs_custom (0) { skipscheme = false; - for (j = 0; j < (movementonly ? sizeof(movement) : num_gamecontrols); j++) + for (j = 0; j < (gclist && gclen ? gclen : num_gamecontrols); j++) { - gc = (movementonly) ? movement[j] : j; - if (fromcontrols[gc][0] != gamecontroldefault[i][gc][0] && fromcontrols[gc][1] != gamecontroldefault[i][gc][1]) + gc = (gclist && gclen) ? gclist[j] : j; + if (((fromcontrols[gc][0] && gamecontroldefault[i][gc][0]) ? fromcontrols[gc][0] != gamecontroldefault[i][gc][0] : true) && + ((fromcontrols[gc][0] && gamecontroldefault[i][gc][1]) ? fromcontrols[gc][0] != gamecontroldefault[i][gc][1] : true) && + ((fromcontrols[gc][1] && gamecontroldefault[i][gc][0]) ? fromcontrols[gc][1] != gamecontroldefault[i][gc][0] : true) && + ((fromcontrols[gc][1] && gamecontroldefault[i][gc][1]) ? fromcontrols[gc][1] != gamecontroldefault[i][gc][1] : true)) { skipscheme = true; break; @@ -704,13 +708,15 @@ INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], boolean movementonly) return gcs_custom; } -void G_CopyControls(INT32 (*setupcontrols)[2], INT32 (*fromcontrols)[2]) +void G_CopyControls(INT32 (*setupcontrols)[2], INT32 (*fromcontrols)[2], INT32 gclist[], INT32 gclen) { - INT32 i; - for (i = 0; i < num_gamecontrols; i++) + INT32 i, gc; + + for (i = 0; i < (gclist && gclen ? gclen : num_gamecontrols); i++) { - setupcontrols[i][0] = fromcontrols[i][0]; - setupcontrols[i][1] = fromcontrols[i][1]; + gc = (gclist && gclen) ? gclist[i] : i; + setupcontrols[gc][0] = fromcontrols[gc][0]; + setupcontrols[gc][1] = fromcontrols[gc][1]; } } diff --git a/src/g_input.h b/src/g_input.h index af52bbd65..f8989fc6c 100644 --- a/src/g_input.h +++ b/src/g_input.h @@ -128,6 +128,9 @@ extern INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // #define PLAYER1INPUTDOWN(gc) (gamekeydown[gamecontrol[gc][0]] || gamekeydown[gamecontrol[gc][1]]) #define PLAYER2INPUTDOWN(gc) (gamekeydown[gamecontrolbis[gc][0]] || gamekeydown[gamecontrolbis[gc][1]]) +#define num_gcmovement 11 // 13 +extern INT32 gcmovement[num_gcmovement]; + // peace to my little coder fingers! // check a gamecontrol being active or not @@ -143,8 +146,8 @@ void G_ClearControlKeys(INT32 (*setupcontrols)[2], INT32 control); void Command_Setcontrol_f(void); void Command_Setcontrol2_f(void); void G_DefineDefaultControls(void); -INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], boolean movementonly); -void G_CopyControls(INT32 (*setupcontrols)[2], INT32 (*fromcontrols)[2]); +INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], INT32 gclist[], INT32 gclen); +void G_CopyControls(INT32 (*setupcontrols)[2], INT32 (*fromcontrols)[2], INT32 gclist[], INT32 gclen); void G_SaveKeySetting(FILE *f, INT32 (*fromcontrols)[2], INT32 (*fromcontrolsbis)[2]); void G_CheckDoubleUsage(INT32 keynum); diff --git a/src/m_misc.c b/src/m_misc.c index 8211239ef..cc9ae2999 100644 --- a/src/m_misc.c +++ b/src/m_misc.c @@ -476,7 +476,7 @@ void M_FirstLoadConfig(void) // load default control G_DefineDefaultControls(); - G_CopyControls(gamecontrol, gamecontroldefault[gcs_fps]); + G_CopyControls(gamecontrol, gamecontroldefault[gcs_fps], NULL, 0); // load config, make sure those commands doesnt require the screen... COM_BufInsertText(va("exec \"%s\"\n", configfile)); @@ -540,7 +540,13 @@ void M_SaveConfig(const char *filename) // FIXME: save key aliases if ever implemented.. CV_SaveVariables(f); - if (!dedicated) G_SaveKeySetting(f, gamecontrol, gamecontrolbis); + if (!dedicated) + { + if (tutorialmode) + G_SaveKeySetting(f, gamecontroldefault[gcs_custom], gamecontrolbis); // using gcs_custom as temp storage + else + G_SaveKeySetting(f, gamecontrol, gamecontrolbis); + } fclose(f); } From 3f72e1bacf9e3f87c2471e7df4838d6ee6f68ee3 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Sun, 11 Nov 2018 08:44:08 -0500 Subject: [PATCH 04/12] New gclists and const modifier; added tutorialmode declarations to this branch --- src/doomstat.h | 3 +++ src/g_game.c | 3 +++ src/g_input.c | 24 ++++++++++++++++++------ src/g_input.h | 17 +++++++++++++---- 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/doomstat.h b/src/doomstat.h index 7678c86b7..421b6579f 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -129,6 +129,9 @@ extern INT16 titlemap; extern boolean hidetitlepics; extern INT16 bootmap; //bootmap for loading a map on startup +extern INT16 tutorialmap; // map to load for tutorial +extern boolean tutorialmode; // are we in a tutorial right now? + extern boolean looptitle; // CTF colors. diff --git a/src/g_game.c b/src/g_game.c index 0a392fa85..38289bcb2 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -127,6 +127,9 @@ INT16 titlemap = 0; boolean hidetitlepics = false; INT16 bootmap; //bootmap for loading a map on startup +INT16 tutorialmap = 0; // map to load for tutorial +boolean tutorialmode = false; // are we in a tutorial right now? + boolean looptitle = false; UINT8 skincolor_redteam = SKINCOLOR_RED; diff --git a/src/g_input.c b/src/g_input.c index 77239621c..1e3b83b56 100644 --- a/src/g_input.c +++ b/src/g_input.c @@ -48,13 +48,25 @@ INT32 gamecontrolbis[num_gamecontrols][2]; // secondary splitscreen player INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // default control storage, use 0 (gcs_custom) for memory retention // lists of GC codes for selective operation -INT32 gcmovement[num_gcmovement] = { +const INT32 gclist_tutorial[num_gclist_tutorial] = { gc_forward, gc_backward, gc_strafeleft, gc_straferight, - gc_lookup, gc_lookdown, gc_turnleft, gc_turnright, gc_centerview, - gc_jump, gc_use - // , gc_fire, gc_firenormal + gc_lookup, gc_lookdown, gc_turnleft, gc_turnright//, gc_centerview, + //gc_jump, gc_use, + //gc_fire, gc_firenormal }; +const INT32 gclist_movement[num_gclist_movement] = { + gc_forward, gc_backward, gc_strafeleft, gc_straferight +}; + +const INT32 gclist_camera[num_gclist_camera] = { + gc_lookup, gc_lookdown, gc_turnleft, gc_turnright +}; + +const INT32 gclist_jump[num_gclist_jump] = { gc_jump }; + +const INT32 gclist_use[num_gclist_use] = { gc_use }; + typedef struct { UINT8 time; @@ -681,7 +693,7 @@ void G_DefineDefaultControls(void) } } -INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], INT32 gclist[], INT32 gclen) +INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], const INT32 *gclist, INT32 gclen) { INT32 i, j, gc; boolean skipscheme; @@ -708,7 +720,7 @@ INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], INT32 gclist[], INT32 gclen) return gcs_custom; } -void G_CopyControls(INT32 (*setupcontrols)[2], INT32 (*fromcontrols)[2], INT32 gclist[], INT32 gclen) +void G_CopyControls(INT32 (*setupcontrols)[2], INT32 (*fromcontrols)[2], const INT32 *gclist, INT32 gclen) { INT32 i, gc; diff --git a/src/g_input.h b/src/g_input.h index f8989fc6c..a70ff9104 100644 --- a/src/g_input.h +++ b/src/g_input.h @@ -128,8 +128,17 @@ extern INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // #define PLAYER1INPUTDOWN(gc) (gamekeydown[gamecontrol[gc][0]] || gamekeydown[gamecontrol[gc][1]]) #define PLAYER2INPUTDOWN(gc) (gamekeydown[gamecontrolbis[gc][0]] || gamekeydown[gamecontrolbis[gc][1]]) -#define num_gcmovement 11 // 13 -extern INT32 gcmovement[num_gcmovement]; +#define num_gclist_tutorial 8 // 13 +#define num_gclist_movement 4 +#define num_gclist_camera 4 +#define num_gclist_jump 1 +#define num_gclist_use 1 + +extern const INT32 gclist_tutorial[num_gclist_tutorial]; +extern const INT32 gclist_movement[num_gclist_movement]; +extern const INT32 gclist_camera[num_gclist_camera]; +extern const INT32 gclist_jump[num_gclist_jump]; +extern const INT32 gclist_use[num_gclist_use]; // peace to my little coder fingers! // check a gamecontrol being active or not @@ -146,8 +155,8 @@ void G_ClearControlKeys(INT32 (*setupcontrols)[2], INT32 control); void Command_Setcontrol_f(void); void Command_Setcontrol2_f(void); void G_DefineDefaultControls(void); -INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], INT32 gclist[], INT32 gclen); -void G_CopyControls(INT32 (*setupcontrols)[2], INT32 (*fromcontrols)[2], INT32 gclist[], INT32 gclen); +INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], const INT32 *gclist, INT32 gclen); +void G_CopyControls(INT32 (*setupcontrols)[2], INT32 (*fromcontrols)[2], const INT32 *gclist, INT32 gclen); void G_SaveKeySetting(FILE *f, INT32 (*fromcontrols)[2], INT32 (*fromcontrolsbis)[2]); void G_CheckDoubleUsage(INT32 keynum); From 80b19ff56619628982af3c9c185a232d4e1e8b49 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Sun, 11 Nov 2018 08:51:51 -0500 Subject: [PATCH 05/12] gclist adjustments --- src/g_input.c | 6 ++++-- src/g_input.h | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/g_input.c b/src/g_input.c index 1e3b83b56..cbd5265cb 100644 --- a/src/g_input.c +++ b/src/g_input.c @@ -50,7 +50,8 @@ INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // defaul // lists of GC codes for selective operation const INT32 gclist_tutorial[num_gclist_tutorial] = { gc_forward, gc_backward, gc_strafeleft, gc_straferight, - gc_lookup, gc_lookdown, gc_turnleft, gc_turnright//, gc_centerview, + gc_turnleft, gc_turnright + //gc_lookup, gc_lookdown, gc_turnleft, gc_turnright, gc_centerview, //gc_jump, gc_use, //gc_fire, gc_firenormal }; @@ -60,7 +61,8 @@ const INT32 gclist_movement[num_gclist_movement] = { }; const INT32 gclist_camera[num_gclist_camera] = { - gc_lookup, gc_lookdown, gc_turnleft, gc_turnright + gc_turnleft, gc_turnright + //gc_lookup, gc_lookdown, gc_turnleft, gc_turnright }; const INT32 gclist_jump[num_gclist_jump] = { gc_jump }; diff --git a/src/g_input.h b/src/g_input.h index a70ff9104..3260f9a5b 100644 --- a/src/g_input.h +++ b/src/g_input.h @@ -128,9 +128,9 @@ extern INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // #define PLAYER1INPUTDOWN(gc) (gamekeydown[gamecontrol[gc][0]] || gamekeydown[gamecontrol[gc][1]]) #define PLAYER2INPUTDOWN(gc) (gamekeydown[gamecontrolbis[gc][0]] || gamekeydown[gamecontrolbis[gc][1]]) -#define num_gclist_tutorial 8 // 13 +#define num_gclist_tutorial 6 // 13 #define num_gclist_movement 4 -#define num_gclist_camera 4 +#define num_gclist_camera 2 #define num_gclist_jump 1 #define num_gclist_use 1 From 181d13fe736ddbcd4b2f5db68f772cfbaab1b7b5 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Sun, 11 Nov 2018 08:56:40 -0500 Subject: [PATCH 06/12] gclist_tutorial include lookup/lookdown for conflict reasons --- src/g_input.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/g_input.c b/src/g_input.c index cbd5265cb..ebebc676a 100644 --- a/src/g_input.c +++ b/src/g_input.c @@ -50,8 +50,7 @@ INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // defaul // lists of GC codes for selective operation const INT32 gclist_tutorial[num_gclist_tutorial] = { gc_forward, gc_backward, gc_strafeleft, gc_straferight, - gc_turnleft, gc_turnright - //gc_lookup, gc_lookdown, gc_turnleft, gc_turnright, gc_centerview, + gc_lookup, gc_lookdown, gc_turnleft, gc_turnright //, gc_centerview, //gc_jump, gc_use, //gc_fire, gc_firenormal }; From fd83e1ed5c35f6705e2972fff0df4453cb3e230f Mon Sep 17 00:00:00 2001 From: mazmazz Date: Sun, 11 Nov 2018 09:21:54 -0500 Subject: [PATCH 07/12] num_gclist_tutorial adjustment --- src/g_input.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_input.h b/src/g_input.h index 3260f9a5b..10a0991e0 100644 --- a/src/g_input.h +++ b/src/g_input.h @@ -128,7 +128,7 @@ extern INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // #define PLAYER1INPUTDOWN(gc) (gamekeydown[gamecontrol[gc][0]] || gamekeydown[gamecontrol[gc][1]]) #define PLAYER2INPUTDOWN(gc) (gamekeydown[gamecontrolbis[gc][0]] || gamekeydown[gamecontrolbis[gc][1]]) -#define num_gclist_tutorial 6 // 13 +#define num_gclist_tutorial 8 // 13 #define num_gclist_movement 4 #define num_gclist_camera 2 #define num_gclist_jump 1 From c7a855de7a8ec4d035527b7cf5bc007cc435c648 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Sun, 11 Nov 2018 09:35:15 -0500 Subject: [PATCH 08/12] Split gclist_tutorial_check from gclist_tutorial --- src/g_input.c | 11 ++++++++--- src/g_input.h | 4 +++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/g_input.c b/src/g_input.c index ebebc676a..d8a99c97d 100644 --- a/src/g_input.c +++ b/src/g_input.c @@ -50,9 +50,14 @@ INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // defaul // lists of GC codes for selective operation const INT32 gclist_tutorial[num_gclist_tutorial] = { gc_forward, gc_backward, gc_strafeleft, gc_straferight, - gc_lookup, gc_lookdown, gc_turnleft, gc_turnright //, gc_centerview, - //gc_jump, gc_use, - //gc_fire, gc_firenormal + gc_lookup, gc_lookdown, gc_turnleft, gc_turnright, gc_centerview, + gc_jump, gc_use, + gc_fire, gc_firenormal +}; + +const INT32 gclist_tutorial_check[num_gclist_tutorial_check] = { + gc_forward, gc_backward, gc_strafeleft, gc_straferight, + gc_turnleft, gc_turnright }; const INT32 gclist_movement[num_gclist_movement] = { diff --git a/src/g_input.h b/src/g_input.h index 10a0991e0..01acf3ae0 100644 --- a/src/g_input.h +++ b/src/g_input.h @@ -128,13 +128,15 @@ extern INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // #define PLAYER1INPUTDOWN(gc) (gamekeydown[gamecontrol[gc][0]] || gamekeydown[gamecontrol[gc][1]]) #define PLAYER2INPUTDOWN(gc) (gamekeydown[gamecontrolbis[gc][0]] || gamekeydown[gamecontrolbis[gc][1]]) -#define num_gclist_tutorial 8 // 13 +#define num_gclist_tutorial 13 +#define num_gclist_tutorial_check 6 #define num_gclist_movement 4 #define num_gclist_camera 2 #define num_gclist_jump 1 #define num_gclist_use 1 extern const INT32 gclist_tutorial[num_gclist_tutorial]; +extern const INT32 gclist_tutorial_check[num_gclist_tutorial_check]; extern const INT32 gclist_movement[num_gclist_movement]; extern const INT32 gclist_camera[num_gclist_camera]; extern const INT32 gclist_jump[num_gclist_jump]; From ab084f1bc94eb8a1c371d83472b3b7e31bdcdea1 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Mon, 12 Nov 2018 16:50:03 -0500 Subject: [PATCH 09/12] Add tutorialgcs variable for optional control scheme loading --- src/g_game.c | 1 + src/m_misc.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/g_game.c b/src/g_game.c index 38289bcb2..891a17d13 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -129,6 +129,7 @@ INT16 bootmap; //bootmap for loading a map on startup INT16 tutorialmap = 0; // map to load for tutorial boolean tutorialmode = false; // are we in a tutorial right now? +boolean tutorialgcs = gcs_custom; // which control scheme is loaded? boolean looptitle = false; diff --git a/src/m_misc.c b/src/m_misc.c index cc9ae2999..7bc2d75cb 100644 --- a/src/m_misc.c +++ b/src/m_misc.c @@ -542,7 +542,7 @@ void M_SaveConfig(const char *filename) CV_SaveVariables(f); if (!dedicated) { - if (tutorialmode) + if (tutorialmode && tutorialgcs) G_SaveKeySetting(f, gamecontroldefault[gcs_custom], gamecontrolbis); // using gcs_custom as temp storage else G_SaveKeySetting(f, gamecontrol, gamecontrolbis); From 31c1145cf3e6e3a8d2d67f1f662e3c84900c71bd Mon Sep 17 00:00:00 2001 From: mazmazz Date: Mon, 12 Nov 2018 16:51:43 -0500 Subject: [PATCH 10/12] Uncomment gcs_platform defaults --- src/doomstat.h | 1 + src/g_game.c | 2 +- src/g_input.c | 28 ++++++++++++++-------------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/doomstat.h b/src/doomstat.h index 421b6579f..c4fda93ae 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -131,6 +131,7 @@ extern INT16 bootmap; //bootmap for loading a map on startup extern INT16 tutorialmap; // map to load for tutorial extern boolean tutorialmode; // are we in a tutorial right now? +extern INT32 tutorialgcs; // which control scheme is loaded? extern boolean looptitle; diff --git a/src/g_game.c b/src/g_game.c index 891a17d13..28a8a8d0a 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -129,7 +129,7 @@ INT16 bootmap; //bootmap for loading a map on startup INT16 tutorialmap = 0; // map to load for tutorial boolean tutorialmode = false; // are we in a tutorial right now? -boolean tutorialgcs = gcs_custom; // which control scheme is loaded? +INT32 tutorialgcs = gcs_custom; // which control scheme is loaded? boolean looptitle = false; diff --git a/src/g_input.c b/src/g_input.c index d8a99c97d..35a0b82cf 100644 --- a/src/g_input.c +++ b/src/g_input.c @@ -659,20 +659,20 @@ void G_DefineDefaultControls(void) gamecontroldefault[gcs_fps][gc_firenormal ][0] = 'c'; // Platform game controls (arrow keys) - // gamecontroldefault[gcs_platform][gc_forward ][0] = KEY_UPARROW; - // gamecontroldefault[gcs_platform][gc_backward ][0] = KEY_DOWNARROW; - // gamecontroldefault[gcs_platform][gc_strafeleft ][0] = 'a'; - // gamecontroldefault[gcs_platform][gc_straferight][0] = 'd'; - // gamecontroldefault[gcs_platform][gc_lookup ][0] = KEY_PGUP; - // gamecontroldefault[gcs_platform][gc_lookdown ][0] = KEY_PGDN; - // gamecontroldefault[gcs_platform][gc_turnleft ][0] = KEY_LEFTARROW; - // gamecontroldefault[gcs_platform][gc_turnright ][0] = KEY_RIGHTARROW; - // gamecontroldefault[gcs_platform][gc_centerview ][0] = KEY_END; - // gamecontroldefault[gcs_platform][gc_jump ][0] = KEY_SPACE; - // gamecontroldefault[gcs_platform][gc_use ][0] = KEY_LSHIFT; - // gamecontroldefault[gcs_platform][gc_fire ][0] = 's'; - // gamecontroldefault[gcs_platform][gc_fire ][1] = KEY_MOUSE1+0; - // gamecontroldefault[gcs_platform][gc_firenormal ][0] = 'w'; + gamecontroldefault[gcs_platform][gc_forward ][0] = KEY_UPARROW; + gamecontroldefault[gcs_platform][gc_backward ][0] = KEY_DOWNARROW; + gamecontroldefault[gcs_platform][gc_strafeleft ][0] = 'a'; + gamecontroldefault[gcs_platform][gc_straferight][0] = 'd'; + gamecontroldefault[gcs_platform][gc_lookup ][0] = KEY_PGUP; + gamecontroldefault[gcs_platform][gc_lookdown ][0] = KEY_PGDN; + gamecontroldefault[gcs_platform][gc_turnleft ][0] = KEY_LEFTARROW; + gamecontroldefault[gcs_platform][gc_turnright ][0] = KEY_RIGHTARROW; + gamecontroldefault[gcs_platform][gc_centerview ][0] = KEY_END; + gamecontroldefault[gcs_platform][gc_jump ][0] = KEY_SPACE; + gamecontroldefault[gcs_platform][gc_use ][0] = KEY_LSHIFT; + gamecontroldefault[gcs_platform][gc_fire ][0] = 's'; + gamecontroldefault[gcs_platform][gc_fire ][1] = KEY_MOUSE1+0; + gamecontroldefault[gcs_platform][gc_firenormal ][0] = 'w'; for (i = 1; i < num_gamecontrolschemes; i++) // skip gcs_custom (0) { From 1a5ccb27811613c67c1f0e1202426f1b715b34ef Mon Sep 17 00:00:00 2001 From: mazmazz Date: Mon, 12 Nov 2018 17:16:54 -0500 Subject: [PATCH 11/12] Uncomment gcs_platform --- src/g_input.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_input.h b/src/g_input.h index 01acf3ae0..ed347705a 100644 --- a/src/g_input.h +++ b/src/g_input.h @@ -103,7 +103,7 @@ typedef enum { gcs_custom, gcs_fps, - //gcs_platform, + gcs_platform, num_gamecontrolschemes } gamecontrolschemes_e; From 1d86cc348de682c1592e4af760cd3ac9436ea673 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Mon, 12 Nov 2018 23:23:39 -0500 Subject: [PATCH 12/12] Refactor gclists --- src/g_input.c | 40 +++++++++++++++++++++++++++------------- src/g_input.h | 30 ++++++++++++++++++------------ 2 files changed, 45 insertions(+), 25 deletions(-) diff --git a/src/g_input.c b/src/g_input.c index 35a0b82cf..4f7296cd5 100644 --- a/src/g_input.c +++ b/src/g_input.c @@ -48,31 +48,45 @@ INT32 gamecontrolbis[num_gamecontrols][2]; // secondary splitscreen player INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // default control storage, use 0 (gcs_custom) for memory retention // lists of GC codes for selective operation -const INT32 gclist_tutorial[num_gclist_tutorial] = { +const INT32 gcl_tutorial_check[num_gcl_tutorial_check] = { + gc_forward, gc_backward, gc_strafeleft, gc_straferight, + gc_turnleft, gc_turnright +}; + +const INT32 gcl_tutorial_used[num_gcl_tutorial_used] = { + gc_forward, gc_backward, gc_strafeleft, gc_straferight, + gc_turnleft, gc_turnright, + gc_jump, gc_use +}; + +const INT32 gcl_tutorial_full[num_gcl_tutorial_full] = { gc_forward, gc_backward, gc_strafeleft, gc_straferight, gc_lookup, gc_lookdown, gc_turnleft, gc_turnright, gc_centerview, gc_jump, gc_use, gc_fire, gc_firenormal }; -const INT32 gclist_tutorial_check[num_gclist_tutorial_check] = { +const INT32 gcl_movement[num_gcl_movement] = { + gc_forward, gc_backward, gc_strafeleft, gc_straferight +}; + +const INT32 gcl_camera[num_gcl_camera] = { + gc_turnleft, gc_turnright +}; + +const INT32 gcl_movement_camera[num_gcl_movement_camera] = { gc_forward, gc_backward, gc_strafeleft, gc_straferight, gc_turnleft, gc_turnright }; -const INT32 gclist_movement[num_gclist_movement] = { - gc_forward, gc_backward, gc_strafeleft, gc_straferight +const INT32 gcl_jump[num_gcl_jump] = { gc_jump }; + +const INT32 gcl_use[num_gcl_use] = { gc_use }; + +const INT32 gcl_jump_use[num_gcl_jump_use] = { + gc_jump, gc_use }; -const INT32 gclist_camera[num_gclist_camera] = { - gc_turnleft, gc_turnright - //gc_lookup, gc_lookdown, gc_turnleft, gc_turnright -}; - -const INT32 gclist_jump[num_gclist_jump] = { gc_jump }; - -const INT32 gclist_use[num_gclist_use] = { gc_use }; - typedef struct { UINT8 time; diff --git a/src/g_input.h b/src/g_input.h index ed347705a..4bf67ebd8 100644 --- a/src/g_input.h +++ b/src/g_input.h @@ -128,19 +128,25 @@ extern INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // #define PLAYER1INPUTDOWN(gc) (gamekeydown[gamecontrol[gc][0]] || gamekeydown[gamecontrol[gc][1]]) #define PLAYER2INPUTDOWN(gc) (gamekeydown[gamecontrolbis[gc][0]] || gamekeydown[gamecontrolbis[gc][1]]) -#define num_gclist_tutorial 13 -#define num_gclist_tutorial_check 6 -#define num_gclist_movement 4 -#define num_gclist_camera 2 -#define num_gclist_jump 1 -#define num_gclist_use 1 +#define num_gcl_tutorial_check 6 +#define num_gcl_tutorial_used 8 +#define num_gcl_tutorial_full 13 +#define num_gcl_movement 4 +#define num_gcl_camera 2 +#define num_gcl_movement_camera 6 +#define num_gcl_jump 1 +#define num_gcl_use 1 +#define num_gcl_jump_use 2 -extern const INT32 gclist_tutorial[num_gclist_tutorial]; -extern const INT32 gclist_tutorial_check[num_gclist_tutorial_check]; -extern const INT32 gclist_movement[num_gclist_movement]; -extern const INT32 gclist_camera[num_gclist_camera]; -extern const INT32 gclist_jump[num_gclist_jump]; -extern const INT32 gclist_use[num_gclist_use]; +extern const INT32 gcl_tutorial_check[num_gcl_tutorial_check]; +extern const INT32 gcl_tutorial_used[num_gcl_tutorial_used]; +extern const INT32 gcl_tutorial_full[num_gcl_tutorial_full]; +extern const INT32 gcl_movement[num_gcl_movement]; +extern const INT32 gcl_camera[num_gcl_camera]; +extern const INT32 gcl_movement_camera[num_gcl_movement_camera]; +extern const INT32 gcl_jump[num_gcl_jump]; +extern const INT32 gcl_use[num_gcl_use]; +extern const INT32 gcl_jump_use[num_gcl_jump_use]; // peace to my little coder fingers! // check a gamecontrol being active or not