From 0debac04a0b10e2e9c71e0d9d4df116b160f4769 Mon Sep 17 00:00:00 2001 From: dawidg81 Date: Fri, 13 Feb 2026 17:36:37 +0100 Subject: Updated graphics.h and graphics.cpp to handle common user input --- lib/graphics.h | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'lib/graphics.h') diff --git a/lib/graphics.h b/lib/graphics.h index cc0bd63..411f1aa 100644 --- a/lib/graphics.h +++ b/lib/graphics.h @@ -53,4 +53,76 @@ void drawPixel(WindowHandle* window, int x, int y, const Color& color); void setDrawColor(WindowHandle* window, const Color& color); void delay(uint32_t milliseconds); +// ============================================================================ +// INPUT HANDLING +// ============================================================================ + +// Key codes (cross-platform) +enum KeyCode { + KEY_UNKNOWN = 0, + + // Arrow keys + KEY_UP, + KEY_DOWN, + KEY_LEFT, + KEY_RIGHT, + + // Letter keys + KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, + KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, + KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, + KEY_Y, KEY_Z, + + // Number keys + KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, + KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, + + // Function keys + KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, + KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_F11, KEY_F12, + + // Special keys + KEY_SPACE, + KEY_ENTER, + KEY_ESCAPE, + KEY_BACKSPACE, + KEY_TAB, + KEY_SHIFT, + KEY_CONTROL, + KEY_ALT, + + // Other + KEY_PLUS, + KEY_MINUS, + + KEY_COUNT // Total number of keys +}; + +// Mouse buttons +enum MouseButton { + MOUSE_LEFT = 0, + MOUSE_RIGHT, + MOUSE_MIDDLE, + MOUSE_BUTTON_COUNT +}; + +// Keyboard input functions +bool keyDown(WindowHandle* window, KeyCode key); +bool keyPressed(WindowHandle* window, KeyCode key); // True only on the frame the key was pressed +bool keyReleased(WindowHandle* window, KeyCode key); // True only on the frame the key was released + +// Mouse input functions +bool mouseDown(WindowHandle* window, MouseButton button); +bool mousePressed(WindowHandle* window, MouseButton button); +bool mouseReleased(WindowHandle* window, MouseButton button); + +void getMousePosition(WindowHandle* window, int& x, int& y); +void getMouseDelta(WindowHandle* window, int& dx, int& dy); +void setMousePosition(WindowHandle* window, int x, int y); +void setMouseLocked(WindowHandle* window, bool locked); // Locks mouse to window center (for FPS games) +bool isMouseLocked(WindowHandle* window); + +// Mouse wheel +int getMouseWheelDelta(WindowHandle* window); + #endif // GRAPHICS_H \ No newline at end of file -- cgit v1.2.3