ArcdpsExtension
 
Loading...
Searching...
No Matches
KeyBindHandler.h
Go to the documentation of this file.
1#pragma once
2
3#include "Singleton.h"
4
5#include <ArcdpsUnofficialExtras/KeyBindStructs.h>
6#include <cstdint>
7#include <functional>
8#include <type_traits>
9#include <unordered_map>
10#include <windows.h>
11
12namespace ArcdpsExtension {
20 class KeyBindHandler : public Singleton<KeyBindHandler> {
21 public:
26 using SubscriberFlags = std::underlying_type_t<SubscriberFlags_>; // enum SubscriberFlags_
27
32 using SubscriberFun = std::function<bool(const KeyBinds::Key&)>;
33
39
45 uint64_t Subscribe(Subscriber pSubscriber);
46
50 void Unsubscribe(uint64_t pId);
51
55 void UpdateKey(uint64_t pId, const KeyBinds::Key& pKey);
56
60 void UpdateKeys(const KeyBinds::Key& pOldKey, const KeyBinds::Key& pNewKey);
61
65 bool Wnd(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
66
70 static KeyBinds::Modifier GetArcdpsModifier();
71
72 private:
73 static uint64_t getNewId() {
74 static uint64_t the_id;
75 return the_id++;
76 }
77
78 std::unordered_map<uint64_t, Subscriber> mSubscribers;
79 KeyBinds::Modifier mTrackedModifier = 0;
80
81 static KeyBinds::Modifier getArcdpsModifierSingle(uint16_t pMod);
82 };
83} // namespace ArcdpsExtension
Definition KeyBindHandler.h:20
bool Wnd(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition KeyBindHandler.cpp:34
std::underlying_type_t< SubscriberFlags_ > SubscriberFlags
Definition KeyBindHandler.h:26
void UpdateKey(uint64_t pId, const KeyBinds::Key &pKey)
Definition KeyBindHandler.cpp:22
static KeyBinds::Modifier GetArcdpsModifier()
Definition KeyBindHandler.cpp:130
uint64_t Subscribe(Subscriber pSubscriber)
Definition KeyBindHandler.cpp:12
void Unsubscribe(uint64_t pId)
Definition KeyBindHandler.cpp:18
void UpdateKeys(const KeyBinds::Key &pOldKey, const KeyBinds::Key &pNewKey)
Definition KeyBindHandler.cpp:26
SubscriberFlags_
Definition KeyBindHandler.h:22
@ SubscriberFlags_ArcdpsModifier
Definition KeyBindHandler.h:24
@ SubscriberFlags_None
Definition KeyBindHandler.h:23
std::function< bool(const KeyBinds::Key &)> SubscriberFun
Definition KeyBindHandler.h:32
Definition Singleton.h:48
Definition ArcdpsExtension.h:10
Definition KeyBindHandler.h:34
SubscriberFun Fun
Definition KeyBindHandler.h:36
KeyBinds::Key Key
Definition KeyBindHandler.h:35
SubscriberFlags Flags
Definition KeyBindHandler.h:37