#pragma once #include "libtcod.hpp" #include "Persistance.h" class Menu { public: enum MenuItemCode { NONE, NEW_GAME, CONTINUE, EXIT, CONSTITUTION, STRENGTH, AGILITY }; enum DisplayMode { MAIN, PAUSE }; ~Menu(); void clear(); void addItem(MenuItemCode code, std::string label); MenuItemCode pick(tcod::Context* ctx, tcod::Console* con, DisplayMode mode = MAIN); protected: struct MenuItem { MenuItemCode code; std::string label; }; TCODList items; }; class Gui : public Persistent { public: TCOD_ColorRGB darkGrey; TCOD_ColorRGB lightGrey; TCOD_ColorRGB white; TCOD_ColorRGB red; TCOD_ColorRGB green; TCOD_ColorRGB blue; TCOD_ColorRGB yellow; TCOD_ColorRGB black; TCOD_ColorRGB lightBlue; TCOD_ColorRGB lightGreen; TCOD_ColorRGB lightRed; TCOD_ColorRGB lightYellow; TCOD_ColorRGB lightPurple; TCOD_ColorRGB purple; 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; };