From ce0b95cd47e3a8bfa62e27dacd055b3ff5448254 Mon Sep 17 00:00:00 2001 From: sippeangelo Date: Fri, 23 Oct 2015 14:44:07 +0200 Subject: [PATCH 1/4] Added a background to prevent white borders during screen shake --- src/game/Game/LevelSystem.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index ff3bb8c..fade607 100755 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -77,8 +77,20 @@ void dd::Systems::LevelSystem::Initialize() auto t_halfPipe2 = m_World->CloneEntity(t_halfPipe); auto transform2 = m_World->GetComponent(t_halfPipe); transform2->Position = glm::vec3(0.f, 34.6f, -15.f); //Halfpipe Value + + // Added to prevent white borders around screen shake + { + auto halfPipeBackground = m_World->CreateEntity(); + auto transform = m_World->AddComponent(halfPipeBackground); + transform->Position = glm::vec3(0.f, 0.f, -15.f); + transform->Scale = glm::vec3(6.f, 6.f, 10.f) * 2.f; + auto model = m_World->AddComponent(halfPipeBackground); + model->ModelFile = "Models/Halfpipe.obj"; + m_World->CommitEntity(halfPipeBackground); + } } + //Background /*{ From 1270500a43fe91b52a16952f9a4a875a1e0f9a10 Mon Sep 17 00:00:00 2001 From: sippeangelo Date: Fri, 23 Oct 2015 15:05:43 +0200 Subject: [PATCH 2/4] Kraken screen shake! --- include/Game/EScreenShake.h | 6 +++--- include/Game/KrakenSystem.h | 1 + src/game/Game/KrakenSystem.cpp | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/include/Game/EScreenShake.h b/include/Game/EScreenShake.h index a157dce..6775217 100644 --- a/include/Game/EScreenShake.h +++ b/include/Game/EScreenShake.h @@ -15,9 +15,9 @@ namespace Events struct ScreenShake : Event { - float Time; - int Intensity; - float TimeTakenToCoolDown; + float Time = 1.f; + float Intensity = 1.f; + float TimeTakenToCoolDown = 1.f; }; } diff --git a/include/Game/KrakenSystem.h b/include/Game/KrakenSystem.h index a806fba..0933190 100644 --- a/include/Game/KrakenSystem.h +++ b/include/Game/KrakenSystem.h @@ -33,6 +33,7 @@ #include "Game/CKraken.h" #include "Game/CBall.h" #include "Game/CProjectile.h" +#include "Game/EScreenShake.h" #include "Sound/CCollisionSound.h" #include "Rendering/CAnimation.h" #include "Rendering/CSprite.h" diff --git a/src/game/Game/KrakenSystem.cpp b/src/game/Game/KrakenSystem.cpp index a07cd48..9d91ff5 100644 --- a/src/game/Game/KrakenSystem.cpp +++ b/src/game/Game/KrakenSystem.cpp @@ -261,6 +261,13 @@ bool dd::Systems::KrakenSystem::OnKrakenAppear(const dd::Events::KrakenAppear &e transform->Position = event.Position; transform->Position.y += 3.f; m_KrakenBattle = true; + + Events::ScreenShake e; + e.Intensity = 10; + e.Time = 2; + e.TimeTakenToCoolDown = 6; + EventBroker->Publish(e); + return true; } @@ -269,6 +276,13 @@ bool dd::Systems::KrakenSystem::OnKrakenAttack(const dd::Events::KrakenAttack &e if (event.ChargeUpdate >= 1) { m_ReturnToIdle = true; } + + Events::ScreenShake e; + e.Intensity = 2; + e.Time = 0.5f; + e.TimeTakenToCoolDown = 3.f; + EventBroker->Publish(e); + return true; } @@ -339,6 +353,13 @@ bool dd::Systems::KrakenSystem::OnKrakenHit(const dd::Events::KrakenHit &event) e.Hitter = event.Hitter; EventBroker->Publish(e); } + + Events::ScreenShake e; + e.Intensity = 2; + e.Time = 0.2f; + e.TimeTakenToCoolDown = 1.5f; + EventBroker->Publish(e); + return false; } From fa5cb379abf289aae5da9523fbb8829adfc660bf Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Fri, 23 Oct 2015 15:12:28 +0200 Subject: [PATCH 3/4] Skill-Kraken implemented. What do people think...? --- include/Game/CKraken.h | 2 +- include/Game/EBrickGenerating.h | 1 + include/Game/KrakenSystem.h | 4 + include/Game/LevelSystem.h | 8 +- include/Game/PadSystem.h | 1 + src/game/Game/KrakenSystem.cpp | 71 ++++++++++----- src/game/Game/LevelSystem.cpp | 154 ++++++++++++++++++-------------- src/game/Game/PadSystem.cpp | 4 + src/game/Game/WaterSystem.cpp | 2 +- 9 files changed, 155 insertions(+), 92 deletions(-) diff --git a/include/Game/CKraken.h b/include/Game/CKraken.h index e2dea50..eee9e18 100644 --- a/include/Game/CKraken.h +++ b/include/Game/CKraken.h @@ -15,7 +15,7 @@ namespace Components struct Kraken : Component { - int MaxHealth = 30; + int MaxHealth = 18; int Health = MaxHealth; int CurrentAction = 3; float RetreatSpeed = 0.2; diff --git a/include/Game/EBrickGenerating.h b/include/Game/EBrickGenerating.h index 47a723c..27fd37d 100644 --- a/include/Game/EBrickGenerating.h +++ b/include/Game/EBrickGenerating.h @@ -20,6 +20,7 @@ struct BrickGenerating : Event int TargetLine; int Set; int SetCluster; + int Speed = 6; }; } diff --git a/include/Game/KrakenSystem.h b/include/Game/KrakenSystem.h index a806fba..2c2a16e 100644 --- a/include/Game/KrakenSystem.h +++ b/include/Game/KrakenSystem.h @@ -67,6 +67,7 @@ private: bool m_KrakenBattle = false; bool m_KrakenHasArrived = false; bool m_ReturnToIdle = false; + bool m_RandomKraken = false; EntityID m_KrakenTemplate; std::string m_Action = "Idle"; int m_NumberOfActions; @@ -76,6 +77,9 @@ private: float m_KrakenCurrentSecondsToAction = 15; const int Idle = 1; + int m_Set = 0; + int m_SetCluster = 0; + std::array m_Bricks; std::array m_Colors; diff --git a/include/Game/LevelSystem.h b/include/Game/LevelSystem.h index 901a8b7..20df7d4 100755 --- a/include/Game/LevelSystem.h +++ b/include/Game/LevelSystem.h @@ -59,6 +59,7 @@ #include "Game/EKrakenAppear.h" #include "Game/EKrakenDefeated.h" #include "Game/EBrickGenerating.h" +#include "Game/EBreakAllBricks.h" #include "Physics/CPhysics.h" #include "Physics/CCircleShape.h" @@ -101,7 +102,7 @@ public: void CreateBasicLevel(int, int, glm::vec2, float); void CreateLevel(int); EntityID CreateBrick(int, int, glm::vec2, float, int, int, int, glm::vec4); - void BrickHit(EntityID, EntityID, int); + void BrickHit(EntityID, EntityID, int, bool); void OnEntityRemoved(EntityID entity); @@ -145,7 +146,7 @@ private: bool m_Pause = false; int m_LooseBricks = 0; int m_CurrentCluster = 1; - int m_CurrentLevel = 1; + int m_CurrentLevel = 6; int m_MultiBalls = 0; int m_PowerUps = 0; int m_Score = 0; @@ -180,6 +181,7 @@ private: bool m_BrickGenerating = false; dd::Events::BrickGenerating m_BrickGeneratingEvent; + bool m_KrakenBattle = false; bool m_BreakAllBricks = false; dd::EventRelay m_EContact; @@ -194,6 +196,7 @@ private: dd::EventRelay m_EResume; dd::EventRelay m_EHitPad; dd::EventRelay m_EBrickGenerating; + dd::EventRelay m_EBreakAllBricks; dd::EventRelay m_EKrakenDefeated; bool OnContact(const dd::Events::Contact &event); @@ -209,6 +212,7 @@ private: bool OnHitPad(const dd::Events::HitPad &event); bool OnBrickGenerating(const dd::Events::BrickGenerating &event); bool BrickGenerating(const dd::Events::BrickGenerating &event); + bool OnBreakAllBricks(const dd::Events::BreakAllBricks &event); void GetBrickSet(int Set, int SetCluster); bool OnKrakenDefeated(const dd::Events::KrakenDefeated &event); diff --git a/include/Game/PadSystem.h b/include/Game/PadSystem.h index 0148430..3266397 100755 --- a/include/Game/PadSystem.h +++ b/include/Game/PadSystem.h @@ -54,6 +54,7 @@ #include "Rendering/CAnimation.h" #include "Game/EBrickGenerating.h" +#include "Game/EBreakAllBricks.h" namespace dd diff --git a/src/game/Game/KrakenSystem.cpp b/src/game/Game/KrakenSystem.cpp index a07cd48..2fcdd50 100644 --- a/src/game/Game/KrakenSystem.cpp +++ b/src/game/Game/KrakenSystem.cpp @@ -93,12 +93,14 @@ void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityI return; } Events::KrakenAttack krakenAttack; - switch (kraken->CurrentAction) - { + switch (kraken->CurrentAction) { case 1: // Idle - m_KrakenTimer += dt; + if (m_RandomKraken) { + m_KrakenTimer += dt; + } if (m_KrakenTimer > m_KrakenCurrentSecondsToAction) { m_KrakenTimer = 0; + kraken->CurrentAction = 3; if (m_NumberOfActions == 0) { kraken->CurrentAction = 3; } else { @@ -112,11 +114,12 @@ void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityI break; case 2: // Grabbing m_NumberOfActions++; - kraken->CurrentAction = 5; - krakenAttack.ChargeUpdate = 0; + kraken->CurrentAction = 3; + /*krakenAttack.ChargeUpdate = 0; krakenAttack.KrakenStrength = 0.1; krakenAttack.PlayerStrength = 0.05; - EventBroker->Publish(krakenAttack); + EventBroker->Publish(krakenAttack);*/ + break; case 3: // Brick Generating { @@ -125,35 +128,60 @@ void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityI Events::BrickGenerating e; e.Origin1 = glm::vec3(-5, 7, -10); e.Origin2 = glm::vec3(5, 7, -10); - if (kraken->Health > 20) { + e.Speed = 10; + if (m_RandomKraken) { + if (kraken->Health > 20) { e.SetCluster = 0; - } else if (kraken->Health > 10) { + } else if (kraken->Health > 10) { e.SetCluster = 1; - } else { + } else { e.SetCluster = 2; + } + std::uniform_real_distribution dist(1, 6.999f); + float random = dist(m_RandomGenerator); + e.Set = random; + } else { + e.Set = m_Set; + e.SetCluster = m_SetCluster; + m_Set++; + if (m_Set > 6) { + m_SetCluster++; + m_Set = 1; + } } - std::uniform_real_distribution dist(1, 6.999f); - float random = dist(m_RandomGenerator); - e.Set = random; + EventBroker->Publish(e); break; } case 4: // Brick Generating second case { + m_NumberOfActions++; kraken->CurrentAction = 1; Events::BrickGenerating e; e.Origin1 = glm::vec3(-5, 7, -10); e.Origin2 = glm::vec3(5, 7, -10); - if (kraken->Health > 20) { - e.SetCluster = 0; - } else if (kraken->Health > 10) { - e.SetCluster = 1; + e.Speed = 10; + if (m_RandomKraken) { + if (kraken->Health > 20) { + e.SetCluster = 0; + } else if (kraken->Health > 10) { + e.SetCluster = 1; + } else { + e.SetCluster = 2; + } + std::uniform_real_distribution dist(1, 6.999f); + float random = dist(m_RandomGenerator); + e.Set = random; } else { - e.SetCluster = 2; + e.Set = m_Set; + e.SetCluster = m_SetCluster; + m_Set++; + if (m_Set > 6) { + m_SetCluster++; + m_Set = 1; + } } - std::uniform_real_distribution dist(1, 6.999f); - float random = dist(m_RandomGenerator); - e.Set = random; + EventBroker->Publish(e); break; } @@ -277,6 +305,7 @@ bool dd::Systems::KrakenSystem::OnKrakenHit(const dd::Events::KrakenHit &event) auto kraken = m_World->GetComponent(event.Kraken); auto transform = m_World->GetComponent(event.Hitter); kraken->Health--; + kraken->CurrentAction = 3; //kraken->Health -= 15; //kraken->Health = -1; //To defeat the kraken instantly. @@ -345,6 +374,8 @@ bool dd::Systems::KrakenSystem::OnKrakenHit(const dd::Events::KrakenHit &event) bool dd::Systems::KrakenSystem::OnKrakenDefeated(const dd::Events::KrakenDefeated &event) { m_KrakenBattle = false; + m_Set = 0; + m_SetCluster = 0; auto kraken = m_World->GetComponent(event.Kraken); auto physicsComponent = m_World->GetComponent(event.Kraken); diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index be38ca1..8ce9b95 100755 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -23,6 +23,7 @@ void dd::Systems::LevelSystem::Initialize() EVENT_SUBSCRIBE_MEMBER(m_EResume, &LevelSystem::OnResume); EVENT_SUBSCRIBE_MEMBER(m_EHitPad, &LevelSystem::OnHitPad); EVENT_SUBSCRIBE_MEMBER(m_EBrickGenerating, &LevelSystem::OnBrickGenerating); + EVENT_SUBSCRIBE_MEMBER(m_EBreakAllBricks, &LevelSystem::OnBreakAllBricks); EVENT_SUBSCRIBE_MEMBER(m_EKrakenDefeated, &LevelSystem::OnKrakenDefeated); m_GodMode = ResourceManager::Load("Config.ini")->GetValue("Cheat.GodMode", false); @@ -279,12 +280,18 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID } } + if (m_BreakAllBricks) { + if (m_LooseBricks == 1 && m_KrakenBattle) { + m_BreakAllBricks = false; + } + } + auto brick = m_World->GetComponent(entity); if (brick != nullptr) { if (m_BreakAllBricks) { if (!brick->Removed) { brick->Removed = true; - BrickHit(entity, entity, 1); + BrickHit(entity, entity, 0, false); } } @@ -336,7 +343,7 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID auto ball = m_World->GetComponent(entity); if (ball != nullptr) { - if (m_BrickGenerating) { + if (m_BrickGenerating && !m_BreakAllBricks) { auto transform = m_World->GetComponent(entity); if (transform->Position.y < 0 && transform->Velocity.y < 0) { m_BrickGenerating = false; @@ -477,6 +484,7 @@ EntityID dd::Systems::LevelSystem::CreateBrick(int row, int line, glm::vec2 spac model->ModelFile = "Models/Brick/KrakenBrick.obj"; } else if (typeInt == Kraken) { + m_KrakenBattle = true; Events::KrakenAppear e; e.Position = transform->Position; e.Health = 10; @@ -491,6 +499,7 @@ EntityID dd::Systems::LevelSystem::CreateBrick(int row, int line, glm::vec2 spac bool dd::Systems::LevelSystem::OnBrickGenerating(const dd::Events::BrickGenerating &event) { + m_BreakAllBricks = true; m_BrickGenerating = true; m_BrickGeneratingEvent = event; return true; @@ -523,7 +532,7 @@ bool dd::Systems::LevelSystem::BrickGenerating(const dd::Events::BrickGenerating } brick->GenerationGoal = e.GoalPosition; e.Entity = ent; - e.Speed = 6; + e.Speed = event.Speed; e.Queue = false; EventBroker->Publish(e); m_LooseBricks++; @@ -536,6 +545,12 @@ bool dd::Systems::LevelSystem::BrickGenerating(const dd::Events::BrickGenerating return true; } +bool dd::Systems::LevelSystem::OnBreakAllBricks(const dd::Events::BreakAllBricks &event) +{ + m_BreakAllBricks = true; + return true; +} + void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are sets the Kraken gets! { std::array level; @@ -587,10 +602,10 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 2) { level = // The Audience {0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, - 1, 0, 0, 0, 0, 0, 1, - 1, 0, 0, 0, 0, 0, 1, + 1, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0 }; color = {y, y, y, y, y, y, y, @@ -604,8 +619,8 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 1, 0, - 1, 1, 1, 0, 1, 1, 1, + 0, 3, 0, 0, 0, 1, 0, + 1, 1, 6, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }; color = {b, b, b, b, b, b, b, @@ -617,11 +632,11 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 4) { level = // The Scales (right) {1, 1, 1, 0, 0, 0, 0, - 1, 1, 1, 0, 0, 0, 0, + 1, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 1, 1, 1 }; + 0, 0, 0, 0, 1, 4, 1 }; color = {m, m, m, m, m, m, m, m, m, m, m, m, m, m, @@ -632,11 +647,11 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 5) { level = // The Scales (left) {0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, - 1, 1, 1, 0, 0, 0, 0 }; + 1, 6, 1, 0, 0, 0, 0 }; color = {g, g, g, g, g, g, g, g, g, g, g, g, g, g, @@ -647,7 +662,7 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 6) { level = // The Sword {0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 1, 1, 0, 0, + 0, 0, 6, 2, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, @@ -665,8 +680,8 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are level = // The Wall {1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, - 1, 0, 0, 0, 0, 0, 1, - 1, 1, 1, 1, 1, 1, 2, + 6, 0, 0, 0, 0, 0, 6, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }; color = @@ -680,7 +695,7 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are level = // The Checkerboard {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 1, 0, 1, 0, 1, + 3, 0, 1, 0, 6, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0 }; @@ -695,7 +710,7 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are level = // The Fighter Jet {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 1, 0, 1, + 6, 0, 1, 0, 1, 0, 6, 0, 1, 1, 1, 1, 1, 0, 0, 0, 4, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 }; @@ -709,9 +724,9 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 4) { level = // The Formation {0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 3, 1, + 1, 1, 4, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, + 1, 1, 6, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; color = @@ -725,9 +740,9 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are level = // The Pillars {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, - 0, 1, 2, 0, 1, 1, 0, - 0, 1, 1, 0, 1, 1, 0, + 0, 6, 1, 0, 1, 6, 0, 0, 1, 1, 0, 1, 1, 0, + 0, 1, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; color = {g, g, g, g, g, g, g, @@ -740,8 +755,8 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are level = // The Treasure Chest {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, - 0, 1, 1, 5, 1, 1, 0, - 0, 0, 1, 1, 1, 0, 0, + 0, 1, 1, 2, 1, 1, 0, + 0, 0, 1, 6, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; color = @@ -755,11 +770,11 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (setCluster == 2) { if (set == 1) { level = // The Butterfly - {1, 0, 0, 1, 0, 0, 1, - 1, 1, 0, 1, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, + {4, 0, 0, 1, 0, 0, 1, + 1, 6, 0, 1, 0, 6, 1, + 1, 1, 1, 6, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, - 1, 0, 0, 2, 0, 0, 1, + 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 3 }; color = {r, r, r, r, r, r, r, @@ -771,7 +786,7 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 2) { level = // The Cross {1, 1, 0, 0, 0, 1, 1, - 0, 4, 1, 0, 1, 1, 0, + 0, 4, 1, 0, 1, 6, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, @@ -785,11 +800,11 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are y, y, y, y, y, y, y }; } else if (set == 3) { level = // The Inverted Cross - {0, 0, 1, 6, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 1, - 1, 1, 0, 0, 0, 1, 3, + {0, 0, 1, 1, 1, 0, 0, + 1, 0, 0, 6, 0, 0, 1, + 4, 1, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 1, 1, - 1, 0, 0, 1, 0, 0, 1, + 1, 0, 0, 6, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0 }; color = {b, b, b, b, b, b, b, @@ -801,11 +816,11 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 4) { level = // The Great Wall {1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, + 1, 1, 6, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 5, 1, + 1, 6, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 3, 1, 1, 1, 1, 1 }; + 1, 3, 1, 1, 1, 1, 5 }; color = {m, m, m, m, m, m, m, m, m, m, m, m, m, m, @@ -816,10 +831,10 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 5) { level = // The Champion {0, 0, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 2, 0, 0, + 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, - 5, 1, 1, 0, 1, 1, 1, + 3, 6, 1, 0, 1, 6, 1, 1, 1, 1, 0, 1, 1, 1 }; color = {g, g, g, g, g, g, g, @@ -830,10 +845,10 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are g, g, g, g, g, g, g }; } else if (set == 6) { level = // The Dog. What, you can't see it? XD - {0, 1, 1, 1, 1, 1, 0, - 1, 1, 2, 1, 2, 1, 1, + {0, 1, 1, 6, 1, 1, 0, + 1, 1, 4, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 1, 1, 1, 0, 1, + 6, 0, 1, 1, 1, 0, 6, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 3, 0, 0, 0 }; color = @@ -912,7 +927,7 @@ bool dd::Systems::LevelSystem::OnContact(const dd::Events::Contact &event) // For when a brick gets shot. brick->Removed = true; m_World->RemoveEntity(entityShot); - BrickHit(entityShot, entityBrick, 1); + BrickHit(entityShot, entityBrick, 1, true); //ep.Radius = 0.05; return true; @@ -928,13 +943,13 @@ bool dd::Systems::LevelSystem::OnContact(const dd::Events::Contact &event) ec.Ball = entityBall; EventBroker->Publish(ec); - BrickHit(entityBall, entityBrick, ball->Combo); + BrickHit(entityBall, entityBrick, ball->Combo, true); } return true; } -void dd::Systems::LevelSystem::BrickHit(EntityID entityHitter, EntityID entityBrick, int combo) +void dd::Systems::LevelSystem::BrickHit(EntityID entityHitter, EntityID entityBrick, int combo, bool activatePowerUps) { auto brick = m_World->GetComponent(entityBrick); auto physicsComponent = m_World->GetComponent(entityBrick); @@ -951,47 +966,49 @@ void dd::Systems::LevelSystem::BrickHit(EntityID entityHitter, EntityID entityBr } // Check if the brick is any kind of special. - auto multi = m_World->GetComponent(entityBrick); - if (multi != nullptr) { - Events::MultiBall e; - e.padTransform = transformComponentBrick; - EventBroker->Publish(e); - } - else { - auto buoy = m_World->GetComponent(entityBrick); - if (buoy != nullptr) { - Events::Lifebuoy e; - e.Transform = transformComponentBrick; + if (activatePowerUps) { + auto multi = m_World->GetComponent(entityBrick); + if (multi != nullptr) { + Events::MultiBall e; + e.padTransform = transformComponentBrick; EventBroker->Publish(e); } else { - auto sticky = m_World->GetComponent(entityBrick); - if (sticky != nullptr) { - Events::StickyPad e; + auto buoy = m_World->GetComponent(entityBrick); + if (buoy != nullptr) { + Events::Lifebuoy e; e.Transform = transformComponentBrick; - e.Times = 3; EventBroker->Publish(e); } else { - auto ink = m_World->GetComponent(entityBrick); - if (ink != nullptr) { - Events::InkBlaster e; + auto sticky = m_World->GetComponent(entityBrick); + if (sticky != nullptr) { + Events::StickyPad e; e.Transform = transformComponentBrick; - e.Shots = 5; - e.Speed = 7; + e.Times = 3; EventBroker->Publish(e); } else { - auto kraken = m_World->GetComponent(entityBrick); - if (kraken != nullptr) { - Events::KrakenAttack e; - e.ChargeUpdate = 0; - e.KrakenStrength = 0.1; - e.PlayerStrength = 0.05; + auto ink = m_World->GetComponent(entityBrick); + if (ink != nullptr) { + Events::InkBlaster e; + e.Transform = transformComponentBrick; + e.Shots = 5; + e.Speed = 7; EventBroker->Publish(e); } else { + auto kraken = m_World->GetComponent(entityBrick); + if (kraken != nullptr) { + Events::KrakenAttack e; + e.ChargeUpdate = 0; + e.KrakenStrength = 0.1; + e.PlayerStrength = 0.05; + EventBroker->Publish(e); + } + else { + } } } } @@ -1128,6 +1145,7 @@ bool dd::Systems::LevelSystem::OnPowerUpTaken(const dd::Events::PowerUpTaken &ev bool dd::Systems::LevelSystem::OnKrakenDefeated(const dd::Events::KrakenDefeated &event) { + m_KrakenBattle = false; m_BrickGenerating = false; m_BreakAllBricks = true; SetNumberOfBricks(NumberOfBricks() - 1); diff --git a/src/game/Game/PadSystem.cpp b/src/game/Game/PadSystem.cpp index 9d5dd9d..6c5f301 100755 --- a/src/game/Game/PadSystem.cpp +++ b/src/game/Game/PadSystem.cpp @@ -287,6 +287,10 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) { e.Origin1 = glm::vec3(-5, 7, -10); e.Origin2 = glm::vec3(5, 7, -10); e.Set = 1; + e.SetCluster = 1; + EventBroker->Publish(e); + } else if (val == GLFW_KEY_C) { + Events::BreakAllBricks e; EventBroker->Publish(e); } else if (val == GLFW_KEY_L) { Events::Lifebuoy e; diff --git a/src/game/Game/WaterSystem.cpp b/src/game/Game/WaterSystem.cpp index 3e77f45..02db22f 100644 --- a/src/game/Game/WaterSystem.cpp +++ b/src/game/Game/WaterSystem.cpp @@ -57,7 +57,7 @@ void dd::Systems::WaterSystem::UpdateEntity(double dt, EntityID entity, EntityID if (transform->Position.y < m_SubmergedHeight) { brickPart->Submerged = true; m_BrickPartCounters[brickPart->NumberOfPartsInBrick]++; - std::cout << "Parts: " << m_BrickPartCounters[brickPart->NumberOfPartsInBrick] << " of " << brickPart->NumberOfPartsInBrick << std::endl; + //std::cout << "Parts: " << m_BrickPartCounters[brickPart->NumberOfPartsInBrick] << " of " << brickPart->NumberOfPartsInBrick << std::endl; if (m_BrickPartCounters[brickPart->NumberOfPartsInBrick] >= brickPart->NumberOfPartsInBrick) { m_BrickPartCounters[brickPart->NumberOfPartsInBrick] = 0; Events::RaiseWater e; From b8e27e0cea2d97d1bb47dd485ff70ab1e637c3db Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Fri, 23 Oct 2015 15:18:34 +0200 Subject: [PATCH 4/4] Corrected Stage. --- include/Game/LevelSystem.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Game/LevelSystem.h b/include/Game/LevelSystem.h index 2d6ab1e..ad85e5a 100755 --- a/include/Game/LevelSystem.h +++ b/include/Game/LevelSystem.h @@ -147,7 +147,7 @@ private: bool m_Pause = false; int m_LooseBricks = 0; int m_CurrentCluster = 1; - int m_CurrentLevel = 6; + int m_CurrentLevel = 1; int m_MultiBalls = 0; int m_PowerUps = 0; int m_Score = 0;