From 3f72e1bacf9e3f87c2471e7df4838d6ee6f68ee3 Mon Sep 17 00:00:00 2001
From: mazmazz <mar.marcoz@outlook.com>
Date: Sun, 11 Nov 2018 08:44:08 -0500
Subject: [PATCH] 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 7678c86b70..421b6579fd 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 0a392fa854..38289bcb23 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 77239621c6..1e3b83b562 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 f8989fc6c2..a70ff9104f 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);
 
-- 
GitLab