mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 11:10:47 +00:00
- mouse input works again after cleaning out the remaining cruft of the old input code.
This commit is contained in:
parent
1b9a2f5932
commit
e8d7777f4a
9 changed files with 57 additions and 242 deletions
|
@ -43,11 +43,6 @@ bool bSilentAim = false;
|
||||||
|
|
||||||
int iTurnCount = 0;
|
int iTurnCount = 0;
|
||||||
|
|
||||||
int32_t GetTime(void)
|
|
||||||
{
|
|
||||||
return (int32_t)totalclock;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ctrlInit(void)
|
void ctrlInit(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,64 +45,14 @@ int32_t videoUpdatePalette(int32_t start, int32_t num);
|
||||||
|
|
||||||
void videoBeginDrawing(void);
|
void videoBeginDrawing(void);
|
||||||
|
|
||||||
|
|
||||||
#define GAMMA_CALC ((int32_t)(min(max((float)((vid_gamma - 1.0f) * 10.0f), 0.f), 15.f)))
|
|
||||||
|
|
||||||
#ifdef USE_OPENGL
|
|
||||||
extern int osdcmd_glinfo(osdcmdptr_t parm);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
vec2_t CONSTEXPR const g_defaultVideoModes []
|
|
||||||
= { { 2560, 1440 }, { 2560, 1200 }, { 2560, 1080 }, { 1920, 1440 }, { 1920, 1200 }, { 1920, 1080 }, { 1680, 1050 },
|
|
||||||
{ 1600, 1200 }, { 1600, 900 }, { 1366, 768 }, { 1280, 1024 }, { 1280, 960 }, { 1280, 720 }, { 1152, 864 },
|
|
||||||
{ 1024, 768 }, { 1024, 600 }, { 800, 600 }, { 640, 480 }, { 640, 400 }, { 512, 384 }, { 480, 360 },
|
|
||||||
{ 400, 300 }, { 320, 240 }, { 320, 200 }, { 0, 0 } };
|
|
||||||
|
|
||||||
extern char inputdevices;
|
|
||||||
|
|
||||||
// keys
|
|
||||||
#define KEYFIFOSIZ 64
|
|
||||||
|
|
||||||
// mouse
|
|
||||||
|
|
||||||
// joystick
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int32_t *pAxis;
|
|
||||||
int32_t *pHat;
|
|
||||||
void (*pCallback)(int32_t, int32_t);
|
|
||||||
int32_t bits;
|
|
||||||
int32_t numAxes;
|
|
||||||
int32_t numBalls;
|
|
||||||
int32_t numButtons;
|
|
||||||
int32_t numHats;
|
|
||||||
int32_t isGameController;
|
|
||||||
} controllerinput_t;
|
|
||||||
|
|
||||||
extern controllerinput_t joystick;
|
|
||||||
|
|
||||||
extern int32_t qsetmode;
|
extern int32_t qsetmode;
|
||||||
|
|
||||||
#define in3dmode() (qsetmode==200)
|
#define in3dmode() (qsetmode==200)
|
||||||
|
|
||||||
extern int32_t g_logFlushWindow;
|
extern int32_t g_logFlushWindow;
|
||||||
|
|
||||||
void I_StartTic();
|
|
||||||
|
|
||||||
inline int32_t handleevents(void)
|
|
||||||
{
|
|
||||||
timerUpdateClock();
|
|
||||||
I_StartTic();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void mouseGrabInput(bool grab);
|
void mouseGrabInput(bool grab);
|
||||||
|
|
||||||
extern int32_t inputchecked;
|
|
||||||
|
|
||||||
void getScreen(uint8_t* imgBuf);
|
void getScreen(uint8_t* imgBuf);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -12,20 +12,8 @@
|
||||||
#include "d_event.h"
|
#include "d_event.h"
|
||||||
#include "../../glbackend/glbackend.h"
|
#include "../../glbackend/glbackend.h"
|
||||||
|
|
||||||
int32_t g_borderless=2;
|
|
||||||
int GUICapture = false;
|
int GUICapture = false;
|
||||||
|
|
||||||
// input
|
|
||||||
char inputdevices = 0;
|
|
||||||
|
|
||||||
|
|
||||||
bool g_mouseEnabled;
|
|
||||||
bool g_mouseGrabbed;
|
|
||||||
bool g_mouseInsideWindow = 1;
|
|
||||||
bool g_mouseLockedToWindow = 1;
|
|
||||||
|
|
||||||
controllerinput_t joystick;
|
|
||||||
|
|
||||||
|
|
||||||
// Calculate ylookup[] and call setvlinebpl()
|
// Calculate ylookup[] and call setvlinebpl()
|
||||||
void calc_ylookup(int32_t bpl, int32_t lastyidx)
|
void calc_ylookup(int32_t bpl, int32_t lastyidx)
|
||||||
|
|
|
@ -72,13 +72,9 @@ unsigned char syncstate;
|
||||||
//#define SDL_WM_GrabInput(x) SDL_WM_GrabInput(SDL_GRAB_OFF)
|
//#define SDL_WM_GrabInput(x) SDL_WM_GrabInput(SDL_GRAB_OFF)
|
||||||
//#define SDL_ShowCursor(x) SDL_ShowCursor(SDL_ENABLE)
|
//#define SDL_ShowCursor(x) SDL_ShowCursor(SDL_ENABLE)
|
||||||
|
|
||||||
#define SURFACE_FLAGS (SDL_SWSURFACE|SDL_HWPALETTE|SDL_HWACCEL)
|
|
||||||
|
|
||||||
// undefine to restrict windowed resolutions to conventional sizes
|
// undefine to restrict windowed resolutions to conventional sizes
|
||||||
#define ANY_WINDOWED_SIZE
|
#define ANY_WINDOWED_SIZE
|
||||||
|
|
||||||
// fix for mousewheel
|
|
||||||
int32_t inputchecked = 0;
|
|
||||||
bool screenshot_requested;
|
bool screenshot_requested;
|
||||||
|
|
||||||
char appactive=1, novideo=0;
|
char appactive=1, novideo=0;
|
||||||
|
|
|
@ -132,21 +132,12 @@ void D_PostEvent (const event_t *ev)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ev->type == EV_Mouse && GUICapture == 0 && appactive && g_mouseGrabbed)
|
if (ev->type == EV_Mouse && GUICapture == 0 && appactive)
|
||||||
{
|
{
|
||||||
inputState.MouseAddToPos(ev->x / 3, -ev->y / 2);
|
inputState.MouseAddToPos(ev->x / 3, -ev->y / 2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (ev->type == EV_GUI_Event && ev->subtype == EV_GUI_MouseMove && appactive && GUICapture == 0 && !g_mouseGrabbed)
|
|
||||||
{
|
|
||||||
inputState.MouseSetAbs(ev->data1, ev->data2);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add the key to the global keyboard state.
|
|
||||||
// This is probably the biggest roadblock with the input system as it undermines a proper event driven approach.
|
|
||||||
// Too much code depends on just checking this instead of waiting for events to happen.
|
|
||||||
// Here's also definitely not the best place to maintain the keyboard state but right now it's unavoidable to do this outside the event processing because so much code depends on it.
|
|
||||||
inputState.AddEvent(ev);
|
inputState.AddEvent(ev);
|
||||||
|
|
||||||
// Also add it to the event queue.
|
// Also add it to the event queue.
|
||||||
|
|
|
@ -3,26 +3,10 @@
|
||||||
#include "build.h"
|
#include "build.h"
|
||||||
#include "gamecvars.h"
|
#include "gamecvars.h"
|
||||||
|
|
||||||
int32_t InputState::mouseReadAbs(vec2_t * const pResult)
|
|
||||||
{
|
|
||||||
auto pInput = &g_mouseAbs;
|
|
||||||
if (!g_mouseEnabled || !appactive || !g_mouseInsideWindow || GUICapture)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
int32_t const xwidth = max(scale(240<<16, screen->GetWidth(), screen->GetHeight()), 320<<16);
|
|
||||||
|
|
||||||
pResult->x = scale(pInput->x, xwidth, xres) - ((xwidth>>1) - (320<<15));
|
|
||||||
pResult->y = scale(pInput->y, 200<<16, yres);
|
|
||||||
|
|
||||||
pResult->y = divscale16(pResult->y - (200<<15), rotatesprite_yxaspect) + (200<<15) - rotatesprite_y_offset;
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void InputState::GetMouseDelta(ControlInfo * info)
|
void InputState::GetMouseDelta(ControlInfo * info)
|
||||||
{
|
{
|
||||||
vec2_t input;
|
vec2_t input;
|
||||||
if (!g_mouseEnabled || !g_mouseGrabbed || !appactive)
|
if (!appactive)
|
||||||
{
|
{
|
||||||
input = {0,0};
|
input = {0,0};
|
||||||
return;
|
return;
|
||||||
|
@ -78,3 +62,56 @@ void InputState::AddEvent(const event_t *ev)
|
||||||
if (ev->data2) keySetChar(ev->data2);
|
if (ev->data2) keySetChar(ev->data2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void I_StartTic();
|
||||||
|
|
||||||
|
int32_t handleevents(void)
|
||||||
|
{
|
||||||
|
timerUpdateClock();
|
||||||
|
|
||||||
|
// The mouse wheel is not a real key so in order to be "pressed" it may only be cleared at the end of the tic (or the start of the next.)
|
||||||
|
if (inputState.GetKeyStatus(KEY_MWHEELUP))
|
||||||
|
{
|
||||||
|
event_t ev = { EV_KeyUp, 0, (int16_t)KEY_MWHEELUP };
|
||||||
|
D_PostEvent(&ev);
|
||||||
|
}
|
||||||
|
if (inputState.GetKeyStatus(KEY_MWHEELDOWN))
|
||||||
|
{
|
||||||
|
event_t ev = { EV_KeyUp, 0, (int16_t)KEY_MWHEELDOWN };
|
||||||
|
D_PostEvent(&ev);
|
||||||
|
}
|
||||||
|
if (inputState.GetKeyStatus(KEY_MWHEELLEFT))
|
||||||
|
{
|
||||||
|
event_t ev = { EV_KeyUp, 0, (int16_t)KEY_MWHEELLEFT };
|
||||||
|
D_PostEvent(&ev);
|
||||||
|
}
|
||||||
|
if (inputState.GetKeyStatus(KEY_MWHEELRIGHT))
|
||||||
|
{
|
||||||
|
event_t ev = { EV_KeyUp, 0, (int16_t)KEY_MWHEELRIGHT };
|
||||||
|
D_PostEvent(&ev);
|
||||||
|
}
|
||||||
|
|
||||||
|
I_StartTic();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CONTROL_GetInput(ControlInfo* info)
|
||||||
|
{
|
||||||
|
memset(info, 0, sizeof(ControlInfo));
|
||||||
|
|
||||||
|
if (in_mouse)
|
||||||
|
inputState.GetMouseDelta(info);
|
||||||
|
|
||||||
|
if (in_joystick)
|
||||||
|
{
|
||||||
|
// Handle joysticks/game controllers.
|
||||||
|
float joyaxes[NUM_JOYAXIS];
|
||||||
|
|
||||||
|
I_GetAxes(joyaxes);
|
||||||
|
|
||||||
|
info->dyaw += joyaxes[JOYAXIS_Yaw];
|
||||||
|
info->dx += joyaxes[JOYAXIS_Side];
|
||||||
|
info->dz += joyaxes[JOYAXIS_Forward];
|
||||||
|
info->dpitch += joyaxes[JOYAXIS_Pitch];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -17,39 +17,6 @@ extern int GUICapture;
|
||||||
|
|
||||||
// This encapsulates the entire game-readable input state which previously was spread out across several files.
|
// This encapsulates the entire game-readable input state which previously was spread out across several files.
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
MAXMOUSEBUTTONS = 10,
|
|
||||||
};
|
|
||||||
|
|
||||||
extern bool g_mouseGrabbed;
|
|
||||||
extern bool g_mouseEnabled;
|
|
||||||
extern bool g_mouseInsideWindow;
|
|
||||||
extern bool g_mouseLockedToWindow;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
enum EMouseBits
|
|
||||||
{
|
|
||||||
LEFT_MOUSE = 1,
|
|
||||||
RIGHT_MOUSE = 2,
|
|
||||||
MIDDLE_MOUSE = 4,
|
|
||||||
THUMB_MOUSE = 8,
|
|
||||||
WHEELUP_MOUSE = 16,
|
|
||||||
WHEELDOWN_MOUSE= 32,
|
|
||||||
THUMB2_MOUSE = 64,
|
|
||||||
WHEELLEFT_MOUSE = 128,
|
|
||||||
WHEELRIGHT_MOUSE = 256,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
MOUSE_IDLE = 0,
|
|
||||||
MOUSE_PRESSED,
|
|
||||||
MOUSE_HELD,
|
|
||||||
MOUSE_RELEASED,
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ControlInfo
|
struct ControlInfo
|
||||||
{
|
{
|
||||||
int32_t dx;
|
int32_t dx;
|
||||||
|
@ -82,7 +49,6 @@ class InputState
|
||||||
kb_scancode KB_LastScan;
|
kb_scancode KB_LastScan;
|
||||||
|
|
||||||
vec2_t g_mousePos;
|
vec2_t g_mousePos;
|
||||||
vec2_t g_mouseAbs;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -241,17 +207,12 @@ public:
|
||||||
g_mousePos.x += x;
|
g_mousePos.x += x;
|
||||||
g_mousePos.y += y;
|
g_mousePos.y += y;
|
||||||
}
|
}
|
||||||
void MouseSetAbs(int x, int y)
|
|
||||||
{
|
|
||||||
g_mouseAbs = { x, y };
|
|
||||||
}
|
|
||||||
|
|
||||||
bool gamePadActive()
|
bool gamePadActive()
|
||||||
{
|
{
|
||||||
// fixme: This needs to be tracked.
|
// fixme: This needs to be tracked.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
int32_t mouseReadAbs(vec2_t* const pResult);
|
|
||||||
void GetMouseDelta(ControlInfo* info);
|
void GetMouseDelta(ControlInfo* info);
|
||||||
|
|
||||||
void ClearAllInput()
|
void ClearAllInput()
|
||||||
|
@ -273,26 +234,9 @@ public:
|
||||||
|
|
||||||
extern InputState inputState;
|
extern InputState inputState;
|
||||||
|
|
||||||
inline void CONTROL_GetInput(ControlInfo* info)
|
void CONTROL_GetInput(ControlInfo* info);
|
||||||
{
|
int32_t handleevents(void);
|
||||||
memset(info, 0, sizeof(ControlInfo));
|
|
||||||
|
|
||||||
if (in_mouse)
|
|
||||||
inputState.GetMouseDelta(info);
|
|
||||||
|
|
||||||
if (in_joystick)
|
|
||||||
{
|
|
||||||
// Handle joysticks/game controllers.
|
|
||||||
float joyaxes[NUM_JOYAXIS];
|
|
||||||
|
|
||||||
I_GetAxes(joyaxes);
|
|
||||||
|
|
||||||
info->dyaw += joyaxes[JOYAXIS_Yaw];
|
|
||||||
info->dx += joyaxes[JOYAXIS_Side];
|
|
||||||
info->dz += joyaxes[JOYAXIS_Forward];
|
|
||||||
info->dpitch += joyaxes[JOYAXIS_Pitch];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#define WIN_IS_PRESSED ( inputState.WinPressed() )
|
#define WIN_IS_PRESSED ( inputState.WinPressed() )
|
||||||
#define ALT_IS_PRESSED ( inputState.AltPressed() )
|
#define ALT_IS_PRESSED ( inputState.AltPressed() )
|
||||||
|
|
|
@ -83,7 +83,6 @@ set( PCH_SOURCES
|
||||||
src/scrip2.cpp
|
src/scrip2.cpp
|
||||||
src/sector.cpp
|
src/sector.cpp
|
||||||
src/serp.cpp
|
src/serp.cpp
|
||||||
src/setup.cpp
|
|
||||||
src/skel.cpp
|
src/skel.cpp
|
||||||
src/skull.cpp
|
src/skull.cpp
|
||||||
src/slidor.cpp
|
src/slidor.cpp
|
||||||
|
|
|
@ -1,85 +0,0 @@
|
||||||
//-------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
Copyright (C) 1997, 2005 - 3D Realms Entertainment
|
|
||||||
|
|
||||||
This file is part of Shadow Warrior version 1.2
|
|
||||||
|
|
||||||
Shadow Warrior is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU General Public License
|
|
||||||
as published by the Free Software Foundation; either version 2
|
|
||||||
of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
Original Source: 1997 - Frank Maddin and Jim Norwood
|
|
||||||
Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
|
|
||||||
*/
|
|
||||||
//-------------------------------------------------------------------------
|
|
||||||
#include "ns.h"
|
|
||||||
#include "build.h"
|
|
||||||
|
|
||||||
#include "keys.h"
|
|
||||||
#include "game.h"
|
|
||||||
|
|
||||||
#include "mytypes.h"
|
|
||||||
#include "gamedefs.h"
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
#include "sounds.h"
|
|
||||||
#include "gamecontrol.h"
|
|
||||||
|
|
||||||
#include "rts.h"
|
|
||||||
|
|
||||||
BEGIN_SW_NS
|
|
||||||
|
|
||||||
void CenterCenter(void)
|
|
||||||
{
|
|
||||||
printf("\nCenter the joystick and press a button\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpperLeft(void)
|
|
||||||
{
|
|
||||||
printf("Move joystick to upper-left corner and press a button\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void LowerRight(void)
|
|
||||||
{
|
|
||||||
printf("Move joystick to lower-right corner and press a button\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void CenterThrottle(void)
|
|
||||||
{
|
|
||||||
printf("Center the throttle control and press a button\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void CenterRudder(void)
|
|
||||||
{
|
|
||||||
printf("Center the rudder control and press a button\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
===================
|
|
||||||
=
|
|
||||||
= GetTime
|
|
||||||
=
|
|
||||||
===================
|
|
||||||
*/
|
|
||||||
|
|
||||||
static int32_t timert;
|
|
||||||
|
|
||||||
int32_t GetTime(void)
|
|
||||||
{
|
|
||||||
return (int32_t) totalclock;
|
|
||||||
//return timert++;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
END_SW_NS
|
|
Loading…
Reference in a new issue