#pragma once #include "font_writer.hpp" #include #include namespace Menu { using namespace JabyEngine; class SimpleMenu { public: struct Entry { const char* name; }; typedef void (*Callback)(uint32_t selection); private: Callback selection_callback; const Entry* entries; size_t size; uint8_t cur_selection; public: void setup(Callback callback, const Entry* entries, size_t size); template void setup(Callback callback, const Entry (&entries)[N]) { SimpleMenu::setup(callback, entries, N); } void update(JabyEngine::FontWriter& font_writer, State& cursor, const GPU::PositionI16& start); }; class BackMenu { private: JabyEngine::FontWriter* font_writer; SimpleTimer timeout; bool waiting; public: void setup(JabyEngine::FontWriter* font_writer); void reset() { this->timeout.reset(); this->waiting = false; } bool update(const GPU::PositionI16& position, bool auto_clear = true); void render(); }; }