Merge branch 'control-selector' into tutorial-time

This commit is contained in:
mazmazz 2018-11-11 08:46:06 -05:00
commit 6be583eac6
5 changed files with 38 additions and 17 deletions

View file

@ -717,9 +717,9 @@ void D_StartTitle(void)
if (tutorialmode) if (tutorialmode)
{ {
// check if retained controls are custom // check if retained controls are custom
tutorialpostprompt = (G_GetControlScheme(gamecontroldefault[gcs_custom], gcmovement, num_gcmovement) == gcs_custom tutorialpostprompt = (G_GetControlScheme(gamecontroldefault[gcs_custom], gclist_tutorial, num_gclist_tutorial) == gcs_custom
&& G_GetControlScheme(gamecontrol, gcmovement, num_gcmovement) != gcs_custom); && G_GetControlScheme(gamecontrol, gclist_tutorial, num_gclist_tutorial) != gcs_custom);
G_CopyControls(gamecontrol, gamecontroldefault[gcs_custom], gcmovement, num_gcmovement); // using gcs_custom as temp storage G_CopyControls(gamecontrol, gamecontroldefault[gcs_custom], gclist_tutorial, num_gclist_tutorial); // using gcs_custom as temp storage
} }
tutorialmode = false; tutorialmode = false;

View file

@ -1809,7 +1809,7 @@ static void Command_Map_f(void)
fromlevelselect = ((netgame || multiplayer) && ((gametype == newgametype) && (newgametype == GT_COOP))); fromlevelselect = ((netgame || multiplayer) && ((gametype == newgametype) && (newgametype == GT_COOP)));
if (tutorialmode) if (tutorialmode)
G_CopyControls(gamecontrol, gamecontroldefault[gcs_custom], gcmovement, num_gcmovement); // using gcs_custom as temp storage G_CopyControls(gamecontrol, gamecontroldefault[gcs_custom], gclist_tutorial, num_gclist_tutorial); // using gcs_custom as temp storage
tutorialmode = false; // warping takes us out of tutorial mode tutorialmode = false; // warping takes us out of tutorial mode
D_MapChange(newmapnum, newgametype, false, newresetplayers, 0, false, fromlevelselect); D_MapChange(newmapnum, newgametype, false, newresetplayers, 0, false, fromlevelselect);

View file

@ -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 INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; // default control storage, use 0 (gcs_custom) for memory retention
// lists of GC codes for selective operation // 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_forward, gc_backward, gc_strafeleft, gc_straferight,
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_jump, gc_use,
// , gc_fire, gc_firenormal //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 typedef struct
{ {
UINT8 time; 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; INT32 i, j, gc;
boolean skipscheme; boolean skipscheme;
@ -708,7 +720,7 @@ INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], INT32 gclist[], INT32 gclen)
return gcs_custom; 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; INT32 i, gc;

View file

@ -128,8 +128,17 @@ extern INT32 gamecontroldefault[num_gamecontrolschemes][num_gamecontrols][2]; //
#define PLAYER1INPUTDOWN(gc) (gamekeydown[gamecontrol[gc][0]] || gamekeydown[gamecontrol[gc][1]]) #define PLAYER1INPUTDOWN(gc) (gamekeydown[gamecontrol[gc][0]] || gamekeydown[gamecontrol[gc][1]])
#define PLAYER2INPUTDOWN(gc) (gamekeydown[gamecontrolbis[gc][0]] || gamekeydown[gamecontrolbis[gc][1]]) #define PLAYER2INPUTDOWN(gc) (gamekeydown[gamecontrolbis[gc][0]] || gamekeydown[gamecontrolbis[gc][1]])
#define num_gcmovement 11 // 13 #define num_gclist_tutorial 8 // 13
extern INT32 gcmovement[num_gcmovement]; #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! // peace to my little coder fingers!
// check a gamecontrol being active or not // 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_Setcontrol_f(void);
void Command_Setcontrol2_f(void); void Command_Setcontrol2_f(void);
void G_DefineDefaultControls(void); 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);
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);
void G_SaveKeySetting(FILE *f, INT32 (*fromcontrols)[2], INT32 (*fromcontrolsbis)[2]); void G_SaveKeySetting(FILE *f, INT32 (*fromcontrols)[2], INT32 (*fromcontrolsbis)[2]);
void G_CheckDoubleUsage(INT32 keynum); void G_CheckDoubleUsage(INT32 keynum);

View file

@ -6138,7 +6138,7 @@ void M_TutorialSaveControlResponse(INT32 ch)
{ {
if (ch == 'y' || ch == KEY_ENTER) if (ch == 'y' || ch == KEY_ENTER)
{ {
G_CopyControls(gamecontrol, gamecontroldefault[gcs_fps], gcmovement, num_gcmovement); G_CopyControls(gamecontrol, gamecontroldefault[gcs_fps], gclist_tutorial, num_gclist_tutorial);
S_StartSound(NULL, sfx_strpst); S_StartSound(NULL, sfx_strpst);
} }
else else
@ -6150,7 +6150,7 @@ static void M_TutorialControlResponse(INT32 ch)
if (ch == 'y' || ch == KEY_ENTER) if (ch == 'y' || ch == KEY_ENTER)
{ {
G_CopyControls(gamecontroldefault[gcs_custom], gamecontrol, NULL, 0); G_CopyControls(gamecontroldefault[gcs_custom], gamecontrol, NULL, 0);
G_CopyControls(gamecontrol, gamecontroldefault[gcs_fps], gcmovement, num_gcmovement); G_CopyControls(gamecontrol, gamecontroldefault[gcs_fps], gclist_tutorial, num_gclist_tutorial);
} }
M_StartTutorial(INT32_MAX); M_StartTutorial(INT32_MAX);
} }
@ -6161,7 +6161,7 @@ static void M_StartTutorial(INT32 choice)
if (!tutorialmap) if (!tutorialmap)
return; // no map to go to, don't bother return; // no map to go to, don't bother
if (choice != INT32_MAX && G_GetControlScheme(gamecontrol, gcmovement, num_gcmovement) == gcs_custom) if (choice != INT32_MAX && G_GetControlScheme(gamecontrol, gclist_tutorial, num_gclist_tutorial) == gcs_custom)
{ {
M_StartMessage("Do you want to try the \202recommended \202controls\x80?\n\nWe will set them just for this tutorial.\n\n(Press 'Y' to confirm,\nor any key to keep \nyour current controls.)\n",M_TutorialControlResponse,MM_YESNO); M_StartMessage("Do you want to try the \202recommended \202controls\x80?\n\nWe will set them just for this tutorial.\n\n(Press 'Y' to confirm,\nor any key to keep \nyour current controls.)\n",M_TutorialControlResponse,MM_YESNO);
return; return;