From 7b7277509e051c44e7e5f99223593f478b246485 Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Mon, 28 Sep 2015 18:09:55 +0200 Subject: [PATCH] CreateBall clones the original ball rather than create new balls. --- include/Core/Engine.h | 2 +- include/Game/BallSystem.h | 5 +++++ src/game/Game/BallSystem.cpp | 11 ++++++++++- src/game/Game/LevelSystem.cpp | 6 +++--- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/include/Core/Engine.h b/include/Core/Engine.h index 6820d0b..ad45379 100644 --- a/include/Core/Engine.h +++ b/include/Core/Engine.h @@ -136,7 +136,7 @@ public: { auto ent = m_World->CreateEntity(); std::shared_ptr transform = m_World->AddComponent(ent); - transform->Position = glm::vec3(-0.f, 0.26f, -9.f); + transform->Position = glm::vec3(-0.f, 0.26f, -10.f); transform->Scale = glm::vec3(0.5f, 0.5f, 0.5f); transform->Velocity = glm::vec3(0.0f, -10.f, 0.f); auto model = m_World->AddComponent(ent); diff --git a/include/Game/BallSystem.h b/include/Game/BallSystem.h index e838076..ac34ab0 100644 --- a/include/Game/BallSystem.h +++ b/include/Game/BallSystem.h @@ -9,6 +9,7 @@ #include "Physics/CCircleShape.h" #include "Physics/EContact.h" #include "Rendering/CModel.h" +#include "Rendering/CPointLight.h" #include "Game/CBall.h" #include "Game/CPowerUp.h" #include "Game/ELifeLost.h" @@ -48,6 +49,8 @@ public: void OnEntityRemoved(EntityID entity) override; EntityID CreateBall(); + EntityID Ball() { return m_Ball; }; + void SetBall(const EntityID& ball) { m_Ball = ball; } float& EdgeX() { return m_EdgeX; } void SetEdgeX(const float& edgeX) { m_EdgeX = edgeX; } @@ -73,6 +76,8 @@ private: bool m_ReplaceBall = false; bool m_MultiBall = false; + EntityID m_Ball; + dd::EventRelay m_ELifeLost; dd::EventRelay m_EMultiBallLost; dd::EventRelay m_EResetBall; diff --git a/src/game/Game/BallSystem.cpp b/src/game/Game/BallSystem.cpp index 2a54fc0..6e32e52 100644 --- a/src/game/Game/BallSystem.cpp +++ b/src/game/Game/BallSystem.cpp @@ -34,6 +34,10 @@ void dd::Systems::BallSystem::UpdateEntity(double dt, EntityID entity, EntityID { auto ballComponent = m_World->GetComponent(entity); if (ballComponent != nullptr) { + if (Ball() == NULL) { + SetBall(entity); + } + if (ReplaceBall() == true) { SetReplaceBall(false); @@ -175,7 +179,9 @@ bool dd::Systems::BallSystem::Contact(const Events::Contact &event) EntityID dd::Systems::BallSystem::CreateBall() { - auto ent = m_World->CreateEntity(); + auto ent = m_World->CloneEntity(Ball()); + + /* auto ent = m_World->CreateEntity(); std::shared_ptr transform = m_World->AddComponent(ent); transform->Position = glm::vec3(0.5f, 0.26f, -10.f); transform->Scale = glm::vec3(0.5f, 0.5f, 0.5f); @@ -191,6 +197,9 @@ EntityID dd::Systems::BallSystem::CreateBall() physics->Calculate = true; cball->Speed = 5.f; + auto plight = m_World->AddComponent(ent); + plight->Radius = 2.f;*/ + m_World->CommitEntity(ent); return ent; diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index 2b70d20..d3bfe34 100755 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -70,14 +70,12 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID } } else { if (ball != nullptr && MultiBalls() > 0) { - Events::MultiBallLost e; - EventBroker->Publish(e); + SetMultiBalls(MultiBalls()-1); m_World->RemoveComponent(entity); m_World->RemoveComponent(entity); m_World->RemoveComponent(entity); m_World->RemoveComponent(entity); m_World->RemoveEntity(entity); - auto transformBall = m_World->GetComponent(entity); } else { auto powerUp = m_World->GetComponent(entity); if (powerUp != nullptr) { @@ -259,12 +257,14 @@ bool dd::Systems::LevelSystem::OnScoreEvent(const dd::Events::ScoreEvent &event) bool dd::Systems::LevelSystem::OnMultiBall(const dd::Events::MultiBall &event) { SetMultiBalls(MultiBalls()+2); + std::cout << MultiBalls() << std::endl; return true; } bool dd::Systems::LevelSystem::OnMultiBallLost(const dd::Events::MultiBallLost &event) { SetMultiBalls(MultiBalls()-1); + std::cout << MultiBalls() << std::endl; return true; }