Minor splitscreen input fixes in the client module

This commit is contained in:
Marco Cawthorne 2019-01-29 08:51:32 +01:00
parent 546451338f
commit 0db9009c2f
6 changed files with 52 additions and 37 deletions

View File

@ -110,6 +110,18 @@ struct
int iHUDGrenadesSelected;
float fHUDWeaponSelectTime;
float fHUDWeaponSelected;
// Input
float fInputKeyCode;
float fInputKeyASCII;
float fInputKeyDown;
int iInputAttack2;
int iInputReload;
int iInputUse;
int iInputDuck;
float fInputSendNext;
} seats[4], *pSeat;
// Sound Stuff

View File

@ -153,9 +153,9 @@ float VGUI_Button( string sLabel, void() vFunction, vector vPosition, vector vSi
vLabelPos[0] = vPosition[0] + 16;
vLabelPos[1] = vPosition[1] + ( ( vSize[1] / 2 ) - 4 );
if ( ( iVGUIKey == fInputKeyCode ) ) {
if ( ( iVGUIKey == pSeat->fInputKeyCode ) ) {
vFunction();
fInputKeyCode = 0;
pSeat->fInputKeyCode = 0;
return TRUE;
}

View File

@ -52,7 +52,7 @@ Prints and acts as an input check for a single command
void VGUI_Radio_DrawCommand( float fIndex, float fMessage, vector vPos ) {
VGUI_Text( sprintf( "%d) %s", fIndex + 1, sRadioChat[ fMessage ] ), vPos, '12 12', FONT_CON );
if ( fInputKeyCode == ( fIndex + 49 ) ) {
if ( pSeat->fInputKeyCode == ( fIndex + 49 ) ) {
sendevent( "RadioMessage", "f", fMessage );
pSeat->fVGUI_Display = VGUI_NONE;
}
@ -112,7 +112,7 @@ void VGUI_Radio_Draw( void ) {
vPos_y += 20;
VGUI_Text( sprintf( "0) %s", _("VGUI_BACK") ), vPos, '12 12', FONT_CON );
if ( fInputKeyCode == 48 ) {
if ( pSeat->fInputKeyCode == 48 ) {
pSeat->fVGUI_Display = VGUI_NONE;
}
}

View File

@ -50,21 +50,9 @@ var float DECAL_GLASS;
var float SHADER_CULLED;
float fInputSendNext;
vector video_mins;
vector video_res;
// Input globals, feel free to use them since they are updated upon input
float fInputKeyCode;
float fInputKeyASCII;
float fInputKeyDown;
var int iInputAttack2;
var int iInputReload;
var int iInputUse;
var int iInputDuck;
// Input globals for the mouse
float fMouseClick;
vector mouse_pos;

View File

@ -236,25 +236,28 @@ Updates all our input related globals for use in other functions
float CSQC_InputEvent(float fEventType, float fKey, float fCharacter,
float fDeviceID)
{
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &seats[s];
switch(fEventType) {
case IE_KEYDOWN:
if (fKey == K_MOUSE1) {
fMouseClick = 1;
} else {
fInputKeyDown = 1;
pSeat->fInputKeyDown = 1;
}
fInputKeyCode = fKey;
fInputKeyASCII = fCharacter;
pSeat->fInputKeyCode = fKey;
pSeat->fInputKeyASCII = fCharacter;
break;
case IE_KEYUP:
if (fKey == K_MOUSE1) {
fMouseClick = 0;
} else {
fInputKeyDown = 0;
pSeat->fInputKeyDown = 0;
}
fInputKeyCode = 0;
fInputKeyASCII = 0;
pSeat->fInputKeyCode = 0;
pSeat->fInputKeyASCII = 0;
break;
case IE_MOUSEABS:
mouse_pos[0] = fKey;
@ -297,15 +300,15 @@ void CSQC_Input_Frame(void)
// If we are inside a VGUI, don't let the client do stuff outside
if ((pSeat->fVGUI_Display != VGUI_NONE)) {
fInputSendNext = time + 0.2;
pSeat->fInputSendNext = time + 0.2;
} else if ((pSeat->fHUDWeaponSelected) && (input_buttons & INPUT_BUTTON0)) {
HUD_DrawWeaponSelect_Trigger();
input_buttons = 0;
fInputSendNext = time + 0.2;
pSeat->fInputSendNext = time + 0.2;
}
if (fInputSendNext > time) {
if (pSeat->fInputSendNext > time) {
input_impulse = 0;
input_buttons = 0;
return;
@ -320,19 +323,19 @@ void CSQC_Input_Frame(void)
sendevent("Spraylogo", "");
}
if (iInputAttack2 == TRUE) {
if (pSeat->iInputAttack2 == TRUE) {
input_buttons |= INPUT_BUTTON3;
}
if (iInputReload == TRUE) {
if (pSeat->iInputReload == TRUE) {
input_buttons |= INPUT_BUTTON4;
}
if (iInputUse == TRUE) {
if (pSeat->iInputUse == TRUE) {
input_buttons |= INPUT_BUTTON5;
}
if (iInputDuck == TRUE) {
if (pSeat->iInputDuck == TRUE) {
input_buttons |= INPUT_BUTTON8;
}
@ -445,28 +448,28 @@ float CSQC_ConsoleCommand(string sCMD)
Sound_PlayVOX(sCMD);
break;
case "+attack2":
iInputAttack2 = TRUE;
pSeat->iInputAttack2 = TRUE;
break;
case "-attack2":
iInputAttack2 = FALSE;
pSeat->iInputAttack2 = FALSE;
break;
case "+reload":
iInputReload = TRUE;
pSeat->iInputReload = TRUE;
break;
case "-reload":
iInputReload = FALSE;
pSeat->iInputReload = FALSE;
break;
case "+use":
iInputUse = TRUE;
pSeat->iInputUse = TRUE;
break;
case "-use":
iInputUse = FALSE;
pSeat->iInputUse = FALSE;
break;
case "+duck":
iInputDuck = TRUE;
pSeat->iInputDuck = TRUE;
break;
case "-duck":
iInputDuck = FALSE;
pSeat->iInputDuck = FALSE;
break;
case "invnext":
HUD_DrawWeaponSelect_Back();

View File

@ -41,6 +41,18 @@ struct
// We can only carry one item per slot, so this is hacking around the last one
float fHUDWeaponSelected;
float fHUDWeaponSelectTime;
// Input
float fInputKeyCode;
float fInputKeyASCII;
float fInputKeyDown;
int iInputAttack2;
int iInputReload;
int iInputUse;
int iInputDuck;
float fInputSendNext;
} seats[4], *pSeat;
void HUD_DrawAmmo1(void);