X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fui%2FHUD.hpp;h=d15643f4d4476090fc98138e10bcdaeffc2cbd14;hb=9da6ac5e93d79e79658a95d5f6efe42146873583;hp=8978c91e23510d7d332b7015dc3bf1729086e4fa;hpb=376fc1fca87fcdd22dabadf6d01d245ef8c3cedd;p=blank.git diff --git a/src/ui/HUD.hpp b/src/ui/HUD.hpp index 8978c91..d15643f 100644 --- a/src/ui/HUD.hpp +++ b/src/ui/HUD.hpp @@ -2,6 +2,7 @@ #define BLANK_UI_HUD_H_ #include "FixedText.hpp" +#include "MessageBox.hpp" #include "../model/EntityModel.hpp" #include "../model/OutlineModel.hpp" @@ -12,33 +13,75 @@ namespace blank { class Block; class BlockTypeRegistry; +class Config; +class Environment; class Font; +class Player; class Viewport; class HUD { public: - HUD(const BlockTypeRegistry &, const Font &); + explicit HUD(Environment &, Config &, const Player &); HUD(const HUD &) = delete; HUD &operator =(const HUD &) = delete; - void Display(const Block &); + // focus + void FocusBlock(const Chunk &, int); + void FocusEntity(const Entity &); + void FocusNone(); + // "inventory" + void DisplayNone(); + void Display(const BlockType &); + + // debug overlay + void UpdateDebug(); + void UpdateCounter(); + void UpdatePosition(); + void UpdateOrientation(); + + // message box + void PostMessage(const char *); + void PostMessage(const std::string &msg) { + PostMessage(msg.c_str()); + } + + void Update(int dt); void Render(Viewport &) noexcept; private: - const BlockTypeRegistry &types; - const Font &font; + Environment &env; + Config &config; + const Player &player; + + // block focus + OutlineModel outline; + glm::mat4 outline_transform; + bool outline_visible; + // "inventory" EntityModel block; EntityModel::Buffer block_buf; glm::mat4 block_transform; - FixedText block_label; - bool block_visible; + // debug overlay + FixedText counter_text; + FixedText position_text; + FixedText orientation_text; + FixedText block_text; + FixedText entity_text; + bool show_block; + bool show_entity; + + // message box + MessageBox messages; + IntervalTimer msg_timer; + + // crosshair OutlineModel crosshair; };