Initial engine repository

This commit is contained in:
2026-06-08 19:58:35 +08:00
commit 7a925c3736
137 changed files with 162421 additions and 0 deletions
@@ -0,0 +1,208 @@
#pragma once
#include <frostbite2D/event/event.h>
#include <SDL2/SDL_keyboard.h>
#include <string>
namespace frostbite2D {
enum class KeyCode {
Unknown = SDLK_UNKNOWN,
Return = SDLK_RETURN,
Escape = SDLK_ESCAPE,
Backspace = SDLK_BACKSPACE,
Tab = SDLK_TAB,
Space = SDLK_SPACE,
Exclaim = SDLK_EXCLAIM,
Quotedbl = SDLK_QUOTEDBL,
Hash = SDLK_HASH,
Percent = SDLK_PERCENT,
Dollar = SDLK_DOLLAR,
Ampersand = SDLK_AMPERSAND,
Quote = SDLK_QUOTE,
LeftParen = SDLK_LEFTPAREN,
RightParen = SDLK_RIGHTPAREN,
Asterisk = SDLK_ASTERISK,
Plus = SDLK_PLUS,
Comma = SDLK_COMMA,
Minus = SDLK_MINUS,
Period = SDLK_PERIOD,
Slash = SDLK_SLASH,
Num0 = SDLK_0,
Num1 = SDLK_1,
Num2 = SDLK_2,
Num3 = SDLK_3,
Num4 = SDLK_4,
Num5 = SDLK_5,
Num6 = SDLK_6,
Num7 = SDLK_7,
Num8 = SDLK_8,
Num9 = SDLK_9,
Colon = SDLK_COLON,
Semicolon = SDLK_SEMICOLON,
Less = SDLK_LESS,
Equals = SDLK_EQUALS,
Greater = SDLK_GREATER,
Question = SDLK_QUESTION,
At = SDLK_AT,
LeftBracket = SDLK_LEFTBRACKET,
Backslash = SDLK_BACKSLASH,
RightBracket = SDLK_RIGHTBRACKET,
Caret = SDLK_CARET,
Underscore = SDLK_UNDERSCORE,
Backquote = SDLK_BACKQUOTE,
a = SDLK_a,
b = SDLK_b,
c = SDLK_c,
d = SDLK_d,
e = SDLK_e,
f = SDLK_f,
g = SDLK_g,
h = SDLK_h,
i = SDLK_i,
j = SDLK_j,
k = SDLK_k,
l = SDLK_l,
m = SDLK_m,
n = SDLK_n,
o = SDLK_o,
p = SDLK_p,
q = SDLK_q,
r = SDLK_r,
s = SDLK_s,
t = SDLK_t,
u = SDLK_u,
v = SDLK_v,
w = SDLK_w,
x = SDLK_x,
y = SDLK_y,
z = SDLK_z,
CapsLock = SDLK_CAPSLOCK,
F1 = SDLK_F1,
F2 = SDLK_F2,
F3 = SDLK_F3,
F4 = SDLK_F4,
F5 = SDLK_F5,
F6 = SDLK_F6,
F7 = SDLK_F7,
F8 = SDLK_F8,
F9 = SDLK_F9,
F10 = SDLK_F10,
F11 = SDLK_F11,
F12 = SDLK_F12,
PrintScreen = SDLK_PRINTSCREEN,
ScrollLock = SDLK_SCROLLLOCK,
Pause = SDLK_PAUSE,
Insert = SDLK_INSERT,
Home = SDLK_HOME,
PageUp = SDLK_PAGEUP,
Delete = SDLK_DELETE,
End = SDLK_END,
PageDown = SDLK_PAGEDOWN,
Right = SDLK_RIGHT,
Left = SDLK_LEFT,
Down = SDLK_DOWN,
Up = SDLK_UP,
Numpad0 = SDLK_KP_0,
Numpad1 = SDLK_KP_1,
Numpad2 = SDLK_KP_2,
Numpad3 = SDLK_KP_3,
Numpad4 = SDLK_KP_4,
Numpad5 = SDLK_KP_5,
Numpad6 = SDLK_KP_6,
Numpad7 = SDLK_KP_7,
Numpad8 = SDLK_KP_8,
Numpad9 = SDLK_KP_9,
NumpadDecimal = SDLK_KP_DECIMAL,
NumpadDivide = SDLK_KP_DIVIDE,
NumpadMultiply = SDLK_KP_MULTIPLY,
NumpadMinus = SDLK_KP_MINUS,
NumpadPlus = SDLK_KP_PLUS,
NumpadEnter = SDLK_KP_ENTER,
NumpadEquals = SDLK_KP_EQUALS,
LShift = SDLK_LSHIFT,
RShift = SDLK_RSHIFT,
LCtrl = SDLK_LCTRL,
RCtrl = SDLK_RCTRL,
LAlt = SDLK_LALT,
RAlt = SDLK_RALT,
LGui = SDLK_LGUI,
RGui = SDLK_RGUI
};
enum class KeyMod {
None = KMOD_NONE,
LShift = KMOD_LSHIFT,
RShift = KMOD_RSHIFT,
Shift = KMOD_SHIFT,
LCtrl = KMOD_LCTRL,
RCtrl = KMOD_RCTRL,
Ctrl = KMOD_CTRL,
LAlt = KMOD_LALT,
RAlt = KMOD_RALT,
Alt = KMOD_ALT,
LGui = KMOD_LGUI,
RGui = KMOD_RGUI,
Gui = KMOD_GUI,
Num = KMOD_NUM,
Caps = KMOD_CAPS
};
class KeyEvent : public Event {
public:
KeyEvent(uint32 timestamp, KeyCode keyCode, KeyMod modifiers, bool repeat)
: Event(timestamp)
, keyCode_(keyCode)
, modifiers_(modifiers)
, repeat_(repeat) {}
EventType getType() const override {
return EventType::KeyDown;
}
KeyCode getKeyCode() const { return keyCode_; }
KeyMod getModifiers() const { return modifiers_; }
bool isRepeat() const { return repeat_; }
private:
KeyCode keyCode_;
KeyMod modifiers_;
bool repeat_;
};
class KeyUpEvent : public Event {
public:
KeyUpEvent(uint32 timestamp, KeyCode keyCode, KeyMod modifiers)
: Event(timestamp)
, keyCode_(keyCode)
, modifiers_(modifiers) {}
EventType getType() const override {
return EventType::KeyUp;
}
KeyCode getKeyCode() const { return keyCode_; }
KeyMod getModifiers() const { return modifiers_; }
private:
KeyCode keyCode_;
KeyMod modifiers_;
};
class KeyTextEvent : public Event {
public:
KeyTextEvent(uint32 timestamp, const std::string& text)
: Event(timestamp)
, text_(text) {}
EventType getType() const override {
return EventType::KeyText;
}
const std::string& getText() const { return text_; }
private:
std::string text_;
};
}