From 856eebe52624ba5d780436feb349ea5ff2ee46b4 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Wed, 20 Jun 2007 00:37:40 +0000 Subject: Add new configuration options for the mouse and joystick for controls that are available through the keyboard. Justification: this is already possible through advanced mouse drivers and programs like js2x, so there might as well be a proper interface for it. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 918 --- src/g_game.c | 147 ++++++++++++++++++++++++++++++++++++----------------------- src/m_misc.c | 17 +++++++ 2 files changed, 107 insertions(+), 57 deletions(-) (limited to 'src') diff --git a/src/g_game.c b/src/g_game.c index 8d60a5ce..46337443 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -177,11 +177,23 @@ int key_speed = KEY_RSHIFT; int mousebfire = 0; int mousebstrafe = 1; int mousebforward = 2; + +int mousebstrafeleft = -1; +int mousebstraferight = -1; +int mousebbackward = -1; +int mousebuse = -1; + +// Control whether if a mouse button is double clicked, it acts like +// "use" has been pressed + +int dclick_use = 1; int joybfire = 0; int joybstrafe = 1; int joybuse = 3; int joybspeed = 2; +int joybstrafeleft = -1; +int joybstraferight = -1; // fraggle: Disallow mouse and joystick movement to cause forward/backward // motion. Specified with the '-novert' command line parameter. @@ -465,11 +477,21 @@ void G_BuildTiccmd (ticcmd_t* cmd) if (joyymove > 0) forward -= forwardmove[speed]; } - if (gamekeydown[key_straferight]) - side += sidemove[speed]; - if (gamekeydown[key_strafeleft]) - side -= sidemove[speed]; - + + if (gamekeydown[key_strafeleft] + || joybuttons[joybstrafeleft] + || mousebuttons[mousebstrafeleft]) + { + side -= sidemove[speed]; + } + + if (gamekeydown[key_straferight] + || joybuttons[joybstraferight] + || mousebuttons[mousebstraferight]) + { + side += sidemove[speed]; + } + // buttons cmd->chatchar = HU_dequeueChatChar(); @@ -477,7 +499,9 @@ void G_BuildTiccmd (ticcmd_t* cmd) || joybuttons[joybfire]) cmd->buttons |= BT_ATTACK; - if (gamekeydown[key_use] || joybuttons[joybuse] ) + if (gamekeydown[key_use] + || joybuttons[joybuse] + || mousebuttons[mousebuse]) { cmd->buttons |= BT_USE; // clear double clicks if hit use button @@ -495,59 +519,68 @@ void G_BuildTiccmd (ticcmd_t* cmd) // mouse if (mousebuttons[mousebforward]) + { forward += forwardmove[speed]; - - // forward double click - if (mousebuttons[mousebforward] != dclickstate && dclicktime > 1 ) - { - dclickstate = mousebuttons[mousebforward]; - if (dclickstate) - dclicks++; - if (dclicks == 2) - { - cmd->buttons |= BT_USE; - dclicks = 0; - } - else - dclicktime = 0; - } - else - { - dclicktime += ticdup; - if (dclicktime > 20) - { - dclicks = 0; - dclickstate = 0; - } } - - // strafe double click - bstrafe = - mousebuttons[mousebstrafe] - || joybuttons[joybstrafe]; - if (bstrafe != dclickstate2 && dclicktime2 > 1 ) - { - dclickstate2 = bstrafe; - if (dclickstate2) - dclicks2++; - if (dclicks2 == 2) - { - cmd->buttons |= BT_USE; - dclicks2 = 0; - } - else - dclicktime2 = 0; - } - else - { - dclicktime2 += ticdup; - if (dclicktime2 > 20) - { - dclicks2 = 0; - dclickstate2 = 0; - } - } - + if (mousebuttons[mousebbackward]) + { + forward -= forwardmove[speed]; + } + + if (dclick_use) + { + // forward double click + if (mousebuttons[mousebforward] != dclickstate && dclicktime > 1 ) + { + dclickstate = mousebuttons[mousebforward]; + if (dclickstate) + dclicks++; + if (dclicks == 2) + { + cmd->buttons |= BT_USE; + dclicks = 0; + } + else + dclicktime = 0; + } + else + { + dclicktime += ticdup; + if (dclicktime > 20) + { + dclicks = 0; + dclickstate = 0; + } + } + + // strafe double click + bstrafe = + mousebuttons[mousebstrafe] + || joybuttons[joybstrafe]; + if (bstrafe != dclickstate2 && dclicktime2 > 1 ) + { + dclickstate2 = bstrafe; + if (dclickstate2) + dclicks2++; + if (dclicks2 == 2) + { + cmd->buttons |= BT_USE; + dclicks2 = 0; + } + else + dclicktime2 = 0; + } + else + { + dclicktime2 += ticdup; + if (dclicktime2 > 20) + { + dclicks2 = 0; + dclickstate2 = 0; + } + } + } + // fraggle: allow disabling mouse y movement if (!novert) diff --git a/src/m_misc.c b/src/m_misc.c index 2d59675e..92510734 100644 --- a/src/m_misc.c +++ b/src/m_misc.c @@ -261,10 +261,19 @@ extern int mousebfire; extern int mousebstrafe; extern int mousebforward; +extern int mousebstrafeleft; +extern int mousebstraferight; +extern int mousebbackward; +extern int mousebuse; + +extern int dclick_use; + extern int joybfire; extern int joybstrafe; extern int joybuse; extern int joybspeed; +extern int joybstrafeleft; +extern int joybstraferight; extern int viewwidth; extern int viewheight; @@ -422,6 +431,14 @@ static default_t extra_defaults_list[] = {"joystick_x_invert", &joystick_x_invert, DEFAULT_INT, 0, 0}, {"joystick_y_axis", &joystick_y_axis, DEFAULT_INT, 0, 0}, {"joystick_y_invert", &joystick_y_invert, DEFAULT_INT, 0, 0}, + {"joyb_strafeleft", &joybstrafeleft, DEFAULT_INT, 0, 0}, + {"joyb_straferight", &joybstraferight, DEFAULT_INT, 0, 0}, + {"mouseb_strafeleft", &mousebstrafeleft, DEFAULT_INT, 0, 0}, + {"mouseb_straferight", &mousebstraferight, DEFAULT_INT, 0, 0}, + {"mouseb_use", &mousebuse, DEFAULT_INT, 0, 0}, + {"mouseb_backward", &mousebbackward, DEFAULT_INT, 0, 0}, + + {"dclick_use", &dclick_use, DEFAULT_INT, 0, 0}, }; static default_collection_t extra_defaults = -- cgit v1.2.3