From ef0ff5a99b9c98ca50179c4a885b8992610a6bbc Mon Sep 17 00:00:00 2001 From: sippeangelo Date: Wed, 28 May 2014 22:05:17 +0200 Subject: [PATCH] WIP Awesometastic debugging --- src/GUI/Frame.h | 18 +++++++++++++++++- src/GUI/GameFrame.h | 26 +++++++++++++++++++++----- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/src/GUI/Frame.h b/src/GUI/Frame.h index a2acb8e..e502fea 100644 --- a/src/GUI/Frame.h +++ b/src/GUI/Frame.h @@ -32,12 +32,14 @@ public: , Rectangle() , m_Name("UIParent") , m_Layer(0) + , m_Hidden(false) { } // Create a frame as a child Frame(Frame* parent, std::string name) : m_Name(name) , m_Layer(0) + , m_Hidden(false) { SetParent(std::shared_ptr(parent)); } ::RenderQueue RenderQueue; @@ -74,6 +76,9 @@ public: std::string Name() const { return m_Name; } void SetName(std::string val) { m_Name = val; } int Layer() const { return m_Layer; } + bool Hidden() const { return m_Hidden; } + void Hide() { m_Hidden = true; } + void Show() { m_Hidden = false; } int Left() const override { @@ -105,6 +110,9 @@ public: void UpdateLayered(double dt) { + if (this->Hidden()) + return; + // Update ourselves this->Update(dt); @@ -115,6 +123,8 @@ public: for (auto &pairChild : children) { auto child = pairChild.second; + if (child->Hidden()) + continue; child->Update(dt); } } @@ -123,6 +133,9 @@ public: void DrawLayered(std::shared_ptr renderer) { + if (this->Hidden()) + return; + // Draw ourselves renderer->SetViewport(AbsoluteRectangle()); this->Draw(renderer); @@ -134,6 +147,8 @@ public: for (auto &pairChild : children) { auto child = pairChild.second; + if (child->Hidden()) + continue; Rectangle rect = child->AbsoluteRectangle(); renderer->SetViewport(rect); child->Draw(renderer); @@ -149,7 +164,8 @@ protected: std::string m_Name; int m_Layer; - + bool m_Hidden; + std::shared_ptr m_Parent; typedef std::multimap> Children_t; // name -> frame std::map m_Children; // layer -> Children_t diff --git a/src/GUI/GameFrame.h b/src/GUI/GameFrame.h index 8286997..078a687 100644 --- a/src/GUI/GameFrame.h +++ b/src/GUI/GameFrame.h @@ -18,32 +18,48 @@ public: GameFrame(Frame* parent, std::string name) : Frame(parent, name) { + EVENT_SUBSCRIBE_MEMBER(m_EInputCommand, &GameFrame::OnCommand); + m_World = std::make_shared(EventBroker, ResourceManager); auto worldFrame = new WorldFrame(this, "GameWorldFrame", m_World); { vp1 = new Viewport(worldFrame, "Viewport1", m_World); vp1->X = 0; vp1->Width = 640; - vp1->Height = 720 / 2; new PlayerHUD(vp1, "PlayerHUD", m_World, 1); vp2 = new Viewport(worldFrame, "Viewport2", m_World); vp2->X = vp1->Right(); vp2->Width = 640; - vp2->Height = 720 / 2; new PlayerHUD(vp2, "PlayerHUD", m_World, 2); - auto vpc = new Viewport(worldFrame, "ViewportFreeCam", m_World); - vpc->Y = 720 / 2; - vpc->Height = 720 / 2; + m_FreeCamViewport = new Viewport(worldFrame, "ViewportFreeCam", m_World); + m_FreeCamViewport->Show(); } m_World->Initialize(); } private: + EventRelay m_EInputCommand; + std::shared_ptr m_World; Viewport* vp1; Viewport* vp2; + Viewport* m_FreeCamViewport; + + bool OnCommand(const Events::InputCommand &event) + { + if (event.Command == "cam_vertical" || event.Command == "cam_horizontal" || event.Command == "cam_normal" || event.Command == "cam_lock") + { + m_FreeCamViewport->Show(); + } + else + { + m_FreeCamViewport->Hide(); + } + + return true; + } }; }