Refactored menu logic into MenuController interface, updated RT64

This commit is contained in:
Mr-Wiseguy
2024-01-01 22:36:06 -05:00
parent 09bacbe82c
commit e9e42322f0
7 changed files with 216 additions and 145 deletions
+18 -2
View File
@@ -2,6 +2,7 @@
#define __RECOMP_UI__
#include <memory>
#include <string>
#include "SDL.h"
@@ -9,15 +10,30 @@ namespace Rml {
class ElementDocument;
class EventListenerInstancer;
class Context;
class Event;
}
namespace recomp {
class UiEventListenerInstancer;
class MenuController {
public:
virtual ~MenuController() {}
virtual Rml::ElementDocument* load_document(Rml::Context* context) = 0;
virtual void register_events(UiEventListenerInstancer& listener) = 0;
virtual void make_bindings(Rml::Context* context) = 0;
};
std::unique_ptr<MenuController> create_launcher_menu();
std::unique_ptr<MenuController> create_config_menu();
using event_handler_t = void(Rml::Event&);
void queue_event(const SDL_Event& event);
bool try_deque_event(SDL_Event& out);
std::unique_ptr<Rml::EventListenerInstancer> make_event_listener_instancer();
void make_ui_bindings(Rml::Context* context);
std::unique_ptr<UiEventListenerInstancer> make_event_listener_instancer();
void register_event(UiEventListenerInstancer& listener, const std::string& name, event_handler_t* handler);
enum class Menu {
Launcher,