X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fui%2FInterface.hpp;h=72db5d13eb94fbea290c434e8eae260234925cb3;hb=38a4cffc0b6aa58e49d24c06aad7bee14cb6515d;hp=d6c301981ef45125ac10cbf7a4eeabd7b987dbe6;hpb=50f35affb16c78bd3d0b420f5ba37d74fcac391f;p=blank.git diff --git a/src/ui/Interface.hpp b/src/ui/Interface.hpp index d6c3019..72db5d1 100644 --- a/src/ui/Interface.hpp +++ b/src/ui/Interface.hpp @@ -1,23 +1,28 @@ #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 "../graphics/Font.hpp" -#include "../graphics/Text.hpp" +#include "../audio/Sound.hpp" #include "../model/geometry.hpp" #include "../model/OutlineModel.hpp" #include "../world/Block.hpp" +#include "../world/EntityCollision.hpp" +#include "../world/Player.hpp" +#include "../world/WorldCollision.hpp" +#include #include +#include namespace blank { -class Assets; -class Chunk; -class FrameCounter; +class Entity; +class Environment; class Viewport; class World; @@ -25,16 +30,21 @@ class Interface { public: struct Config { + std::string player_name = "default"; + float move_velocity = 0.005f; float pitch_sensitivity = -0.0025f; float yaw_sensitivity = -0.001f; 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 &, Environment &, World &, const Player &); + + const Player &GetPlayer() noexcept { return player; } void HandlePress(const SDL_KeyboardEvent &); void HandleRelease(const SDL_KeyboardEvent &); @@ -52,17 +62,23 @@ public: void PlaceBlock(); void RemoveBlock() noexcept; - void PrintBlockInfo(); - void PrintChunkInfo(); - void PrintLightInfo(); - void PrintSelectionInfo(); - void Print(const Block &); - void SelectNext(); void SelectPrevious(); - void ToggleCounter(); + 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); @@ -70,23 +86,31 @@ public: private: void CheckAim(); + void UpdateOutline(); private: - const FrameCounter &counter; + Environment &env; World &world; + Player player; FPSController ctrl; - Font font; 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; - Text counter_text; + 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; @@ -96,7 +120,12 @@ private: Block remove; Block selection; - glm::tvec3 fwd, rev; + Sound place_sound; + Sound remove_sound; + + glm::ivec3 fwd, rev; + + bool debug; };