Skip to content

Commit 0c22e4f

Browse files
committed
Refactor: Moved Maniacs code for mapping virtual keys to game_runtime_patches.h
1 parent b2a8074 commit 0c22e4f

4 files changed

Lines changed: 115 additions & 116 deletions

File tree

src/game_interpreter.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4779,7 +4779,11 @@ bool Game_Interpreter::CommandManiacKeyInputProcEx(lcf::rpg::EventCommand const&
47794779
}
47804780
} else if (operation == 2) {
47814781
int key_id = ValueOrVariable(com.parameters[2], com.parameters[3]);
4782-
bool key_state = ManiacPatch::GetKeyState(key_id);
4782+
auto key = RuntimePatches::VirtualKeys::VirtualKeyToInputKey(key_id);
4783+
if (key == Input::Keys::NONE) {
4784+
Output::Debug("Maniac KeyInputProcEx: Unsupported keycode {}", key_id);
4785+
}
4786+
bool key_state = Input::IsRawKeyPressed(key);
47834787
Main_Data::game_variables->Set(start_var_id, key_state ? 1 : 0);
47844788
} else {
47854789
Output::Warning("Maniac KeyInputProcEx: Joypad not supported");

src/game_runtime_patches.h

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "game_config_game.h"
2222
#include "cmdline_parser.h"
2323
#include "player.h"
24+
#include "input.h"
2425

2526
class Game_Actor;
2627
class Game_Battler;
@@ -192,5 +193,114 @@ namespace RuntimePatches {
192193
*/
193194
bool OverrideDamageAdjustment(int& dmg, const Game_Battler& target);
194195
}
196+
197+
namespace VirtualKeys {
198+
constexpr Input::Keys::InputKey VirtualKeyToInputKey(uint32_t key_id);
199+
}
200+
}
201+
202+
constexpr Input::Keys::InputKey RuntimePatches::VirtualKeys::VirtualKeyToInputKey(uint32_t key_id) {
203+
// see https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
204+
switch (key_id) {
205+
#if defined(USE_MOUSE) && defined(SUPPORT_MOUSE)
206+
case 0x1: return Input::Keys::MOUSE_LEFT;
207+
case 0x2: return Input::Keys::MOUSE_RIGHT;
208+
case 0x4: return Input::Keys::MOUSE_MIDDLE;
209+
case 0x5: return Input::Keys::MOUSE_XBUTTON1;
210+
case 0x6: return Input::Keys::MOUSE_XBUTTON2;
211+
#endif
212+
case 0x8: return Input::Keys::BACKSPACE;
213+
case 0x9: return Input::Keys::TAB;
214+
case 0xD: return Input::Keys::RETURN;
215+
case 0x10: return Input::Keys::SHIFT;
216+
case 0x11: return Input::Keys::CTRL;
217+
case 0x12: return Input::Keys::ALT;
218+
case 0x13: return Input::Keys::PAUSE;
219+
case 0x14: return Input::Keys::CAPS_LOCK;
220+
case 0x1B: return Input::Keys::ESCAPE;
221+
case 0x20: return Input::Keys::SPACE;
222+
case 0x21: return Input::Keys::PGUP;
223+
case 0x22: return Input::Keys::PGDN;
224+
case 0x23: return Input::Keys::ENDS;
225+
case 0x24: return Input::Keys::HOME;
226+
case 0x25: return Input::Keys::LEFT;
227+
case 0x26: return Input::Keys::UP;
228+
case 0x27: return Input::Keys::RIGHT;
229+
case 0x28: return Input::Keys::DOWN;
230+
case 0x2D: return Input::Keys::INSERT;
231+
case 0x2E: return Input::Keys::DEL;
232+
case 0x30: return Input::Keys::N0;
233+
case 0x31: return Input::Keys::N1;
234+
case 0x32: return Input::Keys::N2;
235+
case 0x33: return Input::Keys::N3;
236+
case 0x34: return Input::Keys::N4;
237+
case 0x35: return Input::Keys::N5;
238+
case 0x36: return Input::Keys::N6;
239+
case 0x37: return Input::Keys::N7;
240+
case 0x38: return Input::Keys::N8;
241+
case 0x39: return Input::Keys::N9;
242+
case 0x41: return Input::Keys::A;
243+
case 0x42: return Input::Keys::B;
244+
case 0x43: return Input::Keys::C;
245+
case 0x44: return Input::Keys::D;
246+
case 0x45: return Input::Keys::E;
247+
case 0x46: return Input::Keys::F;
248+
case 0x47: return Input::Keys::G;
249+
case 0x48: return Input::Keys::H;
250+
case 0x49: return Input::Keys::I;
251+
case 0x4A: return Input::Keys::J;
252+
case 0x4B: return Input::Keys::K;
253+
case 0x4C: return Input::Keys::L;
254+
case 0x4D: return Input::Keys::M;
255+
case 0x4E: return Input::Keys::N;
256+
case 0x4F: return Input::Keys::O;
257+
case 0x50: return Input::Keys::P;
258+
case 0x51: return Input::Keys::Q;
259+
case 0x52: return Input::Keys::R;
260+
case 0x53: return Input::Keys::S;
261+
case 0x54: return Input::Keys::T;
262+
case 0x55: return Input::Keys::U;
263+
case 0x56: return Input::Keys::V;
264+
case 0x57: return Input::Keys::W;
265+
case 0x58: return Input::Keys::X;
266+
case 0x59: return Input::Keys::Y;
267+
case 0x5A: return Input::Keys::Z;
268+
case 0x60: return Input::Keys::KP0;
269+
case 0x61: return Input::Keys::KP1;
270+
case 0x62: return Input::Keys::KP2;
271+
case 0x63: return Input::Keys::KP3;
272+
case 0x64: return Input::Keys::KP4;
273+
case 0x65: return Input::Keys::KP5;
274+
case 0x66: return Input::Keys::KP6;
275+
case 0x67: return Input::Keys::KP7;
276+
case 0x68: return Input::Keys::KP8;
277+
case 0x69: return Input::Keys::KP9;
278+
case 0x6A: return Input::Keys::KP_MULTIPLY;
279+
case 0x6B: return Input::Keys::KP_ADD;
280+
case 0x6D: return Input::Keys::KP_SUBTRACT;
281+
case 0x6E: return Input::Keys::KP_PERIOD;
282+
case 0x6F: return Input::Keys::KP_DIVIDE;
283+
case 0x70: return Input::Keys::F1;
284+
case 0x71: return Input::Keys::F2;
285+
case 0x72: return Input::Keys::F3;
286+
case 0x73: return Input::Keys::F4;
287+
case 0x74: return Input::Keys::F5;
288+
case 0x75: return Input::Keys::F6;
289+
case 0x76: return Input::Keys::F7;
290+
case 0x77: return Input::Keys::F8;
291+
case 0x78: return Input::Keys::F9;
292+
case 0x79: return Input::Keys::F10;
293+
case 0x7A: return Input::Keys::F11;
294+
case 0x7B: return Input::Keys::F12;
295+
case 0x90: return Input::Keys::NUM_LOCK;
296+
case 0x91: return Input::Keys::SCROLL_LOCK;
297+
case 0xA0: return Input::Keys::LSHIFT;
298+
case 0xA1: return Input::Keys::RSHIFT;
299+
case 0xA2: return Input::Keys::LCTRL;
300+
case 0xA3: return Input::Keys::RCTRL;
301+
302+
default: return Input::Keys::NONE;
303+
}
195304
}
305+
196306
#endif

