input manager provides ground of truth on device input choise

This commit is contained in:
Adolfo Reyna
2026-01-30 22:07:31 -05:00
parent 436245a7a2
commit f860d4f5e6
10 changed files with 97 additions and 44 deletions

View File

@@ -12,6 +12,9 @@
#include "display/low_level_render.h"
#include "display/low_level_gui.h"
// Forward declaration
class InputManager;
/**
* @brief Abstract base class for all games
*
@@ -31,9 +34,10 @@ public:
* @param height Display height in pixels
* @param renderer Pointer to low-level rendering interface
* @param gui Pointer to GUI drawing primitives
* @param input_manager Pointer to input manager for capability queries
*/
Game(uint16_t width, uint16_t height, LowLevelRenderer* renderer, LowLevelGUI* gui)
: width(width), height(height), renderer(renderer), gui(gui) {
Game(uint16_t width, uint16_t height, LowLevelRenderer* renderer, LowLevelGUI* gui, InputManager* input_manager)
: width(width), height(height), renderer(renderer), gui(gui), input_manager(input_manager) {
}
/**
@@ -68,6 +72,16 @@ public:
* The actual screen refresh happens in the main loop on Core 1.
*/
virtual void draw() = 0;
/**
* @brief Check if game wants to exit back to launcher
*
* Games can override this to signal they want to return to the menu.
* Default implementation returns false.
*
* @return true if game wants to exit, false to continue playing
*/
virtual bool wants_to_exit() const { return false; }
protected:
// Display dimensions
@@ -77,6 +91,9 @@ protected:
// Rendering interfaces (provided by basic1.cpp)
LowLevelRenderer* renderer;
LowLevelGUI* gui;
// Input manager for capability queries
InputManager* input_manager;
};
#endif // GAME_H