From 4617dd95b7b929628b6e325a7d663b02615cc139 Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Tue, 6 Oct 2015 15:38:15 +0200 Subject: [PATCH 1/4] Correction: Not Stable! --- src/game/Game/HitLagSystem.cpp | 2 +- src/game/Game/LevelSystem.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/game/Game/HitLagSystem.cpp b/src/game/Game/HitLagSystem.cpp index da2b25f..8243900 100644 --- a/src/game/Game/HitLagSystem.cpp +++ b/src/game/Game/HitLagSystem.cpp @@ -16,7 +16,7 @@ void dd::Systems::HitLagSystem::Update(double dt) if (IsPaused()) { if (HitLag()) { SetHitLagTimer(HitLagTimer() += dt); - std::cout << HitLagTimer() << std::endl; + //std::cout << HitLagTimer() << std::endl; if (HitLagDuration() < HitLagTimer()) { SetHitLagTimer(0); SetHitLag(false); diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index c74c60b..b3d6788 100755 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -72,7 +72,7 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID //Removes bricks that falls out of the stage. if (transform->Position.y < -10) { m_LooseBricks--; - std::cout << m_LooseBricks << std::endl; + //std::cout << m_LooseBricks << std::endl; m_World->RemoveEntity(entity); } } @@ -96,7 +96,7 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID } else { if (brick != nullptr) { m_LooseBricks--; - std::cout << m_LooseBricks << std::endl; + //std::cout << m_LooseBricks << std::endl; m_World->RemoveEntity(entity); } } From 6205e84ff17adabb8480caaa5f0ea57d65ba4dec Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Tue, 6 Oct 2015 18:33:18 +0200 Subject: [PATCH 2/4] Fixed minor things --- src/game/Game/BallSystem.cpp | 10 ++++------ src/game/Game/LevelSystem.cpp | 7 +++++-- src/game/Game/PadSystem.cpp | 6 +++--- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/game/Game/BallSystem.cpp b/src/game/Game/BallSystem.cpp index 7be7d8a..b2026be 100644 --- a/src/game/Game/BallSystem.cpp +++ b/src/game/Game/BallSystem.cpp @@ -278,9 +278,7 @@ bool dd::Systems::BallSystem::Contact(const Events::Contact &event) EntityID dd::Systems::BallSystem::CreateBall() { auto ent = m_World->CloneEntity(Ball()); - m_World->RemoveComponent(ent); - //m_World->CommitEntity(ent); return ent; @@ -332,11 +330,11 @@ bool dd::Systems::BallSystem::OnMultiBall(const dd::Events::MultiBall &event) auto ball2 = m_World->GetComponent(ent2); auto padTransform = event.padTransform; float x1 = padTransform->Position.x - 2, x2 = padTransform->Position.x + 2; - if (x1 < -3.1) { - x1 = 3; + if (x1 < -m_EdgeX) { + x1 = m_EdgeX - 0.2; } - if (x2 > 3.1) { - x2 = -3; + if (x2 > m_EdgeX) { + x2 = -m_EdgeX + 0.2; } transform1->Position = glm::vec3(x1, -5.5, -10); transform2->Position = glm::vec3(x2, -5.5, -10); diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index b3d6788..e3bee4e 100755 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -87,16 +87,18 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID } else { if (ball != nullptr && MultiBalls() > 0) { SetMultiBalls(MultiBalls()-1); + //std::cout << "Multi Balls: " << MultiBalls() << std::endl; m_World->RemoveEntity(entity); } else { auto powerUp = m_World->GetComponent(entity); if (powerUp != nullptr) { SetPowerUps(PowerUps() - 1); + //std::cout << "Power Ups: " << PowerUps() << std::endl; m_World->RemoveEntity(entity); } else { if (brick != nullptr) { m_LooseBricks--; - //std::cout << m_LooseBricks << std::endl; + //std::cout << "Loose Bricks: " << m_LooseBricks << std::endl; m_World->RemoveEntity(entity); } } @@ -151,8 +153,9 @@ void dd::Systems::LevelSystem::CreateLevel() CreateBrick(i, j, SpaceBetweenBricks(), SpaceToEdge(), num, m_Bricks[getter]); getter++; } - if (num == 1) + if (num == 1) { num = Lines(); + } } m_LooseBricks = NumberOfBricks(); SetRestarting(false); diff --git a/src/game/Game/PadSystem.cpp b/src/game/Game/PadSystem.cpp index 4fe3b6b..a118ae4 100755 --- a/src/game/Game/PadSystem.cpp +++ b/src/game/Game/PadSystem.cpp @@ -222,8 +222,8 @@ bool dd::Systems::PadSystem::OnContact(const dd::Events::Contact &event) bool dd::Systems::PadSystem::OnContactPowerUp(const dd::Events::Contact &event) { - EntityID entityPower; - EntityID entityPad; + EntityID entityPower = 0; + EntityID entityPad = 0; auto powerUp = m_World->GetComponent(event.Entity1); auto pad = m_World->GetComponent(event.Entity2); if (powerUp != nullptr) { @@ -243,7 +243,7 @@ bool dd::Systems::PadSystem::OnContactPowerUp(const dd::Events::Contact &event) } } - if (entityPower == NULL || entityPad == NULL) { + if (entityPower == 0 || entityPad == 0) { return false; } From 902098a72d50150fe06aa77134a54c147589455a Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Tue, 6 Oct 2015 19:41:24 +0200 Subject: [PATCH 3/4] Fixed all bugs I know of. MultiBall appear upon ice falling in water. --- include/Game/BallSystem.h | 3 --- include/Game/CBrick.h | 1 + include/Game/LevelSystem.h | 4 ++++ src/game/Game/BallSystem.cpp | 21 +++++++-------------- src/game/Game/LevelSystem.cpp | 33 +++++++++++++++++++-------------- 5 files changed, 31 insertions(+), 31 deletions(-) diff --git a/include/Game/BallSystem.h b/include/Game/BallSystem.h index 1d06e6b..7f621fa 100644 --- a/include/Game/BallSystem.h +++ b/include/Game/BallSystem.h @@ -78,8 +78,6 @@ public: void SetPastLives(const int& pastLives) { m_PastLives = pastLives; } bool ReplaceBall() const { return m_ReplaceBall; } void SetReplaceBall(const bool& replaceBall) { m_ReplaceBall = replaceBall; } - bool MultiBall() const { return m_MultiBall; } - void SetMultiBall(const bool& multiBall) { m_MultiBall = multiBall; } bool IsPaused() const { return m_Pause; } void SetPause(const bool& pause) { m_Pause = pause; } @@ -91,7 +89,6 @@ private: int m_Lives = 3; int m_PastLives = 3; bool m_ReplaceBall = false; - bool m_MultiBall = false; bool m_Pause = false; EntityID m_LastCollision = 999999; diff --git a/include/Game/CBrick.h b/include/Game/CBrick.h index 893f157..f55734a 100644 --- a/include/Game/CBrick.h +++ b/include/Game/CBrick.h @@ -16,6 +16,7 @@ namespace Components struct Brick : Component { int Score = 50; + int Type = 0; bool Removed = false; }; diff --git a/include/Game/LevelSystem.h b/include/Game/LevelSystem.h index 8f1720c..dca262c 100755 --- a/include/Game/LevelSystem.h +++ b/include/Game/LevelSystem.h @@ -120,6 +120,10 @@ private: glm::vec2 m_SpaceBetweenBricks = glm::vec2(1, 0.4); float m_NotResettingTheStage = 5.f; + const int EmptyBrickSpace = 0; + const int StandardBrick = 1; + const int MultiBallBrick = 2; + EntityID m_BrickTemplate; std::array m_Bricks; diff --git a/src/game/Game/BallSystem.cpp b/src/game/Game/BallSystem.cpp index 4b35a9f..bc16cb4 100644 --- a/src/game/Game/BallSystem.cpp +++ b/src/game/Game/BallSystem.cpp @@ -51,8 +51,6 @@ void dd::Systems::BallSystem::Initialize() auto transform2 = m_World->GetComponent(ent2); transform2->Position = glm::vec3(-0.f, 0.26f, -10.f); transform2->Velocity = glm::vec3(0.0f, -10.f, 0.f); - - m_World->CommitEntity(ent2); } for (int i = 0; i < Lives(); i++) { @@ -236,15 +234,6 @@ bool dd::Systems::BallSystem::Contact(const Events::Contact &event) int hey = 5; } - /*if (otherEntitiy == m_LastCollision) { - - if (brick != nullptr) { - return false; - } - } else { - m_LastCollision = otherEntitiy; - }*/ - //if this is a brick thats dead do not collide :) auto ballTransform = m_World->GetComponent(ballEntity); @@ -283,7 +272,6 @@ EntityID dd::Systems::BallSystem::CreateBall() { auto ent = m_World->CloneEntity(Ball()); m_World->RemoveComponent(ent); - //m_World->CommitEntity(ent); return ent; } @@ -314,7 +302,12 @@ bool dd::Systems::BallSystem::OnLifeLost(const dd::Events::LifeLost &event) bool dd::Systems::BallSystem::OnMultiBallLost(const dd::Events::MultiBallLost &event) { - SetMultiBalls(MultiBalls()-1); + SetMultiBalls(MultiBalls() - 1); + std::cout << MultiBalls() << std::endl; + if (MultiBalls() < 0) { + auto ent = CreateBall(); + SetMultiBalls(0); + } return true; } @@ -347,6 +340,6 @@ bool dd::Systems::BallSystem::OnMultiBall(const dd::Events::MultiBall &event) transform2->Velocity = glm::normalize(glm::vec3(-5, 5 ,0.f)) * ball2->Speed; SetMultiBalls(MultiBalls() + 2); - + std::cout << MultiBalls() << std::endl; return true; } diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index 4ddc99e..68f2c00 100755 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -47,7 +47,6 @@ void dd::Systems::LevelSystem::Initialize() void dd::Systems::LevelSystem::Update(double dt) { if (!m_Initialized) { - //CreateBasicLevel(Rows(), Lines(), SpaceBetweenBricks(), SpaceToEdge()); GetNextLevel(); CreateLevel(); m_Initialized = true; @@ -67,8 +66,12 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID auto transform = m_World->GetComponent(entity); //Removes bricks that falls out of the stage. if (transform->Position.y < -10) { + if (brick->Type == MultiBallBrick) { + Events::MultiBall e; + e.padTransform = transform; + EventBroker->Publish(e); + } m_LooseBricks--; - //std::cout << m_LooseBricks << std::endl; m_World->RemoveEntity(entity); } } @@ -79,22 +82,19 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID if (MultiBalls() <= 0 && PowerUps() <= 0) { Events::StageCleared ec; EventBroker->Publish(ec); - //CreateBasicLevel(Rows(), Lines(), SpaceBetweenBricks(), SpaceToEdge()); } else { if (ball != nullptr && MultiBalls() > 0) { - SetMultiBalls(MultiBalls()-1); - //std::cout << "Multi Balls: " << MultiBalls() << std::endl; + Events::MultiBallLost e; + EventBroker->Publish(e); m_World->RemoveEntity(entity); } else { auto powerUp = m_World->GetComponent(entity); if (powerUp != nullptr) { SetPowerUps(PowerUps() - 1); - //std::cout << "Power Ups: " << PowerUps() << std::endl; m_World->RemoveEntity(entity); } else { if (brick != nullptr) { m_LooseBricks--; - //std::cout << "Loose Bricks: " << m_LooseBricks << std::endl; m_World->RemoveEntity(entity); } } @@ -159,7 +159,7 @@ void dd::Systems::LevelSystem::CreateLevel() void dd::Systems::LevelSystem::CreateBrick(int row, int line, glm::vec2 spacesBetweenBricks, float spaceToEdge, int num, int typeInt) { - if (typeInt == 0) { + if (typeInt == EmptyBrickSpace) { SetNumberOfBricks(NumberOfBricks() - 1); return; } @@ -167,9 +167,10 @@ void dd::Systems::LevelSystem::CreateBrick(int row, int line, glm::vec2 spacesBe m_World->RemoveComponent(brick); auto transform = m_World->GetComponent(brick); auto cBrick = m_World->GetComponent(brick); - auto cPhys = m_World->GetComponent(brick); - if (typeInt == 2) { + if (typeInt == StandardBrick) { + } else if (typeInt == MultiBallBrick) { + cBrick->Type = MultiBallBrick; std::shared_ptr cPow = m_World->AddComponent(brick); auto model = m_World->GetComponent(brick); model->ModelFile = "Models/Brick/IceBrick.obj"; @@ -178,8 +179,6 @@ void dd::Systems::LevelSystem::CreateBrick(int row, int line, glm::vec2 spacesBe float y = row * spacesBetweenBricks.y; transform->Position = glm::vec3(x - 3, 5 - spaceToEdge - y , -10.f); cBrick->Score = 10 * num; - - m_World->CommitEntity(brick); return; } @@ -220,13 +219,13 @@ bool dd::Systems::LevelSystem::OnContact(const dd::Events::Contact &event) return false; } - auto power = m_World->GetComponent(entityBrick); + /*auto power = m_World->GetComponent(entityBrick); if (power != nullptr && NumberOfBricks() > 1) { Events::CreatePowerUp e; auto transform = m_World->GetComponent(entityBrick); e.Position = transform->Position; EventBroker->Publish(e); - } + }*/ if (!Restarting() && !brick->Removed) { brick->Removed = true; @@ -288,6 +287,9 @@ bool dd::Systems::LevelSystem::OnMultiBall(const dd::Events::MultiBall &event) bool dd::Systems::LevelSystem::OnMultiBallLost(const dd::Events::MultiBallLost &event) { SetMultiBalls(MultiBalls()-1); + if (MultiBalls() < 0) { + SetMultiBalls(0); + } return true; } @@ -344,6 +346,9 @@ bool dd::Systems::LevelSystem::OnStageCleared(const dd::Events::StageCleared &ev void dd::Systems::LevelSystem::GetNextLevel() { std::array level; + // 0 is empty space. + // 1 is standard brick. + // 2 is multiball brick. if (m_CurrentCluster == 1) { if (m_CurrentLevel == 1) { level = From 1f10d244484de4d6fb21c9af43d1106cb37184f4 Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Tue, 6 Oct 2015 19:57:57 +0200 Subject: [PATCH 4/4] Commented out couts. --- src/game/Game/BallSystem.cpp | 4 ++-- src/game/Physics/PhysicsSystem.cpp | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/game/Game/BallSystem.cpp b/src/game/Game/BallSystem.cpp index bc16cb4..20d223b 100644 --- a/src/game/Game/BallSystem.cpp +++ b/src/game/Game/BallSystem.cpp @@ -303,7 +303,7 @@ bool dd::Systems::BallSystem::OnLifeLost(const dd::Events::LifeLost &event) bool dd::Systems::BallSystem::OnMultiBallLost(const dd::Events::MultiBallLost &event) { SetMultiBalls(MultiBalls() - 1); - std::cout << MultiBalls() << std::endl; + //std::cout << MultiBalls() << std::endl; if (MultiBalls() < 0) { auto ent = CreateBall(); SetMultiBalls(0); @@ -340,6 +340,6 @@ bool dd::Systems::BallSystem::OnMultiBall(const dd::Events::MultiBall &event) transform2->Velocity = glm::normalize(glm::vec3(-5, 5 ,0.f)) * ball2->Speed; SetMultiBalls(MultiBalls() + 2); - std::cout << MultiBalls() << std::endl; + //std::cout << MultiBalls() << std::endl; return true; } diff --git a/src/game/Physics/PhysicsSystem.cpp b/src/game/Physics/PhysicsSystem.cpp index b24f2d8..8496a1f 100644 --- a/src/game/Physics/PhysicsSystem.cpp +++ b/src/game/Physics/PhysicsSystem.cpp @@ -254,7 +254,8 @@ void dd::Systems::PhysicsSystem::OnEntityRemoved(EntityID entity) return; } - LOG_INFO("Removing entity %i", entity); + //It told me I was removing a lot of objects, and I didn't need that information, so I commented it out. + //LOG_INFO("Removing entity %i", entity); it->second->GetWorld()->DestroyBody(it->second); m_BodiesToEntities.erase(it->second); m_EntitiesToBodies.erase(entity);