Implement controller stuff
This commit is contained in:
parent
fd31992b72
commit
699e607ec7
7 changed files with 103 additions and 40 deletions
|
|
@ -2172,6 +2172,45 @@ static boolean CV_FilterJoyAxisVars(consvar_t *v, const char *valstr)
|
|||
return true;
|
||||
}
|
||||
|
||||
// Block the Xbox DInput default axes and reset to the current defaults
|
||||
static boolean CV_FilterJoyAxisVars2(consvar_t *v, const char *valstr)
|
||||
{
|
||||
if (!stricmp(v->name, "joyaxis_turn") && !stricmp(valstr, "X-Axis"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis2_turn") && !stricmp(valstr, "X-Axis"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis3_turn") && !stricmp(valstr, "X-Axis"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis4_turn") && !stricmp(valstr, "X-Axis"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis_aim") && !stricmp(valstr, "Y-Axis"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis2_aim") && !stricmp(valstr, "Y-Axis"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis3_aim") && !stricmp(valstr, "Y-Axis"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis4_aim") && !stricmp(valstr, "Y-Axis"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis_fire") && !stricmp(valstr, "None"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis2_fire") && !stricmp(valstr, "None"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis3_fire") && !stricmp(valstr, "None"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis4_fire") && !stricmp(valstr, "None"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis_drift") && !stricmp(valstr, "None"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis2_drift") && !stricmp(valstr, "None"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis3_drift") && !stricmp(valstr, "None"))
|
||||
return false;
|
||||
if (!stricmp(v->name, "joyaxis4_drift") && !stricmp(valstr, "None"))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static boolean CV_FilterVarByVersion(consvar_t *v, const char *valstr)
|
||||
{
|
||||
// True means allow the CV change, False means block it
|
||||
|
|
@ -2194,7 +2233,8 @@ static boolean CV_FilterVarByVersion(consvar_t *v, const char *valstr)
|
|||
|
||||
// axis defaults were changed to be friendly to 360 controllers
|
||||
// if ALL axis settings are defaults, then change them to new values
|
||||
if (!CV_FilterJoyAxisVars(v, valstr))
|
||||
// axis defaults changed again to SDL game controllers
|
||||
if (!CV_FilterJoyAxisVars2(v, valstr))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1025,6 +1025,7 @@ void D_RegisterClientCommands(void)
|
|||
CV_RegisterVar(&cv_lookaxis[i]);
|
||||
CV_RegisterVar(&cv_fireaxis[i]);
|
||||
CV_RegisterVar(&cv_driftaxis[i]);
|
||||
CV_RegisterVar(&cv_lookbackaxis[i]);
|
||||
CV_RegisterVar(&cv_deadzone[i]);
|
||||
CV_RegisterVar(&cv_digitaldeadzone[i]);
|
||||
}
|
||||
|
|
|
|||
48
src/g_game.c
48
src/g_game.c
|
|
@ -345,12 +345,12 @@ INT16 prevmap, nextmap;
|
|||
static UINT8 *savebuffer;
|
||||
|
||||
static CV_PossibleValue_t joyaxis_cons_t[] = {{0, "None"},
|
||||
{1, "X-Axis"}, {2, "Y-Axis"}, {-1, "X-Axis-"}, {-2, "Y-Axis-"},
|
||||
{1, "Left X"}, {2, "Left Y"}, {-1, "Left X-"}, {-2, "Left Y-"},
|
||||
#if JOYAXISSET > 1
|
||||
{3, "Z-Axis"}, {4, "X-Rudder"}, {-3, "Z-Axis-"}, {-4, "X-Rudder-"},
|
||||
{3, "Right X"}, {4, "Right Y"}, {-3, "Right X-"}, {-4, "Right Y-"},
|
||||
#endif
|
||||
#if JOYAXISSET > 2
|
||||
{5, "Y-Rudder"}, {6, "Z-Rudder"}, {-5, "Y-Rudder-"}, {-6, "Z-Rudder-"},
|
||||
{5, "L Trigger"}, {6, "R Trigger"}, {-5, "L Trigger-"}, {-6, "R Trigger-"},
|
||||
#endif
|
||||
#if JOYAXISSET > 3
|
||||
{7, "U-Axis"}, {8, "V-Axis"}, {-7, "U-Axis-"}, {-8, "V-Axis-"},
|
||||
|
|
@ -447,10 +447,10 @@ consvar_t cv_shrinkme[MAXSPLITSCREENPLAYERS] = {
|
|||
};
|
||||
|
||||
consvar_t cv_turnaxis[MAXSPLITSCREENPLAYERS] = {
|
||||
CVAR_INIT ("joyaxis_turn", "X-Axis", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis2_turn", "X-Axis", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis3_turn", "X-Axis", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis4_turn", "X-Axis", CV_SAVE, joyaxis_cons_t, NULL)
|
||||
CVAR_INIT ("joyaxis_turn", "Left X", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis2_turn", "Left X", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis3_turn", "Left X", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis4_turn", "Left X", CV_SAVE, joyaxis_cons_t, NULL)
|
||||
};
|
||||
|
||||
consvar_t cv_moveaxis[MAXSPLITSCREENPLAYERS] = {
|
||||
|
|
@ -468,10 +468,10 @@ consvar_t cv_brakeaxis[MAXSPLITSCREENPLAYERS] = {
|
|||
};
|
||||
|
||||
consvar_t cv_aimaxis[MAXSPLITSCREENPLAYERS] = {
|
||||
CVAR_INIT ("joyaxis_aim", "Y-Axis", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis2_aim", "Y-Axis", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis3_aim", "Y-Axis", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis4_aim", "Y-Axis", CV_SAVE, joyaxis_cons_t, NULL)
|
||||
CVAR_INIT ("joyaxis_aim", "Left Y", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis2_aim", "Left Y", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis3_aim", "Left Y", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis4_aim", "Left Y", CV_SAVE, joyaxis_cons_t, NULL)
|
||||
};
|
||||
|
||||
consvar_t cv_lookaxis[MAXSPLITSCREENPLAYERS] = {
|
||||
|
|
@ -482,17 +482,24 @@ consvar_t cv_lookaxis[MAXSPLITSCREENPLAYERS] = {
|
|||
};
|
||||
|
||||
consvar_t cv_fireaxis[MAXSPLITSCREENPLAYERS] = {
|
||||
CVAR_INIT ("joyaxis_fire", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis_fire2", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis_fire3", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis_fire4", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL)
|
||||
CVAR_INIT ("joyaxis_fire", "L Trigger", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis_fire2", "L Trigger", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis_fire3", "L Trigger", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis_fire4", "L Trigger", CV_SAVE, joyaxis_cons_t, NULL)
|
||||
};
|
||||
|
||||
consvar_t cv_driftaxis[MAXSPLITSCREENPLAYERS] = {
|
||||
CVAR_INIT ("joyaxis_drift", "Z-Rudder", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis2_drift", "Z-Rudder", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis3_drift", "Z-Rudder", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis4_drift", "Z-Rudder", CV_SAVE, joyaxis_cons_t, NULL)
|
||||
CVAR_INIT ("joyaxis_drift", "R Trigger", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis2_drift", "R Trigger", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis3_drift", "R Trigger", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis4_drift", "R Trigger", CV_SAVE, joyaxis_cons_t, NULL)
|
||||
};
|
||||
|
||||
consvar_t cv_lookbackaxis[MAXSPLITSCREENPLAYERS] = {
|
||||
CVAR_INIT ("joyaxis_lookback", "None", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis2_lookback", "None", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis3_lookback", "None", CV_SAVE, joyaxis_cons_t, NULL),
|
||||
CVAR_INIT ("joyaxis4_lookback", "None", CV_SAVE, joyaxis_cons_t, NULL)
|
||||
};
|
||||
|
||||
static CV_PossibleValue_t zerotoone_cons_t[] = {{0, "MIN"}, {FRACUNIT, "MAX"}, {0, NULL}};
|
||||
|
|
@ -787,6 +794,9 @@ INT32 PlayerJoyAxis(UINT8 player, axis_input_e axissel)
|
|||
case AXISDRIFT:
|
||||
axisval = cv_driftaxis[player-1].value;
|
||||
break;
|
||||
case AXISLOOKBACK:
|
||||
axisval = cv_lookbackaxis[player-1].value;
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ extern consvar_t cv_aimaxis[MAXSPLITSCREENPLAYERS];
|
|||
extern consvar_t cv_lookaxis[MAXSPLITSCREENPLAYERS];
|
||||
extern consvar_t cv_fireaxis[MAXSPLITSCREENPLAYERS];
|
||||
extern consvar_t cv_driftaxis[MAXSPLITSCREENPLAYERS];
|
||||
extern consvar_t cv_lookbackaxis[MAXSPLITSCREENPLAYERS];
|
||||
extern consvar_t cv_deadzone[MAXSPLITSCREENPLAYERS];
|
||||
extern consvar_t cv_digitaldeadzone[MAXSPLITSCREENPLAYERS];
|
||||
|
||||
|
|
|
|||
|
|
@ -876,32 +876,32 @@ void G_DefineDefaultControls(void)
|
|||
gamecontroldefault[0][i][gc_accelerate ][1] = KEY_JOY1+0; // A
|
||||
gamecontroldefault[0][i][gc_lookback ][1] = KEY_JOY1+2; // X
|
||||
gamecontroldefault[0][i][gc_brake ][1] = KEY_JOY1+1; // B
|
||||
gamecontroldefault[0][i][gc_fire ][1] = KEY_JOY1+4; // LB
|
||||
gamecontroldefault[0][i][gc_drift ][1] = KEY_JOY1+5; // RB
|
||||
gamecontroldefault[0][i][gc_fire ][1] = KEY_JOY1+9; // LB
|
||||
gamecontroldefault[0][i][gc_drift ][1] = KEY_JOY1+10; // RB
|
||||
|
||||
gamecontroldefault[0][i][gc_viewpoint ][1] = KEY_JOY1+3; // Y
|
||||
gamecontroldefault[0][i][gc_pause ][1] = KEY_JOY1+6; // Back
|
||||
gamecontroldefault[0][i][gc_systemmenu ][0] = KEY_JOY1+7; // Start
|
||||
gamecontroldefault[0][i][gc_pause ][1] = KEY_JOY1+4; // Back
|
||||
gamecontroldefault[0][i][gc_systemmenu ][0] = KEY_JOY1+6; // Start
|
||||
gamecontroldefault[0][i][gc_talkkey ][1] = KEY_HAT1+1; // D-Pad Down
|
||||
gamecontroldefault[0][i][gc_scores ][1] = KEY_HAT1+0; // D-Pad Up
|
||||
|
||||
gamecontroldefault[1][i][gc_accelerate ][0] = KEY_2JOY1+0; // A
|
||||
gamecontroldefault[1][i][gc_lookback ][0] = KEY_2JOY1+2; // X
|
||||
gamecontroldefault[1][i][gc_brake ][0] = KEY_2JOY1+1; // B
|
||||
gamecontroldefault[1][i][gc_fire ][0] = KEY_2JOY1+4; // LB
|
||||
gamecontroldefault[1][i][gc_drift ][0] = KEY_2JOY1+5; // RB
|
||||
gamecontroldefault[1][i][gc_fire ][0] = KEY_2JOY1+9; // LB
|
||||
gamecontroldefault[1][i][gc_drift ][0] = KEY_2JOY1+10; // RB
|
||||
|
||||
gamecontroldefault[2][i][gc_accelerate ][0] = KEY_3JOY1+0; // A
|
||||
gamecontroldefault[2][i][gc_lookback ][0] = KEY_3JOY1+2; // X
|
||||
gamecontroldefault[2][i][gc_brake ][0] = KEY_3JOY1+1; // B
|
||||
gamecontroldefault[2][i][gc_fire ][0] = KEY_3JOY1+4; // LB
|
||||
gamecontroldefault[2][i][gc_drift ][0] = KEY_3JOY1+5; // RB
|
||||
gamecontroldefault[2][i][gc_fire ][0] = KEY_3JOY1+9; // LB
|
||||
gamecontroldefault[2][i][gc_drift ][0] = KEY_3JOY1+10; // RB
|
||||
|
||||
gamecontroldefault[3][i][gc_accelerate ][0] = KEY_3JOY1+0; // A
|
||||
gamecontroldefault[3][i][gc_lookback ][0] = KEY_3JOY1+2; // X
|
||||
gamecontroldefault[3][i][gc_brake ][0] = KEY_3JOY1+1; // B
|
||||
gamecontroldefault[3][i][gc_fire ][0] = KEY_3JOY1+4; // LB
|
||||
gamecontroldefault[3][i][gc_drift ][0] = KEY_3JOY1+5; // RB
|
||||
gamecontroldefault[3][i][gc_fire ][0] = KEY_3JOY1+9; // LB
|
||||
gamecontroldefault[3][i][gc_drift ][0] = KEY_3JOY1+10; // RB
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
27
src/m_menu.c
27
src/m_menu.c
|
|
@ -1188,7 +1188,9 @@ static menuitem_t OP_Joystick1Menu[] =
|
|||
{IT_STRING | IT_CVAR, NULL, "Brake" , {.cvar = &cv_brakeaxis[0]} , 60},
|
||||
{IT_STRING | IT_CVAR, NULL, "Drift" , {.cvar = &cv_driftaxis[0]} , 70},
|
||||
{IT_STRING | IT_CVAR, NULL, "Use Item" , {.cvar = &cv_fireaxis[0]} , 80},
|
||||
{IT_STRING | IT_CVAR, NULL, "Look Up/Down" , {.cvar = &cv_lookaxis[0]} , 90},
|
||||
{IT_STRING | IT_CVAR, NULL, "Look Backward" , {.cvar = &cv_lookbackaxis[0]} , 90},
|
||||
{IT_STRING | IT_CVAR, NULL, "Spec. Look Up/Down" , {.cvar = &cv_lookaxis[0]} , 100},
|
||||
{IT_STRING | IT_CVAR, NULL, "Deadzone" , {.cvar = &cv_deadzone[0]} , 110},
|
||||
};
|
||||
|
||||
static menuitem_t OP_Joystick2Menu[] =
|
||||
|
|
@ -1200,7 +1202,9 @@ static menuitem_t OP_Joystick2Menu[] =
|
|||
{IT_STRING | IT_CVAR, NULL, "Brake" , {.cvar = &cv_brakeaxis[1]} , 60},
|
||||
{IT_STRING | IT_CVAR, NULL, "Drift" , {.cvar = &cv_driftaxis[1]} , 70},
|
||||
{IT_STRING | IT_CVAR, NULL, "Use Item" , {.cvar = &cv_fireaxis[1]} , 80},
|
||||
{IT_STRING | IT_CVAR, NULL, "Look Up/Down" , {.cvar = &cv_lookaxis[1]} , 90},
|
||||
{IT_STRING | IT_CVAR, NULL, "Look Backward" , {.cvar = &cv_lookbackaxis[0]} , 90},
|
||||
{IT_STRING | IT_CVAR, NULL, "Spec. Look Up/Down" , {.cvar = &cv_lookaxis[1]} , 100},
|
||||
{IT_STRING | IT_CVAR, NULL, "Deadzone" , {.cvar = &cv_deadzone[1]} , 110},
|
||||
};
|
||||
|
||||
static menuitem_t OP_Joystick3Menu[] =
|
||||
|
|
@ -1212,7 +1216,9 @@ static menuitem_t OP_Joystick3Menu[] =
|
|||
{IT_STRING | IT_CVAR, NULL, "Brake" , {.cvar = &cv_brakeaxis[2]} , 60},
|
||||
{IT_STRING | IT_CVAR, NULL, "Drift" , {.cvar = &cv_driftaxis[2]} , 70},
|
||||
{IT_STRING | IT_CVAR, NULL, "Use Item" , {.cvar = &cv_fireaxis[2]} , 80},
|
||||
{IT_STRING | IT_CVAR, NULL, "Look Up/Down" , {.cvar = &cv_lookaxis[2]} , 90},
|
||||
{IT_STRING | IT_CVAR, NULL, "Look Backward" , {.cvar = &cv_lookbackaxis[0]} , 90},
|
||||
{IT_STRING | IT_CVAR, NULL, "Spec. Look Up/Down" , {.cvar = &cv_lookaxis[2]} , 100},
|
||||
{IT_STRING | IT_CVAR, NULL, "Deadzone" , {.cvar = &cv_deadzone[2]} , 110},
|
||||
};
|
||||
|
||||
static menuitem_t OP_Joystick4Menu[] =
|
||||
|
|
@ -1224,7 +1230,9 @@ static menuitem_t OP_Joystick4Menu[] =
|
|||
{IT_STRING | IT_CVAR, NULL, "Brake" , {.cvar = &cv_brakeaxis[3]} , 60},
|
||||
{IT_STRING | IT_CVAR, NULL, "Drift" , {.cvar = &cv_driftaxis[3]} , 70},
|
||||
{IT_STRING | IT_CVAR, NULL, "Use Item" , {.cvar = &cv_fireaxis[3]} , 80},
|
||||
{IT_STRING | IT_CVAR, NULL, "Look Up/Down" , {.cvar = &cv_lookaxis[3]} , 90},
|
||||
{IT_STRING | IT_CVAR, NULL, "Look Backward" , {.cvar = &cv_lookbackaxis[0]} , 90},
|
||||
{IT_STRING | IT_CVAR, NULL, "Spec. Look Up/Down" , {.cvar = &cv_lookaxis[3]} , 100},
|
||||
{IT_STRING | IT_CVAR, NULL, "Deadzone" , {.cvar = &cv_deadzone[3]} , 110},
|
||||
};
|
||||
|
||||
static menuitem_t OP_JoystickSetMenu[] =
|
||||
|
|
@ -2576,7 +2584,8 @@ boolean M_Responder(event_t *ev)
|
|||
}
|
||||
else if (menuactive)
|
||||
{
|
||||
if (ev->type == ev_joystick && ev->data1 == 0 && joywait < I_GetTime())
|
||||
tic_t thistime = I_GetTime();
|
||||
if (ev->type == ev_joystick)
|
||||
{
|
||||
const INT32 jdeadzone = ((JOYAXISRANGE-1) * cv_deadzone[0].value) >> FRACBITS;
|
||||
if (ev->data3 != INT32_MAX)
|
||||
|
|
@ -2586,12 +2595,12 @@ boolean M_Responder(event_t *ev)
|
|||
if (ev->data3 < 0 && pjoyy >= 0)
|
||||
{
|
||||
ch = KEY_UPARROW;
|
||||
joywait = I_GetTime() + NEWTICRATE/7;
|
||||
joywait = thistime + NEWTICRATE/7;
|
||||
}
|
||||
else if (ev->data3 > 0 && pjoyy <= 0)
|
||||
{
|
||||
ch = KEY_DOWNARROW;
|
||||
joywait = I_GetTime() + NEWTICRATE/7;
|
||||
joywait = thistime + NEWTICRATE/7;
|
||||
}
|
||||
pjoyy = ev->data3;
|
||||
}
|
||||
|
|
@ -2606,12 +2615,12 @@ boolean M_Responder(event_t *ev)
|
|||
if (ev->data2 < 0 && pjoyx >= 0)
|
||||
{
|
||||
ch = KEY_LEFTARROW;
|
||||
joywait = I_GetTime() + NEWTICRATE/17;
|
||||
joywait = thistime + NEWTICRATE/17;
|
||||
}
|
||||
else if (ev->data2 > 0 && pjoyx <= 0)
|
||||
{
|
||||
ch = KEY_RIGHTARROW;
|
||||
joywait = I_GetTime() + NEWTICRATE/17;
|
||||
joywait = thistime + NEWTICRATE/17;
|
||||
}
|
||||
pjoyx = ev->data2;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -766,7 +766,9 @@ void Y_Ticker(void)
|
|||
|
||||
if (demo.recording)
|
||||
{
|
||||
if (demo.savemode == DSM_NOTSAVING && PlayerInputDown(1, gc_lookback))
|
||||
INT32 axis = PlayerJoyAxis(AXISLOOKBACK, 1);
|
||||
|
||||
if (demo.savemode == DSM_NOTSAVING && (PlayerInputDown(gc_lookback, 1) || (cv_usejoystick->value && axis > 0)))
|
||||
demo.savemode = DSM_TITLEENTRY;
|
||||
|
||||
if (demo.savemode == DSM_WILLSAVE || demo.savemode == DSM_WILLAUTOSAVE)
|
||||
|
|
|
|||
Loading…
Reference in a new issue