- fixed keybinding and mouse cursor display.

- fixed some merge issues in Shadow Warrior.
This commit is contained in:
Christoph Oelckers 2019-12-05 21:39:02 +01:00
parent 223c6d628e
commit db425a1228
8 changed files with 24 additions and 24 deletions

View file

@ -145,7 +145,7 @@ void joyScanDevices(void);
void mouseInit(void); void mouseInit(void);
void mouseUninit(void); void mouseUninit(void);
void mouseGrabInput(bool grab); void mouseGrabInput(bool grab);
void mouseLockToWindow(char a); void mouseLockToWindow(bool a);
void mouseMoveToCenter(void); void mouseMoveToCenter(void);
void joyReadButtons(int32_t *pResult); void joyReadButtons(int32_t *pResult);

View file

@ -33,10 +33,14 @@
#include "i_time.h" #include "i_time.h"
#include "c_dispatch.h" #include "c_dispatch.h"
#include "d_gui.h" #include "d_gui.h"
#include "menu.h"
#include "utf8.h" #include "utf8.h"
#include "imgui.h" #include "imgui.h"
#include "imgui_impl_sdl.h" #include "imgui_impl_sdl.h"
#include "imgui_impl_opengl3.h" #include "imgui_impl_opengl3.h"
#ifndef NETCODE_DISABLE #ifndef NETCODE_DISABLE
#include "enet.h" #include "enet.h"
#endif #endif
@ -960,18 +964,9 @@ void mouseGrabInput(bool grab)
g_mouseGrabbed = grab; g_mouseGrabbed = grab;
inputState.MouseSetPos(0, 0); inputState.MouseSetPos(0, 0);
} SDL_ShowCursor(!grab ? SDL_ENABLE : SDL_DISABLE);
if (grab) GUICapture &= ~1;
void mouseLockToWindow(char a) else GUICapture |= 1;
{
if (!(a & 2))
{
mouseGrabInput(a);
g_mouseLockedToWindow = g_mouseGrabbed;
}
// Fixme
SDL_ShowCursor(GUICapture ? SDL_ENABLE : SDL_DISABLE);
} }
// //
@ -1891,7 +1886,7 @@ int32_t handleevents_pollsdl(void)
{ {
code = ev.text.text[j]; code = ev.text.text[j];
// Fixme: Send an EV_GUI_Event instead and properly deal with Unicode. // Fixme: Send an EV_GUI_Event instead and properly deal with Unicode.
if (GUICapture & 1) if ((GUICapture & 1) && menuactive != MENU_WaitKey)
{ {
event_t ev = { EV_GUI_Event, EV_GUI_Char, int16_t(j), !!(SDL_GetModState() & KMOD_ALT) }; event_t ev = { EV_GUI_Event, EV_GUI_Char, int16_t(j), !!(SDL_GetModState() & KMOD_ALT) };
D_PostEvent(&ev); D_PostEvent(&ev);
@ -1903,7 +1898,7 @@ int32_t handleevents_pollsdl(void)
case SDL_KEYDOWN: case SDL_KEYDOWN:
case SDL_KEYUP: case SDL_KEYUP:
{ {
if (GUICapture & 1) if ((GUICapture & 1) && menuactive != MENU_WaitKey)
{ {
event_t event = {}; event_t event = {};
event.type = EV_GUI_Event; event.type = EV_GUI_Event;

View file

@ -55,6 +55,7 @@
#include "inputstate.h" #include "inputstate.h"
#include "i_time.h" #include "i_time.h"
#include "gamecvars.h" #include "gamecvars.h"
#include "baselayer.h"
#define LEFTMARGIN 8 #define LEFTMARGIN 8
@ -1317,13 +1318,14 @@ void C_ToggleConsole ()
HistPos = NULL; HistPos = NULL;
TabbedLast = false; TabbedLast = false;
TabbedList = false; TabbedList = false;
GUICapture |= 1; mouseGrabInput(false);
} }
else //if (gamestate != GS_FULLCONSOLE && gamestate != GS_STARTUP) else //if (gamestate != GS_FULLCONSOLE && gamestate != GS_STARTUP)
{ {
ConsoleState = c_rising; ConsoleState = c_rising;
C_FlushDisplay (); C_FlushDisplay ();
GUICapture &= ~1; mouseGrabInput(true);
} }
} }

View file

@ -51,6 +51,7 @@
#include "fx_man.h" #include "fx_man.h"
#include "pragmas.h" #include "pragmas.h"
#include "build.h" #include "build.h"
#include "baselayer.h"
void RegisterDukeMenus(); void RegisterDukeMenus();
void RegisterRedneckMenus(); void RegisterRedneckMenus();
@ -372,7 +373,7 @@ void M_StartControlPanel (bool makeSound)
} }
C_HideConsole (); // [RH] Make sure console goes bye bye. C_HideConsole (); // [RH] Make sure console goes bye bye.
GUICapture |= 1; mouseGrabInput(false);
menuactive = MENU_On; menuactive = MENU_On;
// Pause sound effects before we play the menu switch sound. // Pause sound effects before we play the menu switch sound.
// That way, it won't be paused. // That way, it won't be paused.
@ -814,6 +815,7 @@ void M_Ticker (void)
if (DMenu::MenuTime & 3) return; if (DMenu::MenuTime & 3) return;
if (DMenu::CurrentMenu != NULL && menuactive != MENU_Off) if (DMenu::CurrentMenu != NULL && menuactive != MENU_Off)
{ {
D_ProcessEvents(); // The main loop is blocked when the menu is open and cannot dispatch the events.
if (transition.previous) transition.previous->Ticker(); if (transition.previous) transition.previous->Ticker();
DMenu::CurrentMenu->Ticker(); DMenu::CurrentMenu->Ticker();
@ -898,7 +900,7 @@ void M_ClearMenus ()
} }
DMenu::CurrentMenu = nullptr; DMenu::CurrentMenu = nullptr;
menuactive = MENU_Off; menuactive = MENU_Off;
GUICapture &= ~1; mouseGrabInput(true);
gi->MenuClosed(); gi->MenuClosed();
} }

