#pragma once #include "libtcod.hpp" #include "Persistance.h" class Menu { public: enum MenuItemCode { NONE, NEW_GAME, CONTINUE, EXIT }; ~Menu(); void clear(); void addItem(MenuItemCode code, std::string label); MenuItemCode pick(tcod::Context* ctx, tcod::Console* con); protected: struct MenuItem { MenuItemCode code; std::string label; }; TCODList items; }; class Gui : public Persistent { public: Gui(tcod::Context *ctx, tcod::Console *root); ~Gui(); void render(); void message(const TCOD_ColorRGB& col, const char* text, ...); void load(TCODZip& zip); void save(TCODZip& zip); void clear(); Menu menu; protected: tcod::Console con; tcod::Console* root; void renderBar(int x, int y, int width, std::string name, float value, float maxValue, const TCOD_ColorRGB& barColor, const TCOD_ColorRGB& backColor); void renderMouseLook(); struct Message { std::string text; TCOD_ColorRGB col; Message(std::string text, const TCOD_ColorRGB& col); ~Message(); }; TCODList log; };