ddnet/src/engine/client/input.h

86 lines
2.4 KiB
C
Raw Normal View History

2010-11-20 10:37:14 +00:00
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
/* If you are missing that file, acquire a complete release at teeworlds.com. */
2010-05-29 07:25:38 +00:00
#ifndef ENGINE_CLIENT_INPUT_H
#define ENGINE_CLIENT_INPUT_H
#include <engine/graphics.h>
#include <engine/input.h>
#include <stddef.h>
2010-05-29 07:25:38 +00:00
class CInput : public IEngineInput
{
IEngineGraphics *m_pGraphics;
char *m_pClipboardText;
2010-05-29 07:25:38 +00:00
2021-06-23 05:05:49 +00:00
int64_t m_LastRelease;
int64_t m_ReleaseDelta;
2010-05-29 07:25:38 +00:00
bool m_MouseFocus;
2014-06-16 11:29:18 +00:00
int m_VideoRestartNeeded;
2016-04-30 02:02:32 +00:00
void AddEvent(char *pText, int Key, int Flags);
void Clear();
bool IsEventValid(CEvent *pEvent) const { return pEvent->m_InputCount == m_InputCounter; };
// quick access to input
2020-09-22 16:02:03 +00:00
unsigned short m_aInputCount[g_MaxKeys]; // tw-KEY
unsigned char m_aInputState[g_MaxKeys]; // SDL_SCANCODE
int m_InputCounter;
// IME support
int m_NumTextInputInstances;
char m_aEditingText[INPUT_TEXT_SIZE];
int m_EditingTextLen;
int m_EditingCursor;
2021-09-15 21:52:09 +00:00
int m_DesktopX = 0;
int m_DesktopY = 0;
bool KeyState(int Key) const;
2010-05-29 07:25:38 +00:00
IEngineGraphics *Graphics() { return m_pGraphics; }
2021-09-15 21:52:09 +00:00
void MouseModeInGameRelativeImpl();
2010-05-29 07:25:38 +00:00
public:
CInput();
virtual void Init();
bool KeyIsPressed(int Key) const { return KeyState(Key); }
bool KeyPress(int Key, bool CheckCounter) const { return CheckCounter ? (m_aInputCount[Key] == m_InputCounter) : m_aInputCount[Key]; }
2021-09-12 17:32:00 +00:00
virtual void NativeMousePos(int *x, int *y) const;
virtual bool NativeMousePressed(int index);
2021-09-15 21:52:09 +00:00
virtual bool MouseRelative(float *x, float *y);
virtual bool MouseDesktopRelative(int *x, int *y);
virtual bool MouseAbsolute(int *x, int *y);
// return true if the mode was changed
virtual void MouseModeChange(EInputMouseMode OldState, EInputMouseMode NewState);
virtual bool MouseModeAbsolute();
virtual bool MouseModeRelative();
virtual bool MouseModeInGame(int *pDesiredX = NULL, int *pDesiredY = NULL);
virtual bool MouseModeInGameRelative();
2010-05-29 07:25:38 +00:00
virtual int MouseDoubleClick();
2020-09-22 16:02:03 +00:00
virtual const char *GetClipboardText();
virtual void SetClipboardText(const char *Text);
2010-05-29 07:25:38 +00:00
virtual int Update();
virtual void NextFrame();
2014-06-16 11:29:18 +00:00
virtual int VideoRestartNeeded();
virtual bool GetIMEState();
virtual void SetIMEState(bool Activate);
int GetIMEEditingTextLength() const { return m_EditingTextLen; }
virtual const char *GetIMEEditingText();
virtual int GetEditingCursor();
virtual void SetEditingPosition(float X, float Y);
2010-05-29 07:25:38 +00:00
};
#endif