From 2681ca868082de1d42c604f316df98768de312ec Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Fri, 23 Oct 2015 15:46:26 +0200 Subject: [PATCH] Lifebuoy created on brick transform after a small delay. --- include/Game/LifebuoySystem.h | 5 +++++ src/game/Game/LevelSystem.cpp | 4 ++-- src/game/Game/LifebuoySystem.cpp | 25 +++++++++++++++++++++++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/include/Game/LifebuoySystem.h b/include/Game/LifebuoySystem.h index cfe123b..f293eb6 100644 --- a/include/Game/LifebuoySystem.h +++ b/include/Game/LifebuoySystem.h @@ -47,6 +47,10 @@ public: private: bool m_Pause = false; EntityID m_Template; + Events::Lifebuoy m_SavedEvent; + bool m_Lifebuoy = false; + float m_Timer; + float m_WaitingTime = 0.4; dd::EventRelay m_EContact; dd::EventRelay m_EPause; @@ -58,6 +62,7 @@ private: bool OnPause(const dd::Events::Pause &event); bool OnResume(const dd::Events::Resume &event); bool OnLifebuoy(const dd::Events::Lifebuoy &event); + bool Lifebuoy(const dd::Events::Lifebuoy &event); bool OnLifebuoyHit(const dd::Events::LifebuoyHit &event); struct LifebuoyInfo diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index e546b71..700f1fc 100755 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -792,7 +792,7 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are if (set == 1) { level = // The Butterfly {4, 0, 0, 1, 0, 0, 1, - 1, 6, 0, 1, 0, 6, 1, + 1, 6, 0, 1, 0, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, @@ -841,7 +841,7 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 3, 1, 1, 1, 1, 5 }; + 1, 3, 1, 1, 1, 1, 1 }; color = {m, m, m, m, m, m, m, m, m, m, m, m, m, m, diff --git a/src/game/Game/LifebuoySystem.cpp b/src/game/Game/LifebuoySystem.cpp index 13a3f1f..86ac22b 100644 --- a/src/game/Game/LifebuoySystem.cpp +++ b/src/game/Game/LifebuoySystem.cpp @@ -76,6 +76,19 @@ void dd::Systems::LifebuoySystem::Update(double dt) ++it; } } + + if (IsPaused()) { + return; + } + + if (m_Lifebuoy) { + m_Timer += dt; + if (m_Timer > m_WaitingTime) { + m_Timer = 0; + m_Lifebuoy = false; + Lifebuoy(m_SavedEvent); + } + } } void dd::Systems::LifebuoySystem::UpdateEntity(double dt, EntityID entity, EntityID parent) @@ -113,7 +126,14 @@ bool dd::Systems::LifebuoySystem::OnContact(const dd::Events::Contact &event) return true; } -bool dd::Systems::LifebuoySystem::OnLifebuoy(const dd::Events::Lifebuoy &event) +bool dd::Systems::LifebuoySystem::OnLifebuoy(const dd::Events::Lifebuoy &event) +{ + m_Lifebuoy = true; + m_SavedEvent = event; + return true; +} + +bool dd::Systems::LifebuoySystem::Lifebuoy(const dd::Events::Lifebuoy &event) { auto ent = m_World->CloneEntity(m_Template); m_World->SetProperty(ent, "Name", "Lifebuoy"); @@ -121,7 +141,8 @@ bool dd::Systems::LifebuoySystem::OnLifebuoy(const dd::Events::Lifebuoy &event) auto transform = m_World->GetComponent(ent); auto physics = m_World->GetComponent(ent); physics->CollisionType = CollisionType::Type::Dynamic; - transform->Position = glm::vec3(0.f, 0.f, -10.f); + //transform->Position = glm::vec3(0.f, 0.f, -10.f); + transform->Position = event.Transform->Position; transform->Velocity = glm::vec3(20.f, 3.f, 0.f); LifebuoyInfo info; info.Entity = ent;