From 2da4294ba5fa9e06407aee12ea8444b8f668c553 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 20 Nov 2019 22:01:44 +0100 Subject: [PATCH] - hooked up the event processing for Shadow Warrior, so keyboard input is working now. Mouse movement is not being processed yet. Also removed some leftover code from the old input system. --- source/common/console/d_event.cpp | 3 +- source/common/inputstate.h | 31 --------------- source/sw/src/anim.cpp | 5 +-- source/sw/src/draw.cpp | 13 ++++++ source/sw/src/game.cpp | 14 ++----- source/sw/src/menus.cpp | 66 +++++++++---------------------- source/sw/src/player.cpp | 6 --- source/sw/src/sector.cpp | 1 - source/sw/src/sprite.cpp | 10 +---- 9 files changed, 38 insertions(+), 111 deletions(-) diff --git a/source/common/console/d_event.cpp b/source/common/console/d_event.cpp index 4e28966d9..3846e5829 100644 --- a/source/common/console/d_event.cpp +++ b/source/common/console/d_event.cpp @@ -69,7 +69,8 @@ bool G_Responder (event_t *ev) } else { - return C_DoKey (ev, &Bindings, &DoubleBindings); + return + C_DoKey (ev, &Bindings, &DoubleBindings); } } if (cmd && cmd[0] == '+') diff --git a/source/common/inputstate.h b/source/common/inputstate.h index fc1b49ad5..834790ff7 100644 --- a/source/common/inputstate.h +++ b/source/common/inputstate.h @@ -304,37 +304,6 @@ public: }; -typedef enum -{ - dir_North, - dir_NorthEast, - dir_East, - dir_SouthEast, - dir_South, - dir_SouthWest, - dir_West, - dir_NorthWest, - dir_None -} direction; - -struct UserInput -{ - int32_t button0; - int32_t button1; - direction dir; -}; - -// Shadow Warrior still uses these. :( -inline void CONTROL_GetUserInput(UserInput* inp) -{ - -} - -inline void CONTROL_ClearUserInput(UserInput* inp) -{ - -} - extern InputState inputState; diff --git a/source/sw/src/anim.cpp b/source/sw/src/anim.cpp index 047732631..052822e0c 100644 --- a/source/sw/src/anim.cpp +++ b/source/sw/src/anim.cpp @@ -268,8 +268,7 @@ playanm(short anim_num) unsigned char *animbuf; int i, j, k, length = 0, numframes = 0; int32_t handle = -1; - UserInput uinfo = { FALSE, FALSE, dir_None }; - + ANIMnum = anim_num; inputState.keyFlushChars(); @@ -318,8 +317,6 @@ playanm(short anim_num) while (totalclock < ototalclock) { handleevents(); - CONTROL_GetUserInput(&uinfo); - CONTROL_ClearUserInput(&uinfo); switch (ANIMnum) { case ANIM_INTRO: diff --git a/source/sw/src/draw.cpp b/source/sw/src/draw.cpp index 0c39cb82d..de415fbf7 100644 --- a/source/sw/src/draw.cpp +++ b/source/sw/src/draw.cpp @@ -2247,6 +2247,12 @@ drawscreen(PLAYERp pp) PreUpdatePanel(); + if (r_usenewaspect) + { + newaspect_enable = 1; + videoSetCorrectedAspect(); + } + smoothratio = min(max(((int32_t) totalclock - ototalclock) * (65536 / synctics),0),65536); if (!ScreenSavePic) @@ -2453,6 +2459,13 @@ drawscreen(PLAYERp pp) SET(sprite[j].cstat, CSTAT_SPRITE_ALIGNMENT_FLOOR); } + if (r_usenewaspect) + { + newaspect_enable = 0; + videoSetCorrectedAspect(); + } + + // if doing a screen save don't need to process the rest if (ScreenSavePic) { diff --git a/source/sw/src/game.cpp b/source/sw/src/game.cpp index 5b42d4c55..da60d71c7 100644 --- a/source/sw/src/game.cpp +++ b/source/sw/src/game.cpp @@ -1612,8 +1612,6 @@ void LogoLevel(void) { char called; int fin; - UserInput uinfo = { FALSE, FALSE, dir_None }; - DSPRINTF(ds,"LogoLevel..."); MONO_PRINT(ds); @@ -1652,8 +1650,6 @@ void LogoLevel(void) while (TRUE) { handleevents(); - CONTROL_GetUserInput(&uinfo); - CONTROL_ClearUserInput(&uinfo); if (quitevent) { QuitFlag = TRUE; break; } // taken from top of faketimerhandler @@ -2259,7 +2255,6 @@ void BonusScreen(PLAYERp pp) int Tics = 0; int line = 0; SWBOOL BonusDone; - UserInput uinfo = { FALSE, FALSE, dir_None }; if (Level < 0) Level = 0; @@ -2298,8 +2293,6 @@ void BonusScreen(PLAYERp pp) } ototalclock += limit; - CONTROL_GetUserInput(&uinfo); - CONTROL_ClearUserInput(&uinfo); if (I_GeneralTrigger()) { I_GeneralTriggerClear(); @@ -2905,16 +2898,15 @@ void RunLevel(void) { handleevents(); OSD_DispatchQueued(); + D_ProcessEvents(); faketimerhandler(); if (quitevent) QuitFlag = TRUE; - //MONO_PRINT("Before MoveLoop"); MoveLoop(); - //MONO_PRINT("After MoveLoop"); - //MONO_PRINT("Before DrawScreen"); + + drawscreen(Player + screenpeek); - //MONO_PRINT("After DrawScreen"); if (QuitFlag) break; diff --git a/source/sw/src/menus.cpp b/source/sw/src/menus.cpp index 5642f1e8d..aee245b8a 100644 --- a/source/sw/src/menus.cpp +++ b/source/sw/src/menus.cpp @@ -44,6 +44,7 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms #include "pal.h" #include "demo.h" #include "input.h" +#include "keydef.h" #include "gamecontrol.h" #include "gamedefs.h" @@ -558,7 +559,7 @@ int SENSITIVITY = SENSE_MIN + (SENSE_DEFAULT *SENSE_MUL); #define VOL_MUL 16 // User input data for all devices -UserInput mnu_input, mnu_input_buffered, order_input_buffered; +//UserInput order_input_buffered; // Menu function call back pointer for multiplay menus SWBOOL(*cust_callback)(UserCall call, MenuItem_p item); @@ -717,14 +718,10 @@ SWBOOL MNU_KeySetupCustom(UserCall call, MenuItem *item) const char *morestr = "More..."; const char *p; - UserInput inpt = {FALSE,FALSE,dir_None}; - CONTROL_GetUserInput(&inpt); - - if (inputState.GetKeyStatus(KEYSC_ESC) || inpt.button1) + if (inputState.GetKeyStatus(KEYSC_ESC)) { inputState.ClearKeyStatus(sc_Escape); cust_callback = NULL; - CONTROL_ClearUserInput(&inpt); return TRUE; } else if (inputState.GetKeyStatus(sc_Delete)) @@ -781,7 +778,6 @@ SWBOOL MNU_KeySetupCustom(UserCall call, MenuItem *item) currentcol = 0; } - CONTROL_ClearUserInput(&inpt); if (NUMGAMEFUNCTIONS > PGSIZ) { @@ -843,6 +839,7 @@ SWBOOL MNU_KeySetupCustom(UserCall call, MenuItem *item) static int MNU_SelectButtonFunction(const char *buttonname, int *currentfunc) { + // Todo: Branch off to the generic keybind menu. const int PGSIZ = 9; const char *strs[] = { "Select the function to assign to", "%s", "or ESCAPE to cancel." }; int topitem = 0, botitem = NUMGAMEFUNCTIONS-1; @@ -850,10 +847,7 @@ static int MNU_SelectButtonFunction(const char *buttonname, int *currentfunc) short w, h=0; int returnval = 0; - UserInput inpt = {FALSE,FALSE,dir_None}; - CONTROL_GetUserInput(&inpt); - - if (inpt.button1) + if (inputState.GetKeyStatus(sc_Escape)) { inputState.ClearKeyStatus(sc_Escape); returnval = -1; @@ -890,13 +884,12 @@ static int MNU_SelectButtonFunction(const char *buttonname, int *currentfunc) I_MenuUpClear(); *currentfunc = max(0, *currentfunc - 1); } - else if (inpt.dir == dir_South) + else if (I_MenuDown()) { I_MenuDownClear(); *currentfunc = min(NUMGAMEFUNCTIONS - 1, *currentfunc + 1); } - CONTROL_ClearUserInput(&inpt); if (NUMGAMEFUNCTIONS-1 > PGSIZ) { @@ -1262,9 +1255,7 @@ SWBOOL MNU_OrderCustom(UserCall call, MenuItem *item) { static signed char on_screen = 0,last_screen = 0; - UserInput order_input; static int limitmove=0; - UserInput tst_input; SWBOOL select_held = FALSE; int zero = 0; static SWBOOL DidOrderSound = FALSE; @@ -1332,27 +1323,20 @@ MNU_OrderCustom(UserCall call, MenuItem *item) wanghandle = PlaySound(DIGI_WANGORDER2, &zero, &zero, &zero, v3df_dontpan); } - order_input.button0 = order_input.button1 = FALSE; - order_input.dir = dir_None; - - // Zero out the input structure - tst_input.button0 = tst_input.button1 = FALSE; - tst_input.dir = dir_None; - if (!select_held) { - CONTROL_GetUserInput(&tst_input); //order_input_buffered.dir = tst_input.dir; // Support a few other keys too if (inputState.GetKeyStatus(KEYSC_SPACE)||inputState.GetKeyStatus(KEYSC_ENTER)) { inputState.ClearKeyStatus(KEYSC_SPACE); inputState.ClearKeyStatus(KEYSC_ENTER); - tst_input.dir = dir_South; + //tst_input.dir = dir_South; } } - if (order_input_buffered.button0 || order_input_buffered.button1 || order_input_buffered.dir != dir_None) +#if 0 + if (inputState.GetKeyStatus(KEY_MOUSE1)) { if (tst_input.button0 == order_input_buffered.button0 && tst_input.button1 == order_input_buffered.button1 && @@ -1383,8 +1367,9 @@ MNU_OrderCustom(UserCall call, MenuItem *item) order_input_buffered.button1 = tst_input.button1; order_input_buffered.dir = tst_input.dir; } +#endif - if (!inputState.GetKeyStatus(KEYSC_ESC) && !order_input_buffered.button1) + if (!inputState.GetKeyStatus(KEYSC_ESC)) { cust_callback = MNU_OrderCustom; cust_callback_call = call; @@ -1729,7 +1714,7 @@ MNU_QuitCustom(UserCall call, MenuItem_p item) if (!ret) { - if (!mnu_input.button1 && !inputState.GetKeyStatus(sc_N)) + if (!inputState.GetKeyStatus(KEY_MOUSE1) && !inputState.GetKeyStatus(sc_N)) { cust_callback = MNU_QuitCustom; cust_callback_call = call; @@ -1747,7 +1732,7 @@ MNU_QuitCustom(UserCall call, MenuItem_p item) ExitMenus(); } - if (inputState.GetKeyStatus(sc_Y) || inputState.GetKeyStatus(sc_Enter) || mnu_input.button0) + if (inputState.GetKeyStatus(sc_Y) || inputState.GetKeyStatus(sc_Enter) || inputState.GetKeyStatus(KEY_MOUSE1)) { if (CommPlayers >= 2) MultiPlayQuitFlag = TRUE; @@ -2197,7 +2182,6 @@ signed char MNU_InputSmallString(char *name, short pix_width) { char ch; short w, h; - UserInput con_input; #define ascii_backspace 8 #define ascii_esc 27 @@ -2205,14 +2189,11 @@ signed char MNU_InputSmallString(char *name, short pix_width) if (!MoveSkip4 && !MessageInputMode) { - con_input.dir = dir_None; - CONTROL_GetUserInput(&con_input); - - if (con_input.dir == dir_North) + if (I_MenuUp()) { CON_CommandHistory(1); } - else if (con_input.dir == dir_South) + else if (I_MenuDown()) { CON_CommandHistory(-1); } @@ -2290,11 +2271,7 @@ static SWBOOL MNU_Dialog(void) y += (h + 3); } - mnu_input.button0 = mnu_input.button1 = FALSE; - CONTROL_ClearUserInput(&mnu_input); - CONTROL_GetUserInput(&mnu_input); - - if (inputState.GetKeyStatus(sc_Y) || inputState.GetKeyStatus(sc_Enter) || mnu_input.button0) + if (inputState.GetKeyStatus(sc_Y) || inputState.GetKeyStatus(sc_Enter) || inputState.GetKeyStatus(KEY_MOUSE1)) return TRUE; else return FALSE; @@ -3655,10 +3632,8 @@ MNU_SetupMenu(void) menuarray[0] = currentmenu = rootmenu; if (ControlPanelType == ct_mainmenu) - mnu_input_buffered.button0 = mnu_input_buffered.button1 = FALSE; - mnu_input_buffered.dir = dir_None; - order_input_buffered.button0 = order_input_buffered.button1 = FALSE; - order_input_buffered.dir = dir_None; + //order_input_buffered.button0 = order_input_buffered.button1 = FALSE; + //order_input_buffered.dir = dir_None; ResetKeys(); // custom cust_callback starts out as null @@ -4158,10 +4133,6 @@ void MNU_DoMenu( CTLType type, PLAYERp pp ) //ControlPanelType = type; SetupMenu(); - // Zero out the input structure - mnu_input.button0 = mnu_input.button1 = FALSE; - mnu_input.dir = dir_None; - // should not get input if you are editing a save game slot if (totalclock < limitmove) limitmove = (int32_t) totalclock; @@ -4216,7 +4187,6 @@ void MNU_DoMenu( CTLType type, PLAYERp pp ) if (!FX_SoundActive(handle4)) handle4 = PlaySound(DIGI_STAR,&zero,&zero,&zero,v3df_dontpan); resetitem = TRUE; - mnu_input_buffered.button0 = mnu_input_buffered.button1 = FALSE; } else resetitem = FALSE; diff --git a/source/sw/src/player.cpp b/source/sw/src/player.cpp index 904392548..5da897c09 100644 --- a/source/sw/src/player.cpp +++ b/source/sw/src/player.cpp @@ -8050,12 +8050,8 @@ domovethings(void) JS_ProcessEchoSpot(); } - FAKETIMERHANDLER(); - SpriteControl(); - FAKETIMERHANDLER(); - TRAVERSE_CONNECT(pnum) { extern short screenpeek; @@ -8085,8 +8081,6 @@ domovethings(void) #endif } - FAKETIMERHANDLER(); - // do for moving sectors DoPlayerSectorUpdatePreMove(pp); ChopsCheck(pp); diff --git a/source/sw/src/sector.cpp b/source/sw/src/sector.cpp index 85bf8e668..0f0e5a5a8 100644 --- a/source/sw/src/sector.cpp +++ b/source/sw/src/sector.cpp @@ -3306,7 +3306,6 @@ void movelava(char *dapic) for (x = LAVASIZ - 1; x >= 0; x--) { - FAKETIMERHANDLER(); offs = (x + 1) * (LAVASIZ + 2) + 1; ptr = (char *)((x << LAVALOGSIZ) + (intptr_t) dapic); diff --git a/source/sw/src/sprite.cpp b/source/sw/src/sprite.cpp index 9c68a9a27..c3fb96ab2 100644 --- a/source/sw/src/sprite.cpp +++ b/source/sw/src/sprite.cpp @@ -6788,8 +6788,7 @@ SpriteControl(void) #endif } - FAKETIMERHANDLER(); - + // Items and skip2 things if (MoveSkip2 == 0) { @@ -6812,8 +6811,6 @@ SpriteControl(void) } } - FAKETIMERHANDLER(); - if (MoveSkip2 == 0) // limit to 20 times a second { // move bad guys around @@ -6868,9 +6865,6 @@ SpriteControl(void) } } - FAKETIMERHANDLER(); - - // Skip4 things if (MoveSkip4 == 0) // limit to 10 times a second { @@ -6893,8 +6887,6 @@ SpriteControl(void) } } - FAKETIMERHANDLER(); - TRAVERSE_SPRITE_STAT(headspritestat[STAT_NO_STATE], i, nexti) { if (User[i] && User[i]->ActorActionFunc)