]> git.localhorst.tv Git - blank.git/blobdiff - src/ui/Interface.hpp
use collision structures for ray tests
[blank.git] / src / ui / Interface.hpp
index d6c301981ef45125ac10cbf7a4eeabd7b987dbe6..2538c46cc9176f9a677c255738370504edd283d2 100644 (file)
@@ -1,23 +1,26 @@
 #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/WorldCollision.hpp"
 
+#include <string>
 #include <glm/glm.hpp>
+#include <SDL.h>
 
 
 namespace blank {
 
-class Assets;
-class Chunk;
-class FrameCounter;
+class Environment;
 class Viewport;
 class World;
 
@@ -31,10 +34,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 &, Environment &, World &);
 
        void HandlePress(const SDL_KeyboardEvent &);
        void HandleRelease(const SDL_KeyboardEvent &);
@@ -61,8 +65,19 @@ public:
        void SelectNext();
        void SelectPrevious();
 
-       void ToggleCounter();
+       void ToggleAudio();
+       void ToggleVisual();
+
+       void ToggleDebug();
        void UpdateCounter();
+       void UpdatePosition();
+       void UpdateOrientation();
+       void UpdateBlockInfo();
+
+       void PostMessage(const char *);
+       void PostMessage(const std::string &msg) {
+               PostMessage(msg.c_str());
+       }
 
        void Update(int dt);
 
@@ -70,23 +85,28 @@ public:
 
 private:
        void CheckAim();
+       void UpdateOutline();
 
 private:
-       const FrameCounter &counter;
+       Environment &env;
        World &world;
        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;
+       Block last_displayed;
+       MessageBox messages;
+       IntervalTimer msg_timer;
 
        Config config;
 
@@ -96,7 +116,12 @@ private:
        Block remove;
        Block selection;
 
-       glm::tvec3<int> fwd, rev;
+       Sound place_sound;
+       Sound remove_sound;
+
+       glm::ivec3 fwd, rev;
+
+       bool debug;
 
 };