]> git.localhorst.tv Git - blobs.git/blobdiff - src/app/MasterState.hpp
test basic interaction
[blobs.git] / src / app / MasterState.hpp
index f62c77309ea7ea4a04133c5b1013e5accebded10..77d00cf54822aee0ed004af3b2ca8b0f103c38b7 100644 (file)
@@ -5,9 +5,16 @@
 
 #include "Assets.hpp"
 #include "../graphics/Camera.hpp"
+#include "../ui/BodyPanel.hpp"
+#include "../ui/CreaturePanel.hpp"
+#include "../ui/RecordsPanel.hpp"
+#include "../ui/TimePanel.hpp"
 
 
 namespace blobs {
+namespace creature {
+       class Creature;
+}
 namespace world {
        class Body;
        class Simulation;
@@ -28,12 +35,32 @@ public:
        MasterState &operator =(MasterState &&) = delete;
 
 public:
-       void SetReference(world::Body &r) { reference = &r; }
+       void Show(creature::Creature &) noexcept;
+       void Show(world::Body &) noexcept;
+
+       graphics::Camera &GetCamera() noexcept { return cam; }
+       const graphics::Camera &GetCamera() const noexcept { return cam; }
+
+       ui::BodyPanel &GetBodyPanel() noexcept { return bp; }
+       const ui::BodyPanel &GetBodyPanel() const noexcept { return bp; }
+
+       ui::CreaturePanel &GetCreaturePanel() noexcept { return cp; }
+       const ui::CreaturePanel &GetCreaturePanel() const noexcept { return cp; }
+
+       ui::RecordsPanel &GetRecordsPanel() noexcept { return rp; }
+       const ui::RecordsPanel &GetRecordsPanel() const noexcept { return rp; }
+
+       ui::TimePanel &GetTimePanel() noexcept { return tp; }
+       const ui::TimePanel &GetTimePanel() const noexcept { return tp; }
 
 private:
        void OnResize(int w, int h) override;
 
        void OnKeyDown(const SDL_KeyboardEvent &) override;
+       void OnMouseDown(const SDL_MouseButtonEvent &) override;
+       void OnMouseUp(const SDL_MouseButtonEvent &) override;
+       void OnMouseMotion(const SDL_MouseMotionEvent &) override;
+       void OnMouseWheel(const SDL_MouseWheelEvent &) override;
 
        void OnUpdate(int dt) override;
        void OnRender(graphics::Viewport &) override;
@@ -44,9 +71,25 @@ private:
 private:
        Assets &assets;
        world::Simulation ∼
-       world::Body *reference;
 
        graphics::Camera cam;
+       glm::dvec3 cam_pos;
+       glm::dvec3 cam_tgt_pos;
+       glm::dvec3 cam_focus;
+       glm::dvec3 cam_tgt_focus;
+       glm::dvec3 cam_up;
+       glm::dvec3 cam_tgt_up;
+       double cam_dist;
+       glm::dvec3 cam_orient;
+       bool cam_dragging;
+
+       creature::Creature *shown_creature;
+       world::Body *shown_body;
+
+       ui::BodyPanel bp;
+       ui::CreaturePanel cp;
+       ui::RecordsPanel rp;
+       ui::TimePanel tp;
 
        int remain;
        int thirds;