X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;ds=sidebyside;f=src%2Fui%2FInterface.hpp;h=d01fe254a665ed0011c214a97fae7af4b9dbb030;hb=37a1465a83e4ac4363ed0d8e0fa1ce5055dd2db4;hp=0c140fb88ff40ad18357cd3b42cfce17fbfda5e2;hpb=b7d09e1e35ef90282c97509e0020b20db3c7ea9f;p=blank.git diff --git a/src/ui/Interface.hpp b/src/ui/Interface.hpp index 0c140fb..d01fe25 100644 --- a/src/ui/Interface.hpp +++ b/src/ui/Interface.hpp @@ -4,6 +4,7 @@ #include "HUD.hpp" #include "../app/FPSController.hpp" #include "../app/IntervalTimer.hpp" +#include "../graphics/Font.hpp" #include "../model/geometry.hpp" #include "../model/OutlineModel.hpp" #include "../world/Block.hpp" @@ -14,8 +15,11 @@ namespace blank { +class Assets; class Chunk; +class BlendedSprite; class DirectionalLighting; +class FrameCounter; class World; class Interface { @@ -31,7 +35,7 @@ public: bool visual_disabled = false; }; - Interface(const Config &, World &); + Interface(const Config &, const Assets &, const FrameCounter &, World &); void HandlePress(const SDL_KeyboardEvent &); void HandleRelease(const SDL_KeyboardEvent &); @@ -44,6 +48,8 @@ public: void FaceBlock(); void TurnBlock(); + void ToggleCollision(); + void PickBlock(); void PlaceBlock(); void RemoveBlock() noexcept; @@ -57,16 +63,21 @@ public: void SelectNext(); void SelectPrevious(); + void ToggleCounter(); + void UpdateCounter(); + void Update(int dt); - void Render(DirectionalLighting &) noexcept; + void Render(DirectionalLighting &, BlendedSprite &) noexcept; private: void CheckAim(); private: + const FrameCounter &counter; World &world; FPSController ctrl; + Font font; HUD hud; Ray aim; @@ -77,6 +88,12 @@ private: OutlineModel outline; glm::mat4 outline_transform; + bool show_counter; + Texture counter_tex; + SpriteModel counter_sprite; + glm::mat4 counter_transform; + SDL_Color counter_color; + Config config; IntervalTimer place_timer;