src/maniac_patch.cpp

Lines changed: 0 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -681,119 +681,6 @@ std::array<bool, 50> ManiacPatch::GetKeyRange() {
681681
return pressed;
682682
}
683683

684-
bool ManiacPatch::GetKeyState(uint32_t key_id) {
685-
Input::Keys::InputKey key;
686-
687-
// see https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
688-
switch (key_id) {
689-
#if defined(USE_MOUSE) && defined(SUPPORT_MOUSE)
690-
case 0x1: key = Input::Keys::MOUSE_LEFT; break;
691-
case 0x2: key = Input::Keys::MOUSE_RIGHT; break;
692-
case 0x4: key = Input::Keys::MOUSE_MIDDLE; break;
693-
case 0x5: key = Input::Keys::MOUSE_XBUTTON1; break;
694-
case 0x6: key = Input::Keys::MOUSE_XBUTTON2; break;
695-
#endif
696-
case 0x8: key = Input::Keys::BACKSPACE; break;
697-
case 0x9: key = Input::Keys::TAB; break;
698-
case 0xD: key = Input::Keys::RETURN; break;
699-
case 0x10: key = Input::Keys::SHIFT; break;
700-
case 0x11: key = Input::Keys::CTRL; break;
701-
case 0x12: key = Input::Keys::ALT; break;
702-
case 0x13: key = Input::Keys::PAUSE; break;
703-
case 0x14: key = Input::Keys::CAPS_LOCK; break;
704-
case 0x1B: key = Input::Keys::ESCAPE; break;
705-
case 0x20: key = Input::Keys::SPACE; break;
706-
case 0x21: key = Input::Keys::PGUP; break;
707-
case 0x22: key = Input::Keys::PGDN; break;
708-
case 0x23: key = Input::Keys::ENDS; break;
709-
case 0x24: key = Input::Keys::HOME; break;
710-
case 0x25: key = Input::Keys::LEFT; break;
711-
case 0x26: key = Input::Keys::UP; break;
712-
case 0x27: key = Input::Keys::RIGHT; break;
713-
case 0x28: key = Input::Keys::DOWN; break;
714-
case 0x2D: key = Input::Keys::INSERT; break;
715-
case 0x2E: key = Input::Keys::DEL; break;
716-
case 0x30: key = Input::Keys::N0; break;
717-
case 0x31: key = Input::Keys::N1; break;
718-
case 0x32: key = Input::Keys::N2; break;
719-
case 0x33: key = Input::Keys::N3; break;
720-
case 0x34: key = Input::Keys::N4; break;
721-
case 0x35: key = Input::Keys::N5; break;
722-
case 0x36: key = Input::Keys::N6; break;
723-
case 0x37: key = Input::Keys::N7; break;
724-
case 0x38: key = Input::Keys::N8; break;
725-
case 0x39: key = Input::Keys::N9; break;
726-
case 0x41: key = Input::Keys::A; break;
727-
case 0x42: key = Input::Keys::B; break;
728-
case 0x43: key = Input::Keys::C; break;
729-
case 0x44: key = Input::Keys::D; break;
730-
case 0x45: key = Input::Keys::E; break;
731-
case 0x46: key = Input::Keys::F; break;
732-
case 0x47: key = Input::Keys::G; break;
733-
case 0x48: key = Input::Keys::H; break;
734-
case 0x49: key = Input::Keys::I; break;
735-
case 0x4A: key = Input::Keys::J; break;
736-
case 0x4B: key = Input::Keys::K; break;
737-
case 0x4C: key = Input::Keys::L; break;
738-
case 0x4D: key = Input::Keys::M; break;
739-
case 0x4E: key = Input::Keys::N; break;
740-
case 0x4F: key = Input::Keys::O; break;
741-
case 0x50: key = Input::Keys::P; break;
742-
case 0x51: key = Input::Keys::Q; break;
743-
case 0x52: key = Input::Keys::R; break;
744-
case 0x53: key = Input::Keys::S; break;
745-
case 0x54: key = Input::Keys::T; break;
746-
case 0x55: key = Input::Keys::U; break;
747-
case 0x56: key = Input::Keys::V; break;
748-
case 0x57: key = Input::Keys::W; break;
749-
case 0x58: key = Input::Keys::X; break;
750-
case 0x59: key = Input::Keys::Y; break;
751-
case 0x5A: key = Input::Keys::Z; break;
752-
case 0x60: key = Input::Keys::KP0; break;
753-
case 0x61: key = Input::Keys::KP1; break;
754-
case 0x62: key = Input::Keys::KP2; break;
755-
case 0x63: key = Input::Keys::KP3; break;
756-
case 0x64: key = Input::Keys::KP4; break;
757-
case 0x65: key = Input::Keys::KP5; break;
758-
case 0x66: key = Input::Keys::KP6; break;
759-
case 0x67: key = Input::Keys::KP7; break;
760-
case 0x68: key = Input::Keys::KP8; break;
761-
case 0x69: key = Input::Keys::KP9; break;
762-
case 0x6A: key = Input::Keys::KP_MULTIPLY; break;
763-
case 0x6B: key = Input::Keys::KP_ADD; break;
764-
case 0x6D: key = Input::Keys::KP_SUBTRACT; break;
765-
case 0x6E: key = Input::Keys::KP_PERIOD; break;
766-
case 0x6F: key = Input::Keys::KP_DIVIDE; break;
767-
case 0x70: key = Input::Keys::F1; break;
768-
case 0x71: key = Input::Keys::F2; break;
769-
case 0x72: key = Input::Keys::F3; break;
770-
case 0x73: key = Input::Keys::F4; break;
771-
case 0x74: key = Input::Keys::F5; break;
772-
case 0x75: key = Input::Keys::F6; break;
773-
case 0x76: key = Input::Keys::F7; break;
774-
case 0x77: key = Input::Keys::F8; break;
775-
case 0x78: key = Input::Keys::F9; break;
776-
case 0x79: key = Input::Keys::F10; break;
777-
case 0x7A: key = Input::Keys::F11; break;
778-
case 0x7B: key = Input::Keys::F12; break;
779-
case 0x90: key = Input::Keys::NUM_LOCK; break;
780-
case 0x91: key = Input::Keys::SCROLL_LOCK; break;
781-
case 0xA0: key = Input::Keys::LSHIFT; break;
782-
case 0xA1: key = Input::Keys::RSHIFT; break;
783-
case 0xA2: key = Input::Keys::LCTRL; break;
784-
case 0xA3: key = Input::Keys::RCTRL; break;
785-
default:
786-
Output::Debug("Maniac KeyInputProcEx: Unsupported keycode {}", key_id);
787-
key = Input::Keys::NONE;
788-
break;
789-
}
790-
791-
return Input::IsRawKeyPressed(key);
792-
793-
794-
795-
}
796-
797684
bool ManiacPatch::CheckString(std::string_view str_l, std::string_view str_r, int op, bool ignore_case) {
798685
auto check = [op](const auto& l, const auto& r) {
799686
switch (op) {

src/maniac_patch.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ namespace ManiacPatch {
3535

3636
std::array<bool, 50> GetKeyRange();
3737

38-
bool GetKeyState(uint32_t key_id);
39-
4038
bool CheckString(std::string_view str_l, std::string_view str_r, int op, bool ignore_case);
4139

4240
std::string_view GetLcfName(int data_type, int id, bool is_dynamic);

0 commit comments

Comments
 (0)