DDraceNetwork Documentation
Loading...
Searching...
No Matches
binds.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef GAME_CLIENT_COMPONENTS_BINDS_H
4#define GAME_CLIENT_COMPONENTS_BINDS_H
5
6#include <engine/console.h>
7#include <engine/keys.h>
8
10
11#include <vector>
12
13class IConfigManager;
14
15namespace KeyModifier
16{
17 inline constexpr int32_t NONE = 0;
18 inline constexpr int32_t CTRL = 1;
19 inline constexpr int32_t ALT = 2;
20 inline constexpr int32_t SHIFT = 3;
21 inline constexpr int32_t GUI = 4;
22 inline constexpr int32_t COUNT = 5;
23 inline constexpr int32_t COMBINATION_COUNT = 1 << COUNT;
24};
25
27{
28public:
29 int m_Key;
31
32 constexpr CBindSlot(int Key, int ModifierMask) :
33 m_Key(Key),
34 m_ModifierMask(ModifierMask)
35 {
36 }
37
38 constexpr bool operator==(const CBindSlot &Other) const { return m_Key == Other.m_Key && m_ModifierMask == Other.m_ModifierMask; }
39 constexpr bool operator!=(const CBindSlot &Other) const { return !(*this == Other); }
40};
41
43
44class CBinds : public CComponent
45{
46 static void ConBind(IConsole::IResult *pResult, void *pUserData);
47 static void ConBinds(IConsole::IResult *pResult, void *pUserData);
48 static void ConUnbind(IConsole::IResult *pResult, void *pUserData);
49 static void ConUnbindAll(IConsole::IResult *pResult, void *pUserData);
50
51 static void ConfigSaveCallback(IConfigManager *pConfigManager, void *pUserData);
52
53 CBindSlot GetBindSlot(const char *pBindString) const;
54
55 // free buffer after use
56 char *GetKeyBindCommand(int ModifierCombination, int Key) const;
57
58public:
59 CBinds();
60 ~CBinds() override;
61 int Sizeof() const override { return sizeof(*this); }
62
64 {
65 public:
67 int Sizeof() const override { return sizeof(*this); }
68 bool OnInput(const IInput::CEvent &Event) override;
69 };
70
72
74
75 void Bind(int KeyId, const char *pStr, bool FreeOnly = false, int ModifierCombination = KeyModifier::NONE);
76 void SetDefaults();
77 void UnbindAll();
78 const char *Get(int KeyId, int ModifierCombination) const;
79 const char *Get(const CBindSlot &BindSlot) const;
80 void GetKey(const char *pBindStr, char *pBuf, size_t BufSize) const;
81 static int GetModifierMask(IInput *pInput);
82 static int GetModifierMaskOfKey(int Key);
83 static const char *GetModifierName(int Modifier);
84 void GetKeyBindName(int Key, int ModifierMask, char *pBuf, size_t BufSize) const;
85
86 void OnConsoleInit() override;
87 bool OnInput(const IInput::CEvent &Event) override;
88
89 // DDRace
90
91 void SetDDRaceBinds(bool FreeOnly);
92
93private:
95 std::vector<CBindSlot> m_vActiveBinds;
96};
97#endif
constexpr CBindSlot EMPTY_BIND_SLOT
Definition binds.h:42
Definition binds.h:27
constexpr bool operator==(const CBindSlot &Other) const
Definition binds.h:38
constexpr bool operator!=(const CBindSlot &Other) const
Definition binds.h:39
int m_Key
Definition binds.h:29
constexpr CBindSlot(int Key, int ModifierMask)
Definition binds.h:32
int m_ModifierMask
Definition binds.h:30
Definition binds.h:64
int Sizeof() const override
Definition binds.h:67
bool OnInput(const IInput::CEvent &Event) override
Definition binds.cpp:18
CBinds * m_pBinds
Definition binds.h:66
CBindSlot GetBindSlot(const char *pBindString) const
Definition binds.cpp:405
bool m_MouseOnAction
Definition binds.h:71
~CBinds() override
Definition binds.cpp:40
void Bind(int KeyId, const char *pStr, bool FreeOnly=false, int ModifierCombination=KeyModifier::NONE)
Definition binds.cpp:45
static void ConfigSaveCallback(IConfigManager *pConfigManager, void *pUserData)
Definition binds.cpp:478
bool OnInput(const IInput::CEvent &Event) override
Definition binds.cpp:116
static int GetModifierMask(IInput *pInput)
Definition binds.cpp:71
static const char * GetModifierName(int Modifier)
Definition binds.cpp:432
void OnConsoleInit() override
Definition binds.cpp:312
static void ConUnbindAll(IConsole::IResult *pResult, void *pUserData)
Definition binds.cpp:399
int Sizeof() const override
Definition binds.h:61
void SetDefaults()
Definition binds.cpp:265
static void ConBind(IConsole::IResult *pResult, void *pUserData)
Definition binds.cpp:324
const char * Get(int KeyId, int ModifierCombination) const
Definition binds.cpp:233
void GetKeyBindName(int Key, int ModifierMask, char *pBuf, size_t BufSize) const
Definition binds.cpp:449
char * m_aapKeyBindings[KeyModifier::COMBINATION_COUNT][KEY_LAST]
Definition binds.h:94
void UnbindAll()
Definition binds.cpp:221
void GetKey(const char *pBindStr, char *pBuf, size_t BufSize) const
Definition binds.cpp:245
char * GetKeyBindCommand(int ModifierCombination, int Key) const
Definition binds.cpp:463
static int GetModifierMaskOfKey(int Key)
Definition binds.cpp:95
CBindsSpecial m_SpecialBinds
Definition binds.h:73
void SetDDRaceBinds(bool FreeOnly)
Definition binds.cpp:498
static void ConBinds(IConsole::IResult *pResult, void *pUserData)
Definition binds.cpp:345
static void ConUnbind(IConsole::IResult *pResult, void *pUserData)
Definition binds.cpp:384
CBinds()
Definition binds.cpp:34
std::vector< CBindSlot > m_vActiveBinds
Definition binds.h:95
Definition component.h:165
Definition config.h:9
Definition console.h:64
Definition input.h:22
Definition input.h:18
@ KEY_LAST
Definition keys.h:336
@ KEY_UNKNOWN
Definition keys.h:14
Definition binds.h:16
constexpr int32_t GUI
Definition binds.h:21
constexpr int32_t NONE
Definition binds.h:17
constexpr int32_t CTRL
Definition binds.h:18
constexpr int32_t COUNT
Definition binds.h:22
constexpr int32_t SHIFT
Definition binds.h:20
constexpr int32_t ALT
Definition binds.h:19
constexpr int32_t COMBINATION_COUNT
Definition binds.h:23