From acd922886a37eefb0254edbd826cdc4fa52e821a Mon Sep 17 00:00:00 2001 From: mazmazz Date: Mon, 12 Nov 2018 17:24:46 -0500 Subject: [PATCH] Change mouse cv vars temporarily alongside control scheme --- src/d_main.c | 3 +++ src/d_netcmd.c | 5 +++++ src/doomstat.h | 3 +++ src/g_game.c | 3 +++ src/m_menu.c | 11 +++++++++++ src/m_misc.c | 14 +++++++++++++- 6 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/d_main.c b/src/d_main.c index 7e4ad0799..36377049d 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -739,6 +739,9 @@ void D_StartTitle(void) if (tutorialmode && tutorialgcs) { G_CopyControls(gamecontrol, gamecontroldefault[gcs_custom], gclist_tutorial, num_gclist_tutorial); // using gcs_custom as temp storage + CV_SetValue(&cv_usemouse, tutorialusemouse); + CV_SetValue(&cv_alwaysfreelook, tutorialfreelook); + CV_SetValue(&cv_mousemove, tutorialmousemove); M_StartMessage("Do you want to \x82save the recommended \x82movement controls?\x80\n\nPress 'Y' or 'Enter' to confirm\nPress 'N' or any key to keep \nyour current controls", M_TutorialSaveControlResponse, MM_YESNO); } diff --git a/src/d_netcmd.c b/src/d_netcmd.c index a9d539ea6..0aaace49f 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -1809,7 +1809,12 @@ static void Command_Map_f(void) fromlevelselect = ((netgame || multiplayer) && ((gametype == newgametype) && (newgametype == GT_COOP))); if (tutorialmode && tutorialgcs) + { G_CopyControls(gamecontrol, gamecontroldefault[gcs_custom], gclist_tutorial, num_gclist_tutorial); // using gcs_custom as temp storage + CV_SetValue(&cv_usemouse, tutorialusemouse); + CV_SetValue(&cv_alwaysfreelook, tutorialfreelook); + CV_SetValue(&cv_mousemove, tutorialmousemove); + } tutorialmode = false; // warping takes us out of tutorial mode D_MapChange(newmapnum, newgametype, false, newresetplayers, 0, false, fromlevelselect); diff --git a/src/doomstat.h b/src/doomstat.h index c4fda93ae..94ccf111a 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -132,6 +132,9 @@ 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 INT32 tutorialusemouse; // store cv_usemouse user value +extern INT32 tutorialfreelook; // store cv_alwaysfreelook user value +extern INT32 tutorialmousemove; // store cv_mousemove user value extern boolean looptitle; diff --git a/src/g_game.c b/src/g_game.c index 28a8a8d0a..0112ec104 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -130,6 +130,9 @@ 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? INT32 tutorialgcs = gcs_custom; // which control scheme is loaded? +INT32 tutorialusemouse = 0; // store cv_usemouse user value +INT32 tutorialfreelook = 0; // store cv_alwaysfreelook user value +INT32 tutorialmousemove = 0; // store cv_mousemove user value boolean looptitle = false; diff --git a/src/m_menu.c b/src/m_menu.c index 7505e04bd..b51d07fd2 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -6139,6 +6139,9 @@ void M_TutorialSaveControlResponse(INT32 ch) if (ch == 'y' || ch == KEY_ENTER) { G_CopyControls(gamecontrol, gamecontroldefault[tutorialgcs], gclist_tutorial, num_gclist_tutorial); + CV_SetValue(&cv_usemouse, 1); + CV_SetValue(&cv_alwaysfreelook, 0); + CV_SetValue(&cv_mousemove, 0); S_StartSound(NULL, sfx_itemup); } else @@ -6153,7 +6156,15 @@ static void M_TutorialControlResponse(INT32 ch) if (ch == 'y' || ch == KEY_ENTER) { tutorialgcs = gcs_fps; + tutorialusemouse = cv_usemouse.value; + tutorialfreelook = cv_alwaysfreelook.value; + tutorialmousemove = cv_mousemove.value; + G_CopyControls(gamecontrol, gamecontroldefault[tutorialgcs], gclist_tutorial, num_gclist_tutorial); + CV_Set(&cv_usemouse, cv_usemouse->defaultvalue); + CV_Set(&cv_alwaysfreelook, cv_alwaysfreelook->defaultvalue); + CV_Set(&cv_mousemove, cv_mousemove->defaultvalue); + //S_StartSound(NULL, sfx_itemup); } else diff --git a/src/m_misc.c b/src/m_misc.c index 7bc2d75cb..622d65776 100644 --- a/src/m_misc.c +++ b/src/m_misc.c @@ -539,7 +539,19 @@ void M_SaveConfig(const char *filename) // FIXME: save key aliases if ever implemented.. - CV_SaveVariables(f); + if (tutorialmode && tutorialgcs) + { + CV_SetValue(&cv_usemouse, tutorialusemouse); + CV_SetValue(&cv_alwaysfreelook, tutorialfreelook); + CV_SetValue(&cv_mousemove, tutorialmousemove); + CV_SaveVariables(f); + CV_Set(&cv_usemouse, cv_usemouse->defaultvalue); + CV_Set(&cv_alwaysfreelook, cv_alwaysfreelook->defaultvalue); + CV_Set(&cv_mousemove, cv_mousemove->defaultvalue); + } + else + CV_SaveVariables(f); + if (!dedicated) { if (tutorialmode && tutorialgcs)