// Copy of game_launcher.h for emulator build #include #include #include #include "input_event.h" #include "game.h" class LowLevelRenderer; class LowLevelGUI; class InputManager; struct GameEntry { const char* name; const char* description; std::function factory; }; class GameLauncher { public: GameLauncher(uint16_t width, uint16_t height, LowLevelRenderer* renderer, LowLevelGUI* gui, InputManager* input_manager); void register_game(const char* name, const char* description, std::function factory); void draw(); bool update(const InputEvent& event); Game* get_selected_game(); void reset(); bool is_game_selected() const { return selected_game != nullptr; } private: uint16_t width; uint16_t height; LowLevelRenderer* renderer; LowLevelGUI* gui; InputManager* input_manager; std::vector games; int selected_index; Game* selected_game; int current_page; static const int MENU_Y_START = 60; static const int MENU_ITEM_HEIGHT = 40; static const int MENU_PADDING = 10; static const int GAMES_PER_PAGE = 4; static const int NAV_BUTTON_Y = 235; static const int PREV_BUTTON_X = 30; static const int NEXT_BUTTON_X = 200; static const int BUTTON_WIDTH = 150; static const int BUTTON_HEIGHT = 40; int get_total_pages() const; int get_page_start_index() const; int get_page_end_index() const; };