Merge branch 'master' of github.com:teamfisk/AgileBreakOut

This commit is contained in:
2015-10-21 15:38:46 +02:00
26 changed files with 2016 additions and 557 deletions
+13 -8
View File
@@ -50,6 +50,8 @@ void dd::Systems::BallSystem::Initialize()
physics->Category = CollisionLayer::Type::Ball;
physics->Mask = static_cast<CollisionLayer::Type>(CollisionLayer::Type::Pad | CollisionLayer::Type::Brick | CollisionLayer::Type::Wall | CollisionLayer::LifeBuoy);
physics->Calculate = true;
auto collisionSound = m_World->AddComponent<Components::CollisionSound>(ent);
collisionSound->FilePath = "Sounds/Jelly/squid-bounce-n.wav";
m_World->CommitEntity(ent);
@@ -318,17 +320,20 @@ bool dd::Systems::BallSystem::Contact(const Events::Contact &event)
particleEvent.EmittingAngle = glm::half_pi<float>();
particleEvent.Spread = 0.f;
particleEvent.NumberOfTicks = 1;
particleEvent.ParticleLifeTime = 2.f;
particleEvent.ParticleLifeTime = 1.3f;
particleEvent.ParticlesPerTick = 1;
particleEvent.Position = glm::vec3(ballTransform->Position.x, -3.f, -3.f);
if (ballTransform->Position.x >= 2.7f) {
particleEvent.Position = glm::vec3(2.7f, -3.f, -3.f);
} else if (ballTransform->Position.x <= -2.7f) {
particleEvent.Position = glm::vec3(-2.7f, -3.f, -3.f);
particleEvent.Position = glm::vec3(ballTransform->Position.x, -3.5f, -3.f);
if (ballTransform->Position.x >= 2.5f) {
particleEvent.Position = glm::vec3(2.5f, -3.5f, -3.f);
} else if (ballTransform->Position.x <= -2.5f) {
particleEvent.Position = glm::vec3(-2.5f, -3.5f, -3.f);
}
particleEvent.ScaleValues.push_back(glm::vec3(1.f));
particleEvent.ScaleValues.push_back(glm::vec3(1.5f));
particleEvent.ScaleValues.push_back(glm::vec3(2.f));
particleEvent.Color = glm::vec4(1.f);
particleEvent.Speed = 0;
particleEvent.Speed = 1.f;
particleEvent.AlphaValues.push_back(1.f);
particleEvent.AlphaValues.push_back(0.7f);
if (ballComponent->Combo <= 9) {
particleEvent.SpriteFile = "Textures/Combo/Combo00" + std::to_string(ballComponent->Combo) + ".png";
+36 -9
View File
@@ -80,10 +80,14 @@ void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityI
switch (kraken->CurrentAction)
{
case 1: // Idle
//m_KrakenTimer += dt;
m_KrakenTimer += dt;
if (m_KrakenTimer > m_KrakenSecondsToAction) {
if (m_NumberOfActions == 0) {
kraken->CurrentAction = 3;
break;
}
m_KrakenTimer = 0;
std::uniform_real_distribution<float> dist(1, 2.999f);
std::uniform_real_distribution<float> dist(1, 4.999f);
float random = dist(m_RandomGenerator);
//std::cout << random << std::endl;
kraken->CurrentAction = random;
@@ -98,9 +102,29 @@ void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityI
EventBroker->Publish(krakenAttack);
break;
case 3: // Brick Generating
break;
case 4: // Moving
break;
{
kraken->CurrentAction = 1;
Events::BrickGenerating e;
e.Origin1 = glm::vec3(-5, 7, -10);
e.Origin2 = glm::vec3(5, 7, -10);
std::uniform_real_distribution<float> dist(1, 5.999f);
float random = dist(m_RandomGenerator);
e.Set = random;
EventBroker->Publish(e);
break;
}
case 4: // Brick Generating second case
{
kraken->CurrentAction = 1;
Events::BrickGenerating e;
e.Origin1 = glm::vec3(-5, 7, -10);
e.Origin2 = glm::vec3(5, 7, -10);
std::uniform_real_distribution<float> dist(1, 5.999f);
float random = dist(m_RandomGenerator);
e.Set = random;
EventBroker->Publish(e);
break;
}
case 5: // Taunting
if (m_ReturnToIdle) {
m_ReturnToIdle = false;
@@ -166,6 +190,9 @@ bool dd::Systems::KrakenSystem::OnContact(const dd::Events::Contact &event)
Events::KrakenHit e;
e.Kraken = krakenEntity;
e.Hitter = otherEntitiy;
e.MaxHealth = kraken->MaxHealth;
e.CurrentHealth = kraken->Health;
e.NewHealth = kraken->Health - 1;
EventBroker->Publish(e);
}
}
@@ -191,9 +218,9 @@ bool dd::Systems::KrakenSystem::OnKrakenAttack(const dd::Events::KrakenAttack &e
bool dd::Systems::KrakenSystem::OnKrakenHit(const dd::Events::KrakenHit &event)
{
auto kraken = m_World->GetComponent<Components::Kraken>(event.Kraken);
//kraken->Health--;
kraken->Health--;
//std::cout << kraken->Health << std::endl;
kraken->Health = -1;
//kraken->Health = -1;
if (kraken->Health < 0) {
Events::KrakenDefeated e;
e.Kraken = event.Kraken;
@@ -210,9 +237,9 @@ bool dd::Systems::KrakenSystem::OnKrakenDefeated(const dd::Events::KrakenDefeate
auto kraken = m_World->GetComponent<Components::Kraken>(event.Kraken);
auto physicsComponent = m_World->GetComponent<Components::Physics>(event.Kraken);
/*physicsComponent->CollisionType = CollisionType::Type::Dynamic;
physicsComponent->GravityScale = 1.f;
physicsComponent->GravityScale = 1.f;*/
physicsComponent->Mask = static_cast<CollisionLayer::Type>(CollisionLayer::Water | CollisionLayer::Wall);
physicsComponent->Calculate = false;*/
/*physicsComponent->Calculate = false;*/
auto transformComponentBrick = m_World->GetComponent<Components::Transform>(event.Kraken);
auto transformComponentHitter = m_World->GetComponent<Components::Transform>(event.Hitter);
+117 -40
View File
@@ -248,6 +248,9 @@ void dd::Systems::LevelSystem::Update(double dt)
if (!m_Initialized) {
GetNextLevel();
CreateLevel(0);
for (int i = 0; i < m_KrakenBricks.size(); i++) {
m_KrakenBricks[i] = false;
}
m_Initialized = true;
}
}
@@ -456,26 +459,41 @@ EntityID dd::Systems::LevelSystem::CreateBrick(int row, int line, glm::vec2 spac
bool dd::Systems::LevelSystem::OnBrickGenerating(const dd::Events::BrickGenerating &event)
{
GetBrickSet(event.Set);
LOG_DEBUG("This is happening.");
m_BrickGenerating = true;
m_BrickGeneratingEvent = event;
return true;
}
int rows = 2;
bool dd::Systems::LevelSystem::BrickGenerating(const dd::Events::BrickGenerating &event)
{
GetBrickSet(event.Set);
int rows = 6;
int lines = 7;
int getter = 0;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < lines; j++) {
auto ent = CreateBrick(i, j, SpaceBetweenBricks(), SpaceToEdge(), -4, 1, m_BrickSet[getter], m_ColorSet[getter]);
if (ent != NULL) {
auto transform = m_World->GetComponent<Components::Transform>(ent);
Events::Move e;
e.GoalPosition = transform->Position;
transform->Position = event.Origin;
e.Entity = ent;
e.Speed = 6;
e.Queue = false;
EventBroker->Publish(e);
m_LooseBricks++;
SetNumberOfBricks(NumberOfBricks() + 1);
if (!m_KrakenBricks[getter]) {
auto ent = CreateBrick(i, j, SpaceBetweenBricks(), SpaceToEdge(), -3.2, 1, m_BrickSet[getter], m_ColorSet[getter]);
if (ent != NULL) {
auto brick = m_World->GetComponent<Components::Brick>(ent);
brick->Number = getter;
m_KrakenBricks[getter] = true;
auto transform = m_World->GetComponent<Components::Transform>(ent);
Events::Move e;
e.GoalPosition = transform->Position;
if (j < 4) {
transform->Position = event.Origin1;
} else {
transform->Position = event.Origin2;
}
e.Entity = ent;
e.Speed = 6;
e.Queue = false;
EventBroker->Publish(e);
m_LooseBricks++;
SetNumberOfBricks(NumberOfBricks() + 1);
}
}
getter++;
}
@@ -483,10 +501,10 @@ bool dd::Systems::LevelSystem::OnBrickGenerating(const dd::Events::BrickGenerati
return true;
}
void dd::Systems::LevelSystem::GetBrickSet(int set)
void dd::Systems::LevelSystem::GetBrickSet(int set) // These are sets the Kraken gets!
{
std::array<int, 14> level;
std::array<glm::vec4, 14> color;
std::array<int, 42> level;
std::array<glm::vec4, 42> color;
// Level array indicates type of brick.
// 0 is empty space.
// 1 is standard brick.
@@ -517,51 +535,99 @@ void dd::Systems::LevelSystem::GetBrickSet(int set)
if (set == 1) {
level =
{1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1 };
{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,
1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0};
color =
{r, r, r, r, r, r, r,
r, r, r, r, r, r, r };
r, r, r, r, r, r, r,
r, r, r, r, r, r, r,
r, r, r, r, r, r, r,
r, r, r, r, r, r, r,
r, r, r, r, r, r, r};
}
else if (set == 2) {
level =
{2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2 };
{0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
3, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 0};
color =
{w, w, w, w, w, w, w,
w, w, w, w, w, w, w };
{y, y, y, y, y, y, y,
y, y, y, y, y, y, y,
y, y, y, y, y, y, y,
y, y, y, y, y, y, y,
y, y, y, y, y, y, y,
y, y, y, y, y, y, y};
}
else if (set == 3) {
level =
{0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0 };
0, 0, 0, 0, 0, 0, 0,
1, 0, 1, 0, 1, 0, 1,
0, 1, 1, 1, 1, 1, 0,
0, 0, 4, 1, 1, 0, 0,
0, 0, 0, 1, 0, 0, 0};
color =
{w, w, w, w, w, w, w,
w, w, w, w, w, w, w };
{b, b, b, b, b, b, b,
b, b, b, b, b, b, b,
b, b, b, b, b, b, b,
b, b, b, b, b, b, b,
b, b, b, b, b, b, b,
b, b, b, b, b, b, b};
}
else if (set == 4) {
level =
{0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0 };
1, 1, 1, 1, 1, 3, 1,
0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0};
color =
{w, w, w, w, w, w, w,
w, w, w, w, w, w, w };
{m, m, m, m, m, m, m,
m, m, m, m, m, m, m,
m, m, m, m, m, m, m,
m, m, m, m, m, m, m,
m, m, m, m, m, m, m,
m, m, m, m, m, m, m};
}
else if (set == 5) {
level =
{0, 0, 0, 0, 0, 0, 0,
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, 1, 1, 0, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0};
color =
{w, w, w, w, w, w, w,
w, w, w, w, w, w, w };
{g, g, g, g, g, g, g,
g, g, g, g, g, g, g,
g, g, g, g, g, g, g,
g, g, g, g, g, g, g,
g, g, g, g, g, g, g,
g, g, g, g, g, g, g};
}
else if (set == 6) {
level =
{0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 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, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0};
color =
{w, w, w, w, w, w, w,
w, w, w, w, w, w, w };
{r, r, r, r, r, r, r,
r, r, r, r, r, r, r,
r, r, r, r, r, r, r,
r, r, r, r, r, r, r,
r, r, r, r, r, r, r,
r, r, r, r, r, r, r};
}
std::copy(std::begin(level), std::end(level), std::begin(m_BrickSet));
@@ -576,6 +642,11 @@ void dd::Systems::LevelSystem::OnEntityRemoved(EntityID entity)
bool dd::Systems::LevelSystem::OnContact(const dd::Events::Contact &event)
{
auto templateCheck = m_World->GetComponent<Components::Template>(event.Entity1);
if (templateCheck != nullptr){ return false; }
templateCheck = m_World->GetComponent<Components::Template>(event.Entity2);
if (templateCheck != nullptr){ return false; }
EntityID entityBrick;
EntityID entityBall;
EntityID entityShot = 0;
@@ -653,10 +724,12 @@ void dd::Systems::LevelSystem::BrickHit(EntityID entityHitter, EntityID entityBr
auto transformComponentBrick = m_World->GetComponent<Components::Transform>(entityBrick);
auto transformComponentHitter = m_World->GetComponent<Components::Transform>(entityHitter);
auto brickModel = m_World->GetComponent<Components::Model>(entityBrick);
if (brick->Number < 50) {
m_KrakenBricks[brick->Number] = false;
}
// Check if the brick is any kind of special.
auto multi = m_World->GetComponent<Components::MultiBallBrick>(entityBrick);
if (multi != nullptr) {
@@ -1121,6 +1194,10 @@ void dd::Systems::LevelSystem::GetNextLevel()
bool dd::Systems::LevelSystem::OnHitPad(const dd::Events::HitPad &event)
{
m_Cleared = false;
if (m_BrickGenerating) {
m_BrickGenerating = false;
BrickGenerating(m_BrickGeneratingEvent);
}
return true;
}
+1 -1
View File
@@ -143,7 +143,7 @@ bool dd::Systems::LifebuoySystem::OnLifebuoyHit(const dd::Events::LifebuoyHit &e
e.EmittingAngle = glm::half_pi<float>();
e.Spread = 0.5f;
e.NumberOfTicks = 1;
e.ParticleLifeTime = 1.f;
e.ParticleLifeTime = 2.f;
e.ParticlesPerTick = 1;
e.Position = transformComponent->Position;
e.ScaleValues.clear();
+18 -3
View File
@@ -151,7 +151,6 @@ void dd::Systems::PadSystem::Update(double dt)
Events::KrakenAttack e;
e.ChargeUpdate = m_KrakenCharge;
EventBroker->Publish(e);
//std::cout << "Charge: " << m_KrakenCharge << std::endl;
return;
}
@@ -271,7 +270,8 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) {
EventBroker->Publish(e);
} else if (val == GLFW_KEY_G) {
Events::BrickGenerating e;
e.Origin = glm::vec3(-5, 7, -10);
e.Origin1 = glm::vec3(-5, 7, -10);
e.Origin2 = glm::vec3(5, 7, -10);
e.Set = 1;
EventBroker->Publish(e);
} else if (val == GLFW_KEY_L) {
@@ -296,7 +296,7 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) {
} else if (val == GLFW_KEY_Q) {
Events::Move e;
e.Entity = Entity();
e.GoalPosition = glm::vec3(0, 0, -10);
e.GoalPosition = glm::vec3(0, 0, -10);
e.Speed = 5;
e.Queue = false;
EventBroker->Publish(e);
@@ -474,6 +474,17 @@ bool dd::Systems::PadSystem::OnKrakenAttack(const dd::Events::KrakenAttack &even
transform->Velocity = glm::vec3(0, 0, 0);
acceleration = glm::vec3(0, 0, 0);
if (!m_KrakenArm){
m_KrakenArm = m_World->CreateEntity(Entity());
auto transform = m_World->AddComponent<Components::Transform>(m_KrakenArm);
transform->Position = glm::vec3(1.f, -3.0f, 0.f);
auto model = m_World->AddComponent<Components::Model>(m_KrakenArm);
model->ModelFile = "Models/kraken/Arm.dae";
auto animation = m_World->AddComponent<Components::Animation>(m_KrakenArm);
animation->Speed = 1.0f;
m_World->CommitEntity(m_KrakenArm);
}
SetTransform(transform);
SetAcceleration(acceleration);
} else if (m_KrakenCharge >= 1) {
@@ -481,6 +492,10 @@ bool dd::Systems::PadSystem::OnKrakenAttack(const dd::Events::KrakenAttack &even
m_KrakenCharge = 0;
m_KrakenStrength = 0;
m_PlayerStrength = 0;
m_World->RemoveEntity(m_KrakenArm);
m_KrakenArm = NULL;
}
return true;
}
+7
View File
@@ -820,6 +820,7 @@ bool dd::Systems::PhysicsSystem::OnContact(const dd::Events::Contact &event)
model = m_World->GetComponent<Components::Model>(event.Entity1);
}
Events::PlaySound se;
//Spawn a particle when a brick collides with somthing
Events::CreateParticleSequence e;
@@ -843,14 +844,19 @@ bool dd::Systems::PhysicsSystem::OnContact(const dd::Events::Contact &event)
auto PowerKraken = m_World->GetComponent<Components::KrakenAttackBrick>(entity);
if (PowerFriend) {
se.FilePath = "Sounds/jap-awesome.wav";
e.SpriteFile = "Textures/PowerUps/Friends.png";
} else if (PowerSaviour) {
se.FilePath = "Sounds/jap-awesome.wav";
e.SpriteFile = "Textures/PowerUps/Saviour.png";
} else if (PowerSticky) {
se.FilePath = "Sounds/jap-awesome.wav";
e.SpriteFile = "Textures/PowerUps/Sticky.png";
} else if (PowerInkBlaster){
se.FilePath = "Sounds/jap-awesome.wav";
e.SpriteFile = "Textures/PowerUps/InkBlaster.png";
} else if (PowerKraken) {
se.FilePath = "Sounds/jap-awesome.wav";
e.SpriteFile = "Textures/PowerUps/RealeaseTheKraken.png";
}
else {
@@ -873,6 +879,7 @@ bool dd::Systems::PhysicsSystem::OnContact(const dd::Events::Contact &event)
}
EventBroker->Publish(e);
EventBroker->Publish(se);
return true;
+5
View File
@@ -188,6 +188,11 @@ bool dd::Systems::SoundSystem::OnContact(const dd::Events::Contact &event)
bool dd::Systems::SoundSystem::OnGameStart(const dd::Events::GameStart &event)
{
{
dd::Events::StopSound e;
e.FilePath = STORY_VOICE;
EventBroker->Publish(e);
}
{
dd::Events::StopSound e;
e.FilePath = MENU_BGM;