Skill-Kraken implemented. What do people think...?
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -20,6 +20,7 @@ struct BrickGenerating : Event
|
||||
int TargetLine;
|
||||
int Set;
|
||||
int SetCluster;
|
||||
int Speed = 6;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -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<int, 42> m_Bricks;
|
||||
std::array<int, 42> m_Colors;
|
||||
|
||||
|
||||
@@ -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<LevelSystem, dd::Events::Contact> m_EContact;
|
||||
@@ -194,6 +196,7 @@ private:
|
||||
dd::EventRelay<LevelSystem, dd::Events::Resume> m_EResume;
|
||||
dd::EventRelay<LevelSystem, dd::Events::HitPad> m_EHitPad;
|
||||
dd::EventRelay<LevelSystem, dd::Events::BrickGenerating> m_EBrickGenerating;
|
||||
dd::EventRelay<LevelSystem, dd::Events::BreakAllBricks> m_EBreakAllBricks;
|
||||
dd::EventRelay<LevelSystem, dd::Events::KrakenDefeated> 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);
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
#include "Rendering/CAnimation.h"
|
||||
|
||||
#include "Game/EBrickGenerating.h"
|
||||
#include "Game/EBreakAllBricks.h"
|
||||
|
||||
|
||||
namespace dd
|
||||
|
||||
@@ -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<float> 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<float> 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<float> 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<float> 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<Components::Kraken>(event.Kraken);
|
||||
auto transform = m_World->GetComponent<Components::Transform>(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<Components::Kraken>(event.Kraken);
|
||||
auto physicsComponent = m_World->GetComponent<Components::Physics>(event.Kraken);
|
||||
|
||||
@@ -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<ConfigFile>("Config.ini")->GetValue<bool>("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<Components::Brick>(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<Components::Ball>(entity);
|
||||
|
||||
if (ball != nullptr) {
|
||||
if (m_BrickGenerating) {
|
||||
if (m_BrickGenerating && !m_BreakAllBricks) {
|
||||
auto transform = m_World->GetComponent<Components::Transform>(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<int, 42> 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<Components::Brick>(entityBrick);
|
||||
auto physicsComponent = m_World->GetComponent<Components::Physics>(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<Components::MultiBallBrick>(entityBrick);
|
||||
if (multi != nullptr) {
|
||||
Events::MultiBall e;
|
||||
e.padTransform = transformComponentBrick;
|
||||
EventBroker->Publish(e);
|
||||
}
|
||||
else {
|
||||
auto buoy = m_World->GetComponent<Components::LifebuoyBrick>(entityBrick);
|
||||
if (buoy != nullptr) {
|
||||
Events::Lifebuoy e;
|
||||
e.Transform = transformComponentBrick;
|
||||
if (activatePowerUps) {
|
||||
auto multi = m_World->GetComponent<Components::MultiBallBrick>(entityBrick);
|
||||
if (multi != nullptr) {
|
||||
Events::MultiBall e;
|
||||
e.padTransform = transformComponentBrick;
|
||||
EventBroker->Publish(e);
|
||||
}
|
||||
else {
|
||||
auto sticky = m_World->GetComponent<Components::StickyBrick>(entityBrick);
|
||||
if (sticky != nullptr) {
|
||||
Events::StickyPad e;
|
||||
auto buoy = m_World->GetComponent<Components::LifebuoyBrick>(entityBrick);
|
||||
if (buoy != nullptr) {
|
||||
Events::Lifebuoy e;
|
||||
e.Transform = transformComponentBrick;
|
||||
e.Times = 3;
|
||||
EventBroker->Publish(e);
|
||||
}
|
||||
else {
|
||||
auto ink = m_World->GetComponent<Components::InkBlasterBrick>(entityBrick);
|
||||
if (ink != nullptr) {
|
||||
Events::InkBlaster e;
|
||||
auto sticky = m_World->GetComponent<Components::StickyBrick>(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<Components::KrakenAttackBrick>(entityBrick);
|
||||
if (kraken != nullptr) {
|
||||
Events::KrakenAttack e;
|
||||
e.ChargeUpdate = 0;
|
||||
e.KrakenStrength = 0.1;
|
||||
e.PlayerStrength = 0.05;
|
||||
auto ink = m_World->GetComponent<Components::InkBlasterBrick>(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<Components::KrakenAttackBrick>(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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user