X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fui%2FInterface.hpp;h=eaed0fc0b15b5122752bedad02397068a0fcacc3;hb=5998b18978bd8e7a0c9deb516474634e1d3521c9;hp=d01fe254a665ed0011c214a97fae7af4b9dbb030;hpb=37a1465a83e4ac4363ed0d8e0fa1ce5055dd2db4;p=blank.git diff --git a/src/ui/Interface.hpp b/src/ui/Interface.hpp index d01fe25..eaed0fc 100644 --- a/src/ui/Interface.hpp +++ b/src/ui/Interface.hpp @@ -4,22 +4,25 @@ #include "HUD.hpp" #include "../app/FPSController.hpp" #include "../app/IntervalTimer.hpp" +#include "../audio/Sound.hpp" +#include "../graphics/FixedText.hpp" #include "../graphics/Font.hpp" +#include "../graphics/MessageBox.hpp" #include "../model/geometry.hpp" #include "../model/OutlineModel.hpp" #include "../world/Block.hpp" -#include +#include #include namespace blank { class Assets; +class Audio; class Chunk; -class BlendedSprite; -class DirectionalLighting; class FrameCounter; +class Viewport; class World; class Interface { @@ -32,10 +35,11 @@ public: bool keyboard_disabled = false; bool mouse_disabled = false; + bool audio_disabled = false; bool visual_disabled = false; }; - Interface(const Config &, const Assets &, const FrameCounter &, World &); + Interface(const Config &, const Assets &, Audio &, const FrameCounter &, World &); void HandlePress(const SDL_KeyboardEvent &); void HandleRelease(const SDL_KeyboardEvent &); @@ -43,7 +47,6 @@ public: void HandlePress(const SDL_MouseButtonEvent &); void HandleRelease(const SDL_MouseButtonEvent &); void Handle(const SDL_MouseWheelEvent &); - void Handle(const SDL_WindowEvent &) noexcept; void FaceBlock(); void TurnBlock(); @@ -63,17 +66,26 @@ public: void SelectNext(); void SelectPrevious(); + void ToggleAudio(); + void ToggleVisual(); + void ToggleCounter(); void UpdateCounter(); + void PostMessage(const char *); + void PostMessage(const std::string &msg) { + PostMessage(msg.c_str()); + } + void Update(int dt); - void Render(DirectionalLighting &, BlendedSprite &) noexcept; + void Render(Viewport &) noexcept; private: void CheckAim(); private: + Audio &audio; const FrameCounter &counter; World &world; FPSController ctrl; @@ -88,11 +100,9 @@ private: OutlineModel outline; glm::mat4 outline_transform; - bool show_counter; - Texture counter_tex; - SpriteModel counter_sprite; - glm::mat4 counter_transform; - SDL_Color counter_color; + FixedText counter_text; + MessageBox messages; + IntervalTimer msg_timer; Config config; @@ -102,6 +112,9 @@ private: Block remove; Block selection; + Sound place_sound; + Sound remove_sound; + glm::tvec3 fwd, rev; };