View file

@ -370,6 +370,7 @@ public:
pKey = keyptr; pKey = keyptr;
SetMenuMessage(1); SetMenuMessage(1);
menuactive = MENU_WaitKey; // There should be a better way to disable GUI capture... menuactive = MENU_WaitKey; // There should be a better way to disable GUI capture...
mouseGrabInput(true);
} }
bool TranslateKeyboardEvents() override bool TranslateKeyboardEvents() override
@ -396,9 +397,11 @@ public:
{ {
*pKey = ev->data1; *pKey = ev->data1;
menuactive = MENU_On; menuactive = MENU_On;
mouseGrabInput(false);
SetMenuMessage(0); SetMenuMessage(0);
auto p = mParentMenu;
Close(); Close();
mParentMenu->MenuEvent((ev->data1 == KEY_ESCAPE)? MKEY_Abort : MKEY_Input, 0); p->MenuEvent((ev->data1 == KEY_ESCAPE)? MKEY_Abort : MKEY_Input, 0);
return true; return true;
} }
return false; return false;

View file

@ -2591,7 +2591,7 @@ DrawCompass(PLAYERp pp)
start_ang = NORM_CANG(start_ang - 4); start_ang = NORM_CANG(start_ang - 4);
flags = ROTATE_SPRITE_SCREEN_CLIP | ROTATE_SPRITE_CORNER; flags = ROTATE_SPRITE_SCREEN_CLIP | ROTATE_SPRITE_CORNER;
if (RedrawCompass && !UsingMenus) if (RedrawCompass && !M_Active())
{ {
RedrawCompass = FALSE; RedrawCompass = FALSE;
SET(flags, ROTATE_SPRITE_ALL_PAGES); SET(flags, ROTATE_SPRITE_ALL_PAGES);

View file

@ -104,7 +104,6 @@ typedef enum
ct_quitmenu, ct_ordermenu, ct_episodemenu, ct_max ct_quitmenu, ct_ordermenu, ct_episodemenu, ct_max
} CTLType; } CTLType;
extern SWBOOL UsingMenus;
extern int SENSITIVITY; extern int SENSITIVITY;
extern CTLType ControlPanelType; extern CTLType ControlPanelType;
extern int16_t MenuTextShade; extern int16_t MenuTextShade;

View file

@ -7597,8 +7597,7 @@ pDisplaySprites(PLAYERp pp)
} }
#if 1 #if 1
extern SWBOOL UsingMenus; if (TEST(psp->flags, PANF_KILL_AFTER_SHOW) && !TEST(psp->flags, PANF_NOT_ALL_PAGES) && !M_Active())
if (TEST(psp->flags, PANF_KILL_AFTER_SHOW) && !TEST(psp->flags, PANF_NOT_ALL_PAGES) && !UsingMenus)
{ {
psp->numpages = 0; psp->numpages = 0;
SET(flags, ROTATE_SPRITE_ALL_PAGES); SET(flags, ROTATE_SPRITE_ALL_PAGES);