X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fui%2FInterface.hpp;h=5cf82076a74b0f629dc15930f2dca2b3c001296e;hb=e872614d387c4bfc3afb04bcc7cba3d9b8f3954b;hp=0c140fb88ff40ad18357cd3b42cfce17fbfda5e2;hpb=b7d09e1e35ef90282c97509e0020b20db3c7ea9f;p=blank.git diff --git a/src/ui/Interface.hpp b/src/ui/Interface.hpp index 0c140fb..5cf8207 100644 --- a/src/ui/Interface.hpp +++ b/src/ui/Interface.hpp @@ -1,21 +1,27 @@ #ifndef BLANK_UI_INTERFACE_HPP_ #define BLANK_UI_INTERFACE_HPP_ +#include "FixedText.hpp" #include "HUD.hpp" +#include "MessageBox.hpp" #include "../app/FPSController.hpp" #include "../app/IntervalTimer.hpp" +#include "../audio/Sound.hpp" #include "../model/geometry.hpp" #include "../model/OutlineModel.hpp" #include "../world/Block.hpp" +#include "../world/EntityCollision.hpp" +#include "../world/WorldCollision.hpp" -#include +#include #include +#include namespace blank { -class Chunk; -class DirectionalLighting; +class Environment; +class Viewport; class World; class Interface { @@ -28,10 +34,11 @@ public: bool keyboard_disabled = false; bool mouse_disabled = false; + bool audio_disabled = false; bool visual_disabled = false; }; - Interface(const Config &, World &); + Interface(const Config &, Environment &, World &); void HandlePress(const SDL_KeyboardEvent &); void HandleRelease(const SDL_KeyboardEvent &); @@ -39,11 +46,12 @@ 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(); + void ToggleCollision(); + void PickBlock(); void PlaceBlock(); void RemoveBlock() noexcept; @@ -57,26 +65,52 @@ public: void SelectNext(); void SelectPrevious(); + void ToggleAudio(); + void ToggleVisual(); + + void ToggleDebug(); + void UpdateCounter(); + void UpdatePosition(); + void UpdateOrientation(); + void UpdateBlockInfo(); + void UpdateEntityInfo(); + + void PostMessage(const char *); + void PostMessage(const std::string &msg) { + PostMessage(msg.c_str()); + } + void Update(int dt); - void Render(DirectionalLighting &) noexcept; + void Render(Viewport &) noexcept; private: void CheckAim(); + void UpdateOutline(); private: + Environment &env; World &world; FPSController ctrl; HUD hud; Ray aim; - Chunk *aim_chunk; - int aim_block; - glm::vec3 aim_normal; + WorldCollision aim_world; + EntityCollision aim_entity; OutlineModel outline; glm::mat4 outline_transform; + FixedText counter_text; + FixedText position_text; + FixedText orientation_text; + FixedText block_text; + FixedText entity_text; + Block last_block; + Entity *last_entity; + MessageBox messages; + IntervalTimer msg_timer; + Config config; IntervalTimer place_timer; @@ -85,7 +119,12 @@ private: Block remove; Block selection; - glm::tvec3 fwd, rev; + Sound place_sound; + Sound remove_sound; + + glm::ivec3 fwd, rev; + + bool debug; };