CreateBall clones the original ball rather than create new balls.

This commit is contained in:
PlatinumSkink
2015-09-28 18:09:55 +02:00
parent fc41727a5d
commit 7b7277509e
4 changed files with 19 additions and 5 deletions
+1 -1
View File
@@ -136,7 +136,7 @@ public:
{ {
auto ent = m_World->CreateEntity(); auto ent = m_World->CreateEntity();
std::shared_ptr<Components::Transform> transform = m_World->AddComponent<Components::Transform>(ent); std::shared_ptr<Components::Transform> transform = m_World->AddComponent<Components::Transform>(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->Scale = glm::vec3(0.5f, 0.5f, 0.5f);
transform->Velocity = glm::vec3(0.0f, -10.f, 0.f); transform->Velocity = glm::vec3(0.0f, -10.f, 0.f);
auto model = m_World->AddComponent<Components::Model>(ent); auto model = m_World->AddComponent<Components::Model>(ent);
+5
View File
@@ -9,6 +9,7 @@
#include "Physics/CCircleShape.h" #include "Physics/CCircleShape.h"
#include "Physics/EContact.h" #include "Physics/EContact.h"
#include "Rendering/CModel.h" #include "Rendering/CModel.h"
#include "Rendering/CPointLight.h"
#include "Game/CBall.h" #include "Game/CBall.h"
#include "Game/CPowerUp.h" #include "Game/CPowerUp.h"
#include "Game/ELifeLost.h" #include "Game/ELifeLost.h"
@@ -48,6 +49,8 @@ public:
void OnEntityRemoved(EntityID entity) override; void OnEntityRemoved(EntityID entity) override;
EntityID CreateBall(); EntityID CreateBall();
EntityID Ball() { return m_Ball; };
void SetBall(const EntityID& ball) { m_Ball = ball; }
float& EdgeX() { return m_EdgeX; } float& EdgeX() { return m_EdgeX; }
void SetEdgeX(const float& edgeX) { m_EdgeX = edgeX; } void SetEdgeX(const float& edgeX) { m_EdgeX = edgeX; }
@@ -73,6 +76,8 @@ private:
bool m_ReplaceBall = false; bool m_ReplaceBall = false;
bool m_MultiBall = false; bool m_MultiBall = false;
EntityID m_Ball;
dd::EventRelay<BallSystem, dd::Events::LifeLost> m_ELifeLost; dd::EventRelay<BallSystem, dd::Events::LifeLost> m_ELifeLost;
dd::EventRelay<BallSystem, dd::Events::MultiBallLost> m_EMultiBallLost; dd::EventRelay<BallSystem, dd::Events::MultiBallLost> m_EMultiBallLost;
dd::EventRelay<BallSystem, dd::Events::ResetBall> m_EResetBall; dd::EventRelay<BallSystem, dd::Events::ResetBall> m_EResetBall;
+10 -1
View File
@@ -34,6 +34,10 @@ void dd::Systems::BallSystem::UpdateEntity(double dt, EntityID entity, EntityID
{ {
auto ballComponent = m_World->GetComponent<Components::Ball>(entity); auto ballComponent = m_World->GetComponent<Components::Ball>(entity);
if (ballComponent != nullptr) { if (ballComponent != nullptr) {
if (Ball() == NULL) {
SetBall(entity);
}
if (ReplaceBall() == true) { if (ReplaceBall() == true) {
SetReplaceBall(false); SetReplaceBall(false);
@@ -175,7 +179,9 @@ bool dd::Systems::BallSystem::Contact(const Events::Contact &event)
EntityID dd::Systems::BallSystem::CreateBall() EntityID dd::Systems::BallSystem::CreateBall()
{ {
auto ent = m_World->CreateEntity(); auto ent = m_World->CloneEntity(Ball());
/* auto ent = m_World->CreateEntity();
std::shared_ptr<Components::Transform> transform = m_World->AddComponent<Components::Transform>(ent); std::shared_ptr<Components::Transform> transform = m_World->AddComponent<Components::Transform>(ent);
transform->Position = glm::vec3(0.5f, 0.26f, -10.f); transform->Position = glm::vec3(0.5f, 0.26f, -10.f);
transform->Scale = glm::vec3(0.5f, 0.5f, 0.5f); transform->Scale = glm::vec3(0.5f, 0.5f, 0.5f);
@@ -191,6 +197,9 @@ EntityID dd::Systems::BallSystem::CreateBall()
physics->Calculate = true; physics->Calculate = true;
cball->Speed = 5.f; cball->Speed = 5.f;
auto plight = m_World->AddComponent<Components::PointLight>(ent);
plight->Radius = 2.f;*/
m_World->CommitEntity(ent); m_World->CommitEntity(ent);
return ent; return ent;
+3 -3
View File
@@ -70,14 +70,12 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID
} }
} else { } else {
if (ball != nullptr && MultiBalls() > 0) { if (ball != nullptr && MultiBalls() > 0) {
Events::MultiBallLost e; SetMultiBalls(MultiBalls()-1);
EventBroker->Publish(e);
m_World->RemoveComponent<Components::Ball>(entity); m_World->RemoveComponent<Components::Ball>(entity);
m_World->RemoveComponent<Components::Transform>(entity); m_World->RemoveComponent<Components::Transform>(entity);
m_World->RemoveComponent<Components::CircleShape>(entity); m_World->RemoveComponent<Components::CircleShape>(entity);
m_World->RemoveComponent<Components::Physics>(entity); m_World->RemoveComponent<Components::Physics>(entity);
m_World->RemoveEntity(entity); m_World->RemoveEntity(entity);
auto transformBall = m_World->GetComponent<Components::Transform>(entity);
} else { } else {
auto powerUp = m_World->GetComponent<Components::PowerUp>(entity); auto powerUp = m_World->GetComponent<Components::PowerUp>(entity);
if (powerUp != nullptr) { 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) bool dd::Systems::LevelSystem::OnMultiBall(const dd::Events::MultiBall &event)
{ {
SetMultiBalls(MultiBalls()+2); SetMultiBalls(MultiBalls()+2);
std::cout << MultiBalls() << std::endl;
return true; return true;
} }
bool dd::Systems::LevelSystem::OnMultiBallLost(const dd::Events::MultiBallLost &event) bool dd::Systems::LevelSystem::OnMultiBallLost(const dd::Events::MultiBallLost &event)
{ {
SetMultiBalls(MultiBalls()-1); SetMultiBalls(MultiBalls()-1);
std::cout << MultiBalls() << std::endl;
return true; return true;
} }