From 510973b5750c5351d784363d8412820e2ffdfaa0 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Feb 2025 13:24:22 -0700 Subject: [PATCH 01/10] Move `EventHandler` enums out of `EventHandler` class Add `using` aliases for backwards compatibility. --- NAS2D/EventHandler.h | 11 +++++++---- NAS2D/EventHandlerKeyCode.h | 4 ++-- NAS2D/EventHandlerKeyModifier.h | 4 ++-- NAS2D/EventHandlerMouseButton.h | 4 +--- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/NAS2D/EventHandler.h b/NAS2D/EventHandler.h index bd76850f..2dfe9108 100644 --- a/NAS2D/EventHandler.h +++ b/NAS2D/EventHandler.h @@ -19,6 +19,10 @@ namespace NAS2D { + enum class KeyModifier : uint16_t; + enum class KeyCode : uint32_t; + enum class MouseButton; + /** * Handles and dispatches low-level events. @@ -26,10 +30,9 @@ namespace NAS2D class EventHandler { public: - enum class KeyModifier : uint16_t; - enum class KeyCode : uint32_t; - enum class MouseButton; - + using KeyModifier = NAS2D::KeyModifier; + using KeyCode = NAS2D::KeyCode; + using MouseButton = NAS2D::MouseButton; using ActivateSignal = Signal; using WindowHiddenSignal = Signal; diff --git a/NAS2D/EventHandlerKeyCode.h b/NAS2D/EventHandlerKeyCode.h index 3074d838..5fefe5f2 100644 --- a/NAS2D/EventHandlerKeyCode.h +++ b/NAS2D/EventHandlerKeyCode.h @@ -1,6 +1,6 @@ #pragma once -#include "EventHandler.h" +#include namespace @@ -14,7 +14,7 @@ namespace } -enum class NAS2D::EventHandler::KeyCode : uint32_t +enum class NAS2D::KeyCode : uint32_t { KEY_UNKNOWN = 0, KEY_FIRST = 0, diff --git a/NAS2D/EventHandlerKeyModifier.h b/NAS2D/EventHandlerKeyModifier.h index e0bc9576..357229e6 100644 --- a/NAS2D/EventHandlerKeyModifier.h +++ b/NAS2D/EventHandlerKeyModifier.h @@ -1,9 +1,9 @@ #pragma once -#include "EventHandler.h" +#include -enum class NAS2D::EventHandler::KeyModifier : uint16_t +enum class NAS2D::KeyModifier : uint16_t { None = 0x0000, ShiftLeft = 0x0001, diff --git a/NAS2D/EventHandlerMouseButton.h b/NAS2D/EventHandlerMouseButton.h index 0d60f894..60f87033 100644 --- a/NAS2D/EventHandlerMouseButton.h +++ b/NAS2D/EventHandlerMouseButton.h @@ -1,9 +1,7 @@ #pragma once -#include "EventHandler.h" - -enum class NAS2D::EventHandler::MouseButton +enum class NAS2D::MouseButton { None, Left, From 006a1a52caddfc28fc440f02c25439ffe140002a Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Feb 2025 13:32:22 -0700 Subject: [PATCH 02/10] Remove `EventHandler::` prefix on enum uses --- NAS2D/EventHandler.cpp | 16 +++++++------- NAS2D/EventHandler.h | 8 +++---- test-graphics/TestGraphics.cpp | 10 ++++----- test-graphics/TestGraphics.h | 4 ++-- test/EventHandler.test.cpp | 40 +++++++++++++++++----------------- 5 files changed, 39 insertions(+), 39 deletions(-) diff --git a/NAS2D/EventHandler.cpp b/NAS2D/EventHandler.cpp index bd2913b9..b04625de 100644 --- a/NAS2D/EventHandler.cpp +++ b/NAS2D/EventHandler.cpp @@ -30,31 +30,31 @@ const int MAX_MESSAGE_PROCESSING = 100; namespace NAS2D { - EventHandler::KeyModifier& operator|=(EventHandler::KeyModifier& a, const EventHandler::KeyModifier& b) noexcept + KeyModifier& operator|=(KeyModifier& a, const KeyModifier& b) noexcept { - using underlying = std::underlying_type_t; + using underlying = std::underlying_type_t; auto underlying_a = static_cast(a); auto underlying_b = static_cast(b); - a = static_cast(underlying_a | underlying_b); + a = static_cast(underlying_a | underlying_b); return a; } - EventHandler::KeyModifier& operator&=(EventHandler::KeyModifier& a, const EventHandler::KeyModifier& b) noexcept + KeyModifier& operator&=(KeyModifier& a, const KeyModifier& b) noexcept { - using underlying = std::underlying_type_t; + using underlying = std::underlying_type_t; auto underlying_a = static_cast(a); auto underlying_b = static_cast(b); - a = static_cast(underlying_a & underlying_b); + a = static_cast(underlying_a & underlying_b); return a; } - EventHandler::KeyModifier operator|(EventHandler::KeyModifier a, const EventHandler::KeyModifier& b) noexcept + KeyModifier operator|(KeyModifier a, const KeyModifier& b) noexcept { a |= b; return a; } - EventHandler::KeyModifier operator&(EventHandler::KeyModifier a, const EventHandler::KeyModifier& b) noexcept + KeyModifier operator&(KeyModifier a, const KeyModifier& b) noexcept { a &= b; return a; diff --git a/NAS2D/EventHandler.h b/NAS2D/EventHandler.h index 2dfe9108..ff81af5d 100644 --- a/NAS2D/EventHandler.h +++ b/NAS2D/EventHandler.h @@ -148,10 +148,10 @@ namespace NAS2D void postQuitEvent(); - EventHandler::KeyModifier& operator|=(EventHandler::KeyModifier& a, const EventHandler::KeyModifier& b) noexcept; - EventHandler::KeyModifier& operator&=(EventHandler::KeyModifier& a, const EventHandler::KeyModifier& b) noexcept; - EventHandler::KeyModifier operator|(EventHandler::KeyModifier a, const EventHandler::KeyModifier& b) noexcept; - EventHandler::KeyModifier operator&(EventHandler::KeyModifier a, const EventHandler::KeyModifier& b) noexcept; + KeyModifier& operator|=(KeyModifier& a, const KeyModifier& b) noexcept; + KeyModifier& operator&=(KeyModifier& a, const KeyModifier& b) noexcept; + KeyModifier operator|(KeyModifier a, const KeyModifier& b) noexcept; + KeyModifier operator&(KeyModifier a, const KeyModifier& b) noexcept; } // namespace diff --git a/test-graphics/TestGraphics.cpp b/test-graphics/TestGraphics.cpp index 96969e2a..8993d039 100644 --- a/test-graphics/TestGraphics.cpp +++ b/test-graphics/TestGraphics.cpp @@ -115,20 +115,20 @@ NAS2D::State* TestGraphics::update() return this; } -void TestGraphics::onKeyDown(NAS2D::EventHandler::KeyCode key, NAS2D::EventHandler::KeyModifier /*mod*/, bool /*repeat*/) +void TestGraphics::onKeyDown(NAS2D::KeyCode key, NAS2D::KeyModifier /*mod*/, bool /*repeat*/) { switch (key) { - case NAS2D::EventHandler::KeyCode::KEY_ESCAPE: + case NAS2D::KeyCode::KEY_ESCAPE: NAS2D::postQuitEvent(); break; - case NAS2D::EventHandler::KeyCode::KEY_F1: + case NAS2D::KeyCode::KEY_F1: { auto& renderer = NAS2D::Utility::get(); renderer.fullscreen(!renderer.fullscreen()); break; } - case NAS2D::EventHandler::KeyCode::KEY_F2: + case NAS2D::KeyCode::KEY_F2: { auto& renderer = NAS2D::Utility::get(); renderer.resizeable(!renderer.resizeable()); @@ -142,7 +142,7 @@ void TestGraphics::onKeyDown(NAS2D::EventHandler::KeyCode key, NAS2D::EventHandl void TestGraphics::onMouseMove(NAS2D::Point /*position*/, NAS2D::Vector /*change*/) {} -void TestGraphics::onMouseDown(NAS2D::EventHandler::MouseButton /*button*/, NAS2D::Point /*position*/) +void TestGraphics::onMouseDown(NAS2D::MouseButton /*button*/, NAS2D::Point /*position*/) {} void TestGraphics::onWindowResized(int /*w*/, int /*h*/) diff --git a/test-graphics/TestGraphics.h b/test-graphics/TestGraphics.h index 6dd6980a..c7be01b0 100644 --- a/test-graphics/TestGraphics.h +++ b/test-graphics/TestGraphics.h @@ -15,9 +15,9 @@ class TestGraphics : public NAS2D::State void initialize() override; NAS2D::State* update() override; - void onKeyDown(NAS2D::EventHandler::KeyCode key, NAS2D::EventHandler::KeyModifier mod, bool repeat); + void onKeyDown(NAS2D::KeyCode key, NAS2D::KeyModifier mod, bool repeat); void onMouseMove(NAS2D::Point position, NAS2D::Vector change); - void onMouseDown(NAS2D::EventHandler::MouseButton button, NAS2D::Point position); + void onMouseDown(NAS2D::MouseButton button, NAS2D::Point position); void onWindowResized(int w, int h); diff --git a/test/EventHandler.test.cpp b/test/EventHandler.test.cpp index a66b16a3..13777cb6 100644 --- a/test/EventHandler.test.cpp +++ b/test/EventHandler.test.cpp @@ -5,33 +5,33 @@ TEST(EventHandler, shift) { - EXPECT_TRUE(NAS2D::EventHandler::shift(NAS2D::EventHandler::KeyModifier::Shift)); - EXPECT_TRUE(NAS2D::EventHandler::shift(NAS2D::EventHandler::KeyModifier::ShiftLeft)); - EXPECT_TRUE(NAS2D::EventHandler::shift(NAS2D::EventHandler::KeyModifier::ShiftRight)); - EXPECT_TRUE(NAS2D::EventHandler::shift(NAS2D::EventHandler::KeyModifier::ShiftLeft | NAS2D::EventHandler::KeyModifier::CtrlLeft)); - EXPECT_FALSE(NAS2D::EventHandler::shift(NAS2D::EventHandler::KeyModifier::Caps)); - EXPECT_FALSE(NAS2D::EventHandler::shift(NAS2D::EventHandler::KeyModifier::Ctrl)); - EXPECT_FALSE(NAS2D::EventHandler::shift(NAS2D::EventHandler::KeyModifier::Alt)); + EXPECT_TRUE(NAS2D::EventHandler::shift(NAS2D::KeyModifier::Shift)); + EXPECT_TRUE(NAS2D::EventHandler::shift(NAS2D::KeyModifier::ShiftLeft)); + EXPECT_TRUE(NAS2D::EventHandler::shift(NAS2D::KeyModifier::ShiftRight)); + EXPECT_TRUE(NAS2D::EventHandler::shift(NAS2D::KeyModifier::ShiftLeft | NAS2D::KeyModifier::CtrlLeft)); + EXPECT_FALSE(NAS2D::EventHandler::shift(NAS2D::KeyModifier::Caps)); + EXPECT_FALSE(NAS2D::EventHandler::shift(NAS2D::KeyModifier::Ctrl)); + EXPECT_FALSE(NAS2D::EventHandler::shift(NAS2D::KeyModifier::Alt)); } TEST(EventHandler, numlock) { - EXPECT_TRUE(NAS2D::EventHandler::numlock(NAS2D::EventHandler::KeyModifier::Num)); - EXPECT_TRUE(NAS2D::EventHandler::numlock(NAS2D::EventHandler::KeyModifier::Num | NAS2D::EventHandler::KeyModifier::CtrlLeft)); - EXPECT_FALSE(NAS2D::EventHandler::numlock(NAS2D::EventHandler::KeyModifier::Shift)); - EXPECT_FALSE(NAS2D::EventHandler::numlock(NAS2D::EventHandler::KeyModifier::Ctrl)); - EXPECT_FALSE(NAS2D::EventHandler::numlock(NAS2D::EventHandler::KeyModifier::Alt)); + EXPECT_TRUE(NAS2D::EventHandler::numlock(NAS2D::KeyModifier::Num)); + EXPECT_TRUE(NAS2D::EventHandler::numlock(NAS2D::KeyModifier::Num | NAS2D::KeyModifier::CtrlLeft)); + EXPECT_FALSE(NAS2D::EventHandler::numlock(NAS2D::KeyModifier::Shift)); + EXPECT_FALSE(NAS2D::EventHandler::numlock(NAS2D::KeyModifier::Ctrl)); + EXPECT_FALSE(NAS2D::EventHandler::numlock(NAS2D::KeyModifier::Alt)); } TEST(EventHandler, control) { - EXPECT_TRUE(NAS2D::EventHandler::control(NAS2D::EventHandler::KeyModifier::Ctrl)); - EXPECT_TRUE(NAS2D::EventHandler::control(NAS2D::EventHandler::KeyModifier::Ctrl | NAS2D::EventHandler::KeyModifier::CtrlLeft)); - EXPECT_FALSE(NAS2D::EventHandler::control(NAS2D::EventHandler::KeyModifier::Shift)); - EXPECT_FALSE(NAS2D::EventHandler::control(NAS2D::EventHandler::KeyModifier::Alt)); + EXPECT_TRUE(NAS2D::EventHandler::control(NAS2D::KeyModifier::Ctrl)); + EXPECT_TRUE(NAS2D::EventHandler::control(NAS2D::KeyModifier::Ctrl | NAS2D::KeyModifier::CtrlLeft)); + EXPECT_FALSE(NAS2D::EventHandler::control(NAS2D::KeyModifier::Shift)); + EXPECT_FALSE(NAS2D::EventHandler::control(NAS2D::KeyModifier::Alt)); } TEST(EventHandler, alt) { - EXPECT_TRUE(NAS2D::EventHandler::alt(NAS2D::EventHandler::KeyModifier::Alt)); - EXPECT_TRUE(NAS2D::EventHandler::alt(NAS2D::EventHandler::KeyModifier::Alt | NAS2D::EventHandler::KeyModifier::CtrlLeft)); - EXPECT_FALSE(NAS2D::EventHandler::alt(NAS2D::EventHandler::KeyModifier::Shift)); - EXPECT_FALSE(NAS2D::EventHandler::alt(NAS2D::EventHandler::KeyModifier::Ctrl)); + EXPECT_TRUE(NAS2D::EventHandler::alt(NAS2D::KeyModifier::Alt)); + EXPECT_TRUE(NAS2D::EventHandler::alt(NAS2D::KeyModifier::Alt | NAS2D::KeyModifier::CtrlLeft)); + EXPECT_FALSE(NAS2D::EventHandler::alt(NAS2D::KeyModifier::Shift)); + EXPECT_FALSE(NAS2D::EventHandler::alt(NAS2D::KeyModifier::Ctrl)); } From 23a6376e7033e5bdcd992eff4d30da2a167c596a Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Feb 2025 14:43:00 -0700 Subject: [PATCH 03/10] Rename enum files --- NAS2D/{EventHandlerKeyCode.h => EnumKeyCode.h} | 0 NAS2D/{EventHandlerKeyModifier.h => EnumKeyModifier.h} | 0 NAS2D/{EventHandlerMouseButton.h => EnumMouseButton.h} | 0 NAS2D/EventHandler.cpp | 2 +- NAS2D/NAS2D.vcxproj | 6 +++--- NAS2D/NAS2D.vcxproj.filters | 8 ++++---- test-graphics/TestGraphics.cpp | 2 +- test/EventHandler.test.cpp | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) rename NAS2D/{EventHandlerKeyCode.h => EnumKeyCode.h} (100%) rename NAS2D/{EventHandlerKeyModifier.h => EnumKeyModifier.h} (100%) rename NAS2D/{EventHandlerMouseButton.h => EnumMouseButton.h} (100%) diff --git a/NAS2D/EventHandlerKeyCode.h b/NAS2D/EnumKeyCode.h similarity index 100% rename from NAS2D/EventHandlerKeyCode.h rename to NAS2D/EnumKeyCode.h diff --git a/NAS2D/EventHandlerKeyModifier.h b/NAS2D/EnumKeyModifier.h similarity index 100% rename from NAS2D/EventHandlerKeyModifier.h rename to NAS2D/EnumKeyModifier.h diff --git a/NAS2D/EventHandlerMouseButton.h b/NAS2D/EnumMouseButton.h similarity index 100% rename from NAS2D/EventHandlerMouseButton.h rename to NAS2D/EnumMouseButton.h diff --git a/NAS2D/EventHandler.cpp b/NAS2D/EventHandler.cpp index b04625de..26834fff 100644 --- a/NAS2D/EventHandler.cpp +++ b/NAS2D/EventHandler.cpp @@ -9,7 +9,7 @@ // ================================================================================== #include "EventHandler.h" -#include "EventHandlerKeyModifier.h" +#include "EnumKeyModifier.h" #include diff --git a/NAS2D/NAS2D.vcxproj b/NAS2D/NAS2D.vcxproj index 961e1ae3..e2cd9db2 100644 --- a/NAS2D/NAS2D.vcxproj +++ b/NAS2D/NAS2D.vcxproj @@ -200,10 +200,10 @@ + + + - - - diff --git a/NAS2D/NAS2D.vcxproj.filters b/NAS2D/NAS2D.vcxproj.filters index ff252b8b..4f359c55 100644 --- a/NAS2D/NAS2D.vcxproj.filters +++ b/NAS2D/NAS2D.vcxproj.filters @@ -182,16 +182,16 @@ Header Files - + Header Files - + Header Files - + Header Files - + Header Files diff --git a/test-graphics/TestGraphics.cpp b/test-graphics/TestGraphics.cpp index 8993d039..93c91f64 100644 --- a/test-graphics/TestGraphics.cpp +++ b/test-graphics/TestGraphics.cpp @@ -1,6 +1,6 @@ #include "TestGraphics.h" -#include +#include #include #include #include diff --git a/test/EventHandler.test.cpp b/test/EventHandler.test.cpp index 13777cb6..46b1fbd1 100644 --- a/test/EventHandler.test.cpp +++ b/test/EventHandler.test.cpp @@ -1,5 +1,5 @@ #include "NAS2D/EventHandler.h" -#include "NAS2D/EventHandlerKeyModifier.h" +#include "NAS2D/EnumKeyModifier.h" #include From 970a6d0dc5bd77922efe99e30fe78a79e28c2a0c Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Feb 2025 14:45:22 -0700 Subject: [PATCH 04/10] Re-order so `KEY_FIRST` is first There should be a positional correspondence between `KEY_FIRST` and `KEY_LAST`. --- NAS2D/EnumKeyCode.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NAS2D/EnumKeyCode.h b/NAS2D/EnumKeyCode.h index 5fefe5f2..c2bee396 100644 --- a/NAS2D/EnumKeyCode.h +++ b/NAS2D/EnumKeyCode.h @@ -16,8 +16,8 @@ namespace enum class NAS2D::KeyCode : uint32_t { - KEY_UNKNOWN = 0, KEY_FIRST = 0, + KEY_UNKNOWN = 0, KEY_BACKSPACE = '\b', KEY_TAB = '\t', KEY_RETURN = '\r', From 279ba4c47987f2173a6eedcb85b17a72194205fe Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Feb 2025 14:46:56 -0700 Subject: [PATCH 05/10] Remove `using` aliases for compatibility The file rename already breaks source compatibility, so an update is needed anyway. --- NAS2D/EventHandler.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/NAS2D/EventHandler.h b/NAS2D/EventHandler.h index ff81af5d..739de527 100644 --- a/NAS2D/EventHandler.h +++ b/NAS2D/EventHandler.h @@ -30,10 +30,6 @@ namespace NAS2D class EventHandler { public: - using KeyModifier = NAS2D::KeyModifier; - using KeyCode = NAS2D::KeyCode; - using MouseButton = NAS2D::MouseButton; - using ActivateSignal = Signal; using WindowHiddenSignal = Signal; using WindowExposedSignal = Signal<>; From 0514166b7cfd2ff6fde20aa153101ac684941aa7 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Feb 2025 15:06:39 -0700 Subject: [PATCH 06/10] Wrap enums in `namespace NAS2D` Remove corresponding `NAS2D::` prefix from definition. --- NAS2D/EnumKeyCode.h | 5 ++++- NAS2D/EnumKeyModifier.h | 5 ++++- NAS2D/EnumMouseButton.h | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/NAS2D/EnumKeyCode.h b/NAS2D/EnumKeyCode.h index c2bee396..e1d1b4e9 100644 --- a/NAS2D/EnumKeyCode.h +++ b/NAS2D/EnumKeyCode.h @@ -14,7 +14,9 @@ namespace } -enum class NAS2D::KeyCode : uint32_t +namespace NAS2D +{ +enum class KeyCode : uint32_t { KEY_FIRST = 0, KEY_UNKNOWN = 0, @@ -188,3 +190,4 @@ enum class NAS2D::KeyCode : uint32_t // Additional Keys here KEY_LAST }; +} diff --git a/NAS2D/EnumKeyModifier.h b/NAS2D/EnumKeyModifier.h index 357229e6..f5a694e5 100644 --- a/NAS2D/EnumKeyModifier.h +++ b/NAS2D/EnumKeyModifier.h @@ -3,7 +3,9 @@ #include -enum class NAS2D::KeyModifier : uint16_t +namespace NAS2D +{ +enum class KeyModifier : uint16_t { None = 0x0000, ShiftLeft = 0x0001, @@ -23,3 +25,4 @@ enum class NAS2D::KeyModifier : uint16_t Mode = 0x4000, Reserved = 0x8000 }; +} diff --git a/NAS2D/EnumMouseButton.h b/NAS2D/EnumMouseButton.h index 60f87033..f44562b3 100644 --- a/NAS2D/EnumMouseButton.h +++ b/NAS2D/EnumMouseButton.h @@ -1,10 +1,13 @@ #pragma once -enum class NAS2D::MouseButton +namespace NAS2D +{ +enum class MouseButton { None, Left, Middle, Right }; +} From 8147fa1f788fd5529f2d05ca96dc7fbd60a92dcf Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Feb 2025 15:07:23 -0700 Subject: [PATCH 07/10] Indent new namespaces --- NAS2D/EnumKeyCode.h | 330 ++++++++++++++++++++-------------------- NAS2D/EnumKeyModifier.h | 40 ++--- NAS2D/EnumMouseButton.h | 14 +- 3 files changed, 192 insertions(+), 192 deletions(-) diff --git a/NAS2D/EnumKeyCode.h b/NAS2D/EnumKeyCode.h index e1d1b4e9..d799c0a1 100644 --- a/NAS2D/EnumKeyCode.h +++ b/NAS2D/EnumKeyCode.h @@ -16,178 +16,178 @@ namespace namespace NAS2D { -enum class KeyCode : uint32_t -{ - KEY_FIRST = 0, - KEY_UNKNOWN = 0, - KEY_BACKSPACE = '\b', - KEY_TAB = '\t', - KEY_RETURN = '\r', - KEY_ENTER = '\r', - KEY_ESCAPE = '\033', - KEY_SPACE = ' ', - KEY_EXCLAIM = '!', - KEY_QUOTEDBL = '"', - KEY_HASH = '#', - KEY_PERCENT = '%', - KEY_DOLLAR = '$', - KEY_AMPERSAND = '&', - KEY_QUOTE = '\'', - KEY_LEFTPAREN = '(', - KEY_RIGHTPAREN = ')', - KEY_ASTERISK = '*', - KEY_PLUS = '+', - KEY_COMMA = ',', - KEY_MINUS = '-', - KEY_PERIOD = '.', - KEY_SLASH = '/', - KEY_0 = '0', - KEY_1 = '1', - KEY_2 = '2', - KEY_3 = '3', - KEY_4 = '4', - KEY_5 = '5', - KEY_6 = '6', - KEY_7 = '7', - KEY_8 = '8', - KEY_9 = '9', - KEY_COLON = ':', - KEY_SEMICOLON = ';', - KEY_LESS = '<', - KEY_EQUALS = '=', - KEY_GREATER = '>', - KEY_QUESTION = '?', - KEY_AT = '@', + enum class KeyCode : uint32_t + { + KEY_FIRST = 0, + KEY_UNKNOWN = 0, + KEY_BACKSPACE = '\b', + KEY_TAB = '\t', + KEY_RETURN = '\r', + KEY_ENTER = '\r', + KEY_ESCAPE = '\033', + KEY_SPACE = ' ', + KEY_EXCLAIM = '!', + KEY_QUOTEDBL = '"', + KEY_HASH = '#', + KEY_PERCENT = '%', + KEY_DOLLAR = '$', + KEY_AMPERSAND = '&', + KEY_QUOTE = '\'', + KEY_LEFTPAREN = '(', + KEY_RIGHTPAREN = ')', + KEY_ASTERISK = '*', + KEY_PLUS = '+', + KEY_COMMA = ',', + KEY_MINUS = '-', + KEY_PERIOD = '.', + KEY_SLASH = '/', + KEY_0 = '0', + KEY_1 = '1', + KEY_2 = '2', + KEY_3 = '3', + KEY_4 = '4', + KEY_5 = '5', + KEY_6 = '6', + KEY_7 = '7', + KEY_8 = '8', + KEY_9 = '9', + KEY_COLON = ':', + KEY_SEMICOLON = ';', + KEY_LESS = '<', + KEY_EQUALS = '=', + KEY_GREATER = '>', + KEY_QUESTION = '?', + KEY_AT = '@', - // Special Symbols - KEY_LEFTBRACKET = '[', - KEY_BACKSLASH = '\\', - KEY_RIGHTBRACKET = ']', - KEY_CARET = '^', - KEY_UNDERSCORE = '_', - KEY_BACKQUOTE = '`', + // Special Symbols + KEY_LEFTBRACKET = '[', + KEY_BACKSLASH = '\\', + KEY_RIGHTBRACKET = ']', + KEY_CARET = '^', + KEY_UNDERSCORE = '_', + KEY_BACKQUOTE = '`', - KEY_a = 'a', - KEY_b = 'b', - KEY_c = 'c', - KEY_d = 'd', - KEY_e = 'e', - KEY_f = 'f', - KEY_g = 'g', - KEY_h = 'h', - KEY_i = 'i', - KEY_j = 'j', - KEY_k = 'k', - KEY_l = 'l', - KEY_m = 'm', - KEY_n = 'n', - KEY_o = 'o', - KEY_p = 'p', - KEY_q = 'q', - KEY_r = 'r', - KEY_s = 's', - KEY_t = 't', - KEY_u = 'u', - KEY_v = 'v', - KEY_w = 'w', - KEY_x = 'x', - KEY_y = 'y', - KEY_z = 'z', + KEY_a = 'a', + KEY_b = 'b', + KEY_c = 'c', + KEY_d = 'd', + KEY_e = 'e', + KEY_f = 'f', + KEY_g = 'g', + KEY_h = 'h', + KEY_i = 'i', + KEY_j = 'j', + KEY_k = 'k', + KEY_l = 'l', + KEY_m = 'm', + KEY_n = 'n', + KEY_o = 'o', + KEY_p = 'p', + KEY_q = 'q', + KEY_r = 'r', + KEY_s = 's', + KEY_t = 't', + KEY_u = 'u', + KEY_v = 'v', + KEY_w = 'w', + KEY_x = 'x', + KEY_y = 'y', + KEY_z = 'z', - // Numeric Keypad - KEY_KP1 = scanCodeToKeyCode(89), - KEY_KP2 = scanCodeToKeyCode(90), - KEY_KP3 = scanCodeToKeyCode(91), - KEY_KP4 = scanCodeToKeyCode(92), - KEY_KP5 = scanCodeToKeyCode(93), - KEY_KP6 = scanCodeToKeyCode(94), - KEY_KP7 = scanCodeToKeyCode(95), - KEY_KP8 = scanCodeToKeyCode(96), - KEY_KP9 = scanCodeToKeyCode(97), - KEY_KP0 = scanCodeToKeyCode(98), - KEY_KP_PERIOD = scanCodeToKeyCode(99), - KEY_KP_DIVIDE = scanCodeToKeyCode(84), - KEY_KP_MULTIPLY = scanCodeToKeyCode(85), - KEY_KP_MINUS = scanCodeToKeyCode(86), - KEY_KP_PLUS = scanCodeToKeyCode(87), - KEY_KP_ENTER = scanCodeToKeyCode(88), - KEY_KP_EQUALS = scanCodeToKeyCode(103), - KEY_KP_COMMA = scanCodeToKeyCode(133), + // Numeric Keypad + KEY_KP1 = scanCodeToKeyCode(89), + KEY_KP2 = scanCodeToKeyCode(90), + KEY_KP3 = scanCodeToKeyCode(91), + KEY_KP4 = scanCodeToKeyCode(92), + KEY_KP5 = scanCodeToKeyCode(93), + KEY_KP6 = scanCodeToKeyCode(94), + KEY_KP7 = scanCodeToKeyCode(95), + KEY_KP8 = scanCodeToKeyCode(96), + KEY_KP9 = scanCodeToKeyCode(97), + KEY_KP0 = scanCodeToKeyCode(98), + KEY_KP_PERIOD = scanCodeToKeyCode(99), + KEY_KP_DIVIDE = scanCodeToKeyCode(84), + KEY_KP_MULTIPLY = scanCodeToKeyCode(85), + KEY_KP_MINUS = scanCodeToKeyCode(86), + KEY_KP_PLUS = scanCodeToKeyCode(87), + KEY_KP_ENTER = scanCodeToKeyCode(88), + KEY_KP_EQUALS = scanCodeToKeyCode(103), + KEY_KP_COMMA = scanCodeToKeyCode(133), - // Arrows/Home/End - KEY_UP = scanCodeToKeyCode(82), - KEY_DOWN = scanCodeToKeyCode(81), - KEY_RIGHT = scanCodeToKeyCode(79), - KEY_LEFT = scanCodeToKeyCode(80), - KEY_INSERT = scanCodeToKeyCode(73), - KEY_PAUSE = scanCodeToKeyCode(72), - KEY_HOME = scanCodeToKeyCode(74), - KEY_END = scanCodeToKeyCode(77), - KEY_DELETE = '\177', - KEY_PAGEUP = scanCodeToKeyCode(75), - KEY_PAGEDOWN = scanCodeToKeyCode(78), + // Arrows/Home/End + KEY_UP = scanCodeToKeyCode(82), + KEY_DOWN = scanCodeToKeyCode(81), + KEY_RIGHT = scanCodeToKeyCode(79), + KEY_LEFT = scanCodeToKeyCode(80), + KEY_INSERT = scanCodeToKeyCode(73), + KEY_PAUSE = scanCodeToKeyCode(72), + KEY_HOME = scanCodeToKeyCode(74), + KEY_END = scanCodeToKeyCode(77), + KEY_DELETE = '\177', + KEY_PAGEUP = scanCodeToKeyCode(75), + KEY_PAGEDOWN = scanCodeToKeyCode(78), - // Function Keys - KEY_F1 = scanCodeToKeyCode(58), - KEY_F2 = scanCodeToKeyCode(59), - KEY_F3 = scanCodeToKeyCode(60), - KEY_F4 = scanCodeToKeyCode(61), - KEY_F5 = scanCodeToKeyCode(62), - KEY_F6 = scanCodeToKeyCode(63), - KEY_F7 = scanCodeToKeyCode(64), - KEY_F8 = scanCodeToKeyCode(65), - KEY_F9 = scanCodeToKeyCode(66), - KEY_F10 = scanCodeToKeyCode(67), - KEY_F11 = scanCodeToKeyCode(68), - KEY_F12 = scanCodeToKeyCode(69), - KEY_F13 = scanCodeToKeyCode(104), - KEY_F14 = scanCodeToKeyCode(105), - KEY_F15 = scanCodeToKeyCode(106), - KEY_F16 = scanCodeToKeyCode(107), - KEY_F17 = scanCodeToKeyCode(108), - KEY_F18 = scanCodeToKeyCode(109), - KEY_F19 = scanCodeToKeyCode(110), - KEY_F20 = scanCodeToKeyCode(111), - KEY_F21 = scanCodeToKeyCode(112), - KEY_F22 = scanCodeToKeyCode(113), - KEY_F23 = scanCodeToKeyCode(114), - KEY_F24 = scanCodeToKeyCode(115), + // Function Keys + KEY_F1 = scanCodeToKeyCode(58), + KEY_F2 = scanCodeToKeyCode(59), + KEY_F3 = scanCodeToKeyCode(60), + KEY_F4 = scanCodeToKeyCode(61), + KEY_F5 = scanCodeToKeyCode(62), + KEY_F6 = scanCodeToKeyCode(63), + KEY_F7 = scanCodeToKeyCode(64), + KEY_F8 = scanCodeToKeyCode(65), + KEY_F9 = scanCodeToKeyCode(66), + KEY_F10 = scanCodeToKeyCode(67), + KEY_F11 = scanCodeToKeyCode(68), + KEY_F12 = scanCodeToKeyCode(69), + KEY_F13 = scanCodeToKeyCode(104), + KEY_F14 = scanCodeToKeyCode(105), + KEY_F15 = scanCodeToKeyCode(106), + KEY_F16 = scanCodeToKeyCode(107), + KEY_F17 = scanCodeToKeyCode(108), + KEY_F18 = scanCodeToKeyCode(109), + KEY_F19 = scanCodeToKeyCode(110), + KEY_F20 = scanCodeToKeyCode(111), + KEY_F21 = scanCodeToKeyCode(112), + KEY_F22 = scanCodeToKeyCode(113), + KEY_F23 = scanCodeToKeyCode(114), + KEY_F24 = scanCodeToKeyCode(115), - // Key State Modifiers - KEY_NUMLOCK = scanCodeToKeyCode(83), - KEY_CAPSLOCK = scanCodeToKeyCode(57), - KEY_SCROLLOCK = scanCodeToKeyCode(71), - KEY_RSHIFT = scanCodeToKeyCode(229), - KEY_LSHIFT = scanCodeToKeyCode(225), - KEY_RCTRL = scanCodeToKeyCode(228), - KEY_LCTRL = scanCodeToKeyCode(224), - KEY_RALT = scanCodeToKeyCode(230), - KEY_LALT = scanCodeToKeyCode(226), - KEY_RGUI = scanCodeToKeyCode(231), - KEY_LGUI = scanCodeToKeyCode(227), - KEY_MODE = scanCodeToKeyCode(257), + // Key State Modifiers + KEY_NUMLOCK = scanCodeToKeyCode(83), + KEY_CAPSLOCK = scanCodeToKeyCode(57), + KEY_SCROLLOCK = scanCodeToKeyCode(71), + KEY_RSHIFT = scanCodeToKeyCode(229), + KEY_LSHIFT = scanCodeToKeyCode(225), + KEY_RCTRL = scanCodeToKeyCode(228), + KEY_LCTRL = scanCodeToKeyCode(224), + KEY_RALT = scanCodeToKeyCode(230), + KEY_LALT = scanCodeToKeyCode(226), + KEY_RGUI = scanCodeToKeyCode(231), + KEY_LGUI = scanCodeToKeyCode(227), + KEY_MODE = scanCodeToKeyCode(257), - // Miscellaneous function keys - KEY_HELP = scanCodeToKeyCode(117), - KEY_PRINTSCREEN = scanCodeToKeyCode(70), - KEY_ALTERASE = scanCodeToKeyCode(153), - KEY_SYSREQ = scanCodeToKeyCode(154), - KEY_CLEAR = scanCodeToKeyCode(159), - KEY_MENU = scanCodeToKeyCode(118), - KEY_POWER = scanCodeToKeyCode(102), - KEY_UNDO = scanCodeToKeyCode(122), + // Miscellaneous function keys + KEY_HELP = scanCodeToKeyCode(117), + KEY_PRINTSCREEN = scanCodeToKeyCode(70), + KEY_ALTERASE = scanCodeToKeyCode(153), + KEY_SYSREQ = scanCodeToKeyCode(154), + KEY_CLEAR = scanCodeToKeyCode(159), + KEY_MENU = scanCodeToKeyCode(118), + KEY_POWER = scanCodeToKeyCode(102), + KEY_UNDO = scanCodeToKeyCode(122), - // Audio Control - KEY_MUTE = scanCodeToKeyCode(127), - KEY_VOLUME_UP = scanCodeToKeyCode(128), - KEY_VOLUME_DOWN = scanCodeToKeyCode(129), - KEY_AUDIO_NEXT = scanCodeToKeyCode(258), - KEY_AUDIO_PREV = scanCodeToKeyCode(259), - KEY_AUDIO_STOP = scanCodeToKeyCode(260), - KEY_AUDIO_PLAY = scanCodeToKeyCode(261), - KEY_AUDIO_MUTE = scanCodeToKeyCode(262), + // Audio Control + KEY_MUTE = scanCodeToKeyCode(127), + KEY_VOLUME_UP = scanCodeToKeyCode(128), + KEY_VOLUME_DOWN = scanCodeToKeyCode(129), + KEY_AUDIO_NEXT = scanCodeToKeyCode(258), + KEY_AUDIO_PREV = scanCodeToKeyCode(259), + KEY_AUDIO_STOP = scanCodeToKeyCode(260), + KEY_AUDIO_PLAY = scanCodeToKeyCode(261), + KEY_AUDIO_MUTE = scanCodeToKeyCode(262), - // Additional Keys here - KEY_LAST -}; + // Additional Keys here + KEY_LAST + }; } diff --git a/NAS2D/EnumKeyModifier.h b/NAS2D/EnumKeyModifier.h index f5a694e5..8bbdf4f5 100644 --- a/NAS2D/EnumKeyModifier.h +++ b/NAS2D/EnumKeyModifier.h @@ -5,24 +5,24 @@ namespace NAS2D { -enum class KeyModifier : uint16_t -{ - None = 0x0000, - ShiftLeft = 0x0001, - ShiftRight = 0x0002, - Shift = ShiftLeft | ShiftRight, - CtrlLeft = 0x0040, - CtrlRight = 0x0080, - Ctrl = CtrlLeft | CtrlRight, - AltLeft = 0x0100, - AltRight = 0x0200, - Alt = AltLeft | AltRight, - MetaLeft = 0x0400, - MetaRight = 0x0800, - Meta = MetaLeft | MetaRight, - Num = 0x1000, - Caps = 0x2000, - Mode = 0x4000, - Reserved = 0x8000 -}; + enum class KeyModifier : uint16_t + { + None = 0x0000, + ShiftLeft = 0x0001, + ShiftRight = 0x0002, + Shift = ShiftLeft | ShiftRight, + CtrlLeft = 0x0040, + CtrlRight = 0x0080, + Ctrl = CtrlLeft | CtrlRight, + AltLeft = 0x0100, + AltRight = 0x0200, + Alt = AltLeft | AltRight, + MetaLeft = 0x0400, + MetaRight = 0x0800, + Meta = MetaLeft | MetaRight, + Num = 0x1000, + Caps = 0x2000, + Mode = 0x4000, + Reserved = 0x8000 + }; } diff --git a/NAS2D/EnumMouseButton.h b/NAS2D/EnumMouseButton.h index f44562b3..a3f7b57b 100644 --- a/NAS2D/EnumMouseButton.h +++ b/NAS2D/EnumMouseButton.h @@ -3,11 +3,11 @@ namespace NAS2D { -enum class MouseButton -{ - None, - Left, - Middle, - Right -}; + enum class MouseButton + { + None, + Left, + Middle, + Right + }; } From fc949103b28588385fbcc3e8477ebb2d14707400 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Feb 2025 15:09:26 -0700 Subject: [PATCH 08/10] Move `KeyModifier` operators to enum file --- NAS2D/EnumKeyModifier.cpp | 37 +++++++++++++++++++++++++++++++++++++ NAS2D/EnumKeyModifier.h | 6 ++++++ NAS2D/EventHandler.cpp | 33 --------------------------------- NAS2D/EventHandler.h | 8 -------- NAS2D/NAS2D.vcxproj | 1 + NAS2D/NAS2D.vcxproj.filters | 3 +++ 6 files changed, 47 insertions(+), 41 deletions(-) create mode 100644 NAS2D/EnumKeyModifier.cpp diff --git a/NAS2D/EnumKeyModifier.cpp b/NAS2D/EnumKeyModifier.cpp new file mode 100644 index 00000000..3cca208f --- /dev/null +++ b/NAS2D/EnumKeyModifier.cpp @@ -0,0 +1,37 @@ +#include "EnumKeyModifier.h" + +#include + + +namespace NAS2D +{ + KeyModifier& operator|=(KeyModifier& a, const KeyModifier& b) noexcept + { + using underlying = std::underlying_type_t; + auto underlying_a = static_cast(a); + auto underlying_b = static_cast(b); + a = static_cast(underlying_a | underlying_b); + return a; + } + + KeyModifier& operator&=(KeyModifier& a, const KeyModifier& b) noexcept + { + using underlying = std::underlying_type_t; + auto underlying_a = static_cast(a); + auto underlying_b = static_cast(b); + a = static_cast(underlying_a & underlying_b); + return a; + } + + KeyModifier operator|(KeyModifier a, const KeyModifier& b) noexcept + { + a |= b; + return a; + } + + KeyModifier operator&(KeyModifier a, const KeyModifier& b) noexcept + { + a &= b; + return a; + } +} diff --git a/NAS2D/EnumKeyModifier.h b/NAS2D/EnumKeyModifier.h index 8bbdf4f5..59c61fe3 100644 --- a/NAS2D/EnumKeyModifier.h +++ b/NAS2D/EnumKeyModifier.h @@ -25,4 +25,10 @@ namespace NAS2D Mode = 0x4000, Reserved = 0x8000 }; + + + KeyModifier& operator|=(KeyModifier& a, const KeyModifier& b) noexcept; + KeyModifier& operator&=(KeyModifier& a, const KeyModifier& b) noexcept; + KeyModifier operator|(KeyModifier a, const KeyModifier& b) noexcept; + KeyModifier operator&(KeyModifier a, const KeyModifier& b) noexcept; } diff --git a/NAS2D/EventHandler.cpp b/NAS2D/EventHandler.cpp index 26834fff..eb618a2e 100644 --- a/NAS2D/EventHandler.cpp +++ b/NAS2D/EventHandler.cpp @@ -28,39 +28,6 @@ using namespace NAS2D; */ const int MAX_MESSAGE_PROCESSING = 100; -namespace NAS2D -{ - KeyModifier& operator|=(KeyModifier& a, const KeyModifier& b) noexcept - { - using underlying = std::underlying_type_t; - auto underlying_a = static_cast(a); - auto underlying_b = static_cast(b); - a = static_cast(underlying_a | underlying_b); - return a; - } - - KeyModifier& operator&=(KeyModifier& a, const KeyModifier& b) noexcept - { - using underlying = std::underlying_type_t; - auto underlying_a = static_cast(a); - auto underlying_b = static_cast(b); - a = static_cast(underlying_a & underlying_b); - return a; - } - - KeyModifier operator|(KeyModifier a, const KeyModifier& b) noexcept - { - a |= b; - return a; - } - - KeyModifier operator&(KeyModifier a, const KeyModifier& b) noexcept - { - a &= b; - return a; - } -} - /** * Triggered whenever the application gains or loses focus. diff --git a/NAS2D/EventHandler.h b/NAS2D/EventHandler.h index 739de527..d86d1eb3 100644 --- a/NAS2D/EventHandler.h +++ b/NAS2D/EventHandler.h @@ -142,12 +142,4 @@ namespace NAS2D }; void postQuitEvent(); - - - KeyModifier& operator|=(KeyModifier& a, const KeyModifier& b) noexcept; - KeyModifier& operator&=(KeyModifier& a, const KeyModifier& b) noexcept; - KeyModifier operator|(KeyModifier a, const KeyModifier& b) noexcept; - KeyModifier operator&(KeyModifier a, const KeyModifier& b) noexcept; - - } // namespace diff --git a/NAS2D/NAS2D.vcxproj b/NAS2D/NAS2D.vcxproj index e2cd9db2..9a53f78e 100644 --- a/NAS2D/NAS2D.vcxproj +++ b/NAS2D/NAS2D.vcxproj @@ -152,6 +152,7 @@ + diff --git a/NAS2D/NAS2D.vcxproj.filters b/NAS2D/NAS2D.vcxproj.filters index 4f359c55..5f448fcd 100644 --- a/NAS2D/NAS2D.vcxproj.filters +++ b/NAS2D/NAS2D.vcxproj.filters @@ -42,6 +42,9 @@ Source Files + + Source Files + Source Files From d55984c4578e0105bbef84c6ecdc86b57c9ada11 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Feb 2025 15:13:46 -0700 Subject: [PATCH 09/10] Add trailing comma to enums --- NAS2D/EnumKeyCode.h | 2 +- NAS2D/EnumKeyModifier.h | 2 +- NAS2D/EnumMouseButton.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NAS2D/EnumKeyCode.h b/NAS2D/EnumKeyCode.h index d799c0a1..193bde06 100644 --- a/NAS2D/EnumKeyCode.h +++ b/NAS2D/EnumKeyCode.h @@ -188,6 +188,6 @@ namespace NAS2D KEY_AUDIO_MUTE = scanCodeToKeyCode(262), // Additional Keys here - KEY_LAST + KEY_LAST, }; } diff --git a/NAS2D/EnumKeyModifier.h b/NAS2D/EnumKeyModifier.h index 59c61fe3..d30e096f 100644 --- a/NAS2D/EnumKeyModifier.h +++ b/NAS2D/EnumKeyModifier.h @@ -23,7 +23,7 @@ namespace NAS2D Num = 0x1000, Caps = 0x2000, Mode = 0x4000, - Reserved = 0x8000 + Reserved = 0x8000, }; diff --git a/NAS2D/EnumMouseButton.h b/NAS2D/EnumMouseButton.h index a3f7b57b..da655531 100644 --- a/NAS2D/EnumMouseButton.h +++ b/NAS2D/EnumMouseButton.h @@ -8,6 +8,6 @@ namespace NAS2D None, Left, Middle, - Right + Right, }; } From 637848fb51b825d02eda58982046df3e363f01ab Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 13 Feb 2025 15:14:13 -0700 Subject: [PATCH 10/10] Remove potentially confusing comment It looks like a block comment, but you definitely don't want to add things to the end of the block. --- NAS2D/EnumKeyCode.h | 1 - 1 file changed, 1 deletion(-) diff --git a/NAS2D/EnumKeyCode.h b/NAS2D/EnumKeyCode.h index 193bde06..5311195d 100644 --- a/NAS2D/EnumKeyCode.h +++ b/NAS2D/EnumKeyCode.h @@ -187,7 +187,6 @@ namespace NAS2D KEY_AUDIO_PLAY = scanCodeToKeyCode(261), KEY_AUDIO_MUTE = scanCodeToKeyCode(262), - // Additional Keys here KEY_LAST, }; }