From 07925d634cc4d5a8847f76ca4c4f2ce236ba6de8 Mon Sep 17 00:00:00 2001 From: Fabian Greffrath Date: Thu, 8 Apr 2021 13:00:15 +0200 Subject: [PATCH] add mouse button bindings for turning left/right (#268) * add mouse button bindings for turning left/right * let "turn" mouse bindings act as aliases for the respective key bindings * addendum to the previous commit --- prboom2/src/g_game.c | 24 ++++++++++++++---------- prboom2/src/g_game.h | 2 ++ prboom2/src/m_menu.c | 8 ++++---- prboom2/src/m_misc.c | 4 ++++ 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/prboom2/src/g_game.c b/prboom2/src/g_game.c index 99e1bba4d..b0494d48b 100644 --- a/prboom2/src/g_game.c +++ b/prboom2/src/g_game.c @@ -260,6 +260,8 @@ int mousebfire; int mousebstrafe; int mousebforward; int mousebbackward; +int mousebturnright; +int mousebturnleft; int mousebuse; int joybfire; int joybstrafe; @@ -491,7 +493,8 @@ void G_BuildTiccmd(ticcmd_t* cmd) // use two stage accelerative turning // on the keyboard and joystick if (joyxmove < 0 || joyxmove > 0 || - gamekeydown[key_right] || gamekeydown[key_left]) + gamekeydown[key_right] || gamekeydown[key_left] || + mousebuttons[mousebturnright] || mousebuttons[mousebturnleft]) turnheld += ticdup; else turnheld = 0; @@ -514,9 +517,9 @@ void G_BuildTiccmd(ticcmd_t* cmd) if (strafe) { - if (gamekeydown[key_right]) + if (gamekeydown[key_right] || mousebuttons[mousebturnright]) side += sidemove[speed]; - if (gamekeydown[key_left]) + if (gamekeydown[key_left] || mousebuttons[mousebturnleft]) side -= sidemove[speed]; if (joyxmove > 0) side += sidemove[speed]; @@ -525,9 +528,9 @@ void G_BuildTiccmd(ticcmd_t* cmd) } else { - if (gamekeydown[key_right]) + if (gamekeydown[key_right] || mousebuttons[mousebturnright]) cmd->angleturn -= angleturn[tspeed]; - if (gamekeydown[key_left]) + if (gamekeydown[key_left] || mousebuttons[mousebturnleft]) cmd->angleturn += angleturn[tspeed]; if (joyxmove > 0) cmd->angleturn -= angleturn[tspeed]; @@ -4320,7 +4323,8 @@ void P_WalkTicker() // use two stage accelerative turning // on the keyboard and joystick if (joyxmove < 0 || joyxmove > 0 || - gamekeydown[key_right] || gamekeydown[key_left]) + gamekeydown[key_right] || gamekeydown[key_left] || + mousebuttons[mousebturnright] || mousebuttons[mousebturnleft]) turnheld += ticdup; else turnheld = 0; @@ -4334,9 +4338,9 @@ void P_WalkTicker() if (strafe) { - if (gamekeydown[key_right]) + if (gamekeydown[key_right] || mousebuttons[mousebturnright]) side += sidemove[speed]; - if (gamekeydown[key_left]) + if (gamekeydown[key_left] || mousebuttons[mousebturnleft]) side -= sidemove[speed]; if (joyxmove > 0) side += sidemove[speed]; @@ -4345,9 +4349,9 @@ void P_WalkTicker() } else { - if (gamekeydown[key_right]) + if (gamekeydown[key_right] || mousebuttons[mousebturnright]) angturn -= angleturn[tspeed]; - if (gamekeydown[key_left]) + if (gamekeydown[key_left] || mousebuttons[mousebturnleft]) angturn += angleturn[tspeed]; if (joyxmove > 0) angturn -= angleturn[tspeed]; diff --git a/prboom2/src/g_game.h b/prboom2/src/g_game.h index 7809e5627..1a63b3423 100644 --- a/prboom2/src/g_game.h +++ b/prboom2/src/g_game.h @@ -197,6 +197,8 @@ extern int mousebfire; extern int mousebstrafe; extern int mousebforward; extern int mousebbackward; +extern int mousebturnright; +extern int mousebturnleft; extern int mousebuse; extern int joybfire; extern int joybstrafe; diff --git a/prboom2/src/m_menu.c b/prboom2/src/m_menu.c index 7a41a64ca..1493f2223 100644 --- a/prboom2/src/m_menu.c +++ b/prboom2/src/m_menu.c @@ -2458,8 +2458,8 @@ setup_menu_t keys_settings1[] = // Key Binding screen strings {"MOVEMENT" ,S_SKIP|S_TITLE,m_null,KB_X,KB_Y}, {"FORWARD" ,S_KEY ,m_scrn,KB_X,KB_Y+1*8,{&key_up},&mousebforward}, {"BACKWARD" ,S_KEY ,m_scrn,KB_X,KB_Y+2*8,{&key_down},&mousebbackward}, - {"TURN LEFT" ,S_KEY ,m_scrn,KB_X,KB_Y+3*8,{&key_left}}, - {"TURN RIGHT" ,S_KEY ,m_scrn,KB_X,KB_Y+4*8,{&key_right}}, + {"TURN LEFT" ,S_KEY ,m_scrn,KB_X,KB_Y+3*8,{&key_left},&mousebturnleft}, + {"TURN RIGHT" ,S_KEY ,m_scrn,KB_X,KB_Y+4*8,{&key_right},&mousebturnright}, {"RUN" ,S_KEY ,m_scrn,KB_X,KB_Y+5*8,{&key_speed},0,&joybspeed}, {"STRAFE LEFT" ,S_KEY ,m_scrn,KB_X,KB_Y+6*8,{&key_strafeleft},0,&joybstrafeleft}, {"STRAFE RIGHT",S_KEY ,m_scrn,KB_X,KB_Y+7*8,{&key_straferight},0,&joybstraferight}, @@ -4415,8 +4415,8 @@ setup_menu_t helpstrings[] = // HELP screen strings {"MOVEMENT" ,S_SKIP|S_TITLE,m_null,KT_X3,KT_Y3}, {"FORWARD" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 1*8,{&key_up},&mousebforward}, {"BACKWARD" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 2*8,{&key_down},&mousebbackward}, - {"TURN LEFT" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 3*8,{&key_left}}, - {"TURN RIGHT" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 4*8,{&key_right}}, + {"TURN LEFT" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 3*8,{&key_left},&mousebturnleft}, + {"TURN RIGHT" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 4*8,{&key_right},&mousebturnright}, {"RUN" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 5*8,{&key_speed},0,&joybspeed}, {"STRAFE LEFT" ,S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 6*8,{&key_strafeleft},0,&joybstrafeleft}, {"STRAFE RIGHT",S_SKIP|S_KEY,m_null,KT_X3,KT_Y3+ 7*8,{&key_straferight},0,&joybstraferight}, diff --git a/prboom2/src/m_misc.c b/prboom2/src/m_misc.c index 55820344f..0bf3f5b9e 100644 --- a/prboom2/src/m_misc.c +++ b/prboom2/src/m_misc.c @@ -581,6 +581,10 @@ default_t defaults[] = def_int,ss_keys}, // mouse button number to use for forward motion {"mouseb_backward",{&mousebbackward},{-1},-1,MAX_MOUSEB, def_int,ss_keys}, // mouse button number to use for backward motion + {"mouseb_turnright",{&mousebturnright},{-1},-1,MAX_MOUSEB, + def_int,ss_keys}, // mouse button number to use for turning right + {"mouseb_turnleft",{&mousebturnleft},{-1},-1,MAX_MOUSEB, + def_int,ss_keys}, // mouse button number to use for turning left {"mouseb_use", {&mousebuse},{-1},-1,MAX_MOUSEB, def_int,ss_keys}, // mouse button number to use for using doors/switches //jff 3/8/98 end of lower range change for -1 allowed in mouse binding