From b5ae490b23502fa453c0cb261e439dfb5f879a5c Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Thu, 8 Oct 2015 11:51:13 +0200 Subject: [PATCH] Prepared for Lifebuoy PowerUp. --- include/Game/ELifebuoy.h | 25 +++++++++++++++++++++++++ include/Game/LevelSystem.h | 4 +++- include/Physics/PhysicsSystem.h | 2 +- src/game/Core/Renderer.cpp | 2 +- src/game/Game/LevelSystem.cpp | 16 +++++++++++----- src/game/Physics/PhysicsSystem.cpp | 11 ++++------- 6 files changed, 45 insertions(+), 15 deletions(-) create mode 100644 include/Game/ELifebuoy.h diff --git a/include/Game/ELifebuoy.h b/include/Game/ELifebuoy.h new file mode 100644 index 0000000..194dbb3 --- /dev/null +++ b/include/Game/ELifebuoy.h @@ -0,0 +1,25 @@ +// +// Created by Adniklastrator on 2015-09-17. +// + +#ifndef DAYDREAM_ELIFEBUOY_H +#define DAYDREAM_ELIFEBUOY_H + +#include "Core/EventBroker.h" + +namespace dd +{ + +namespace Events +{ + +struct Lifebuoy : Event +{ + Components::Transform* Transform; +}; + +} + +} + +#endif //DAYDREAM_ELIFEBUOY_H diff --git a/include/Game/LevelSystem.h b/include/Game/LevelSystem.h index 0bc1003..6fc6443 100755 --- a/include/Game/LevelSystem.h +++ b/include/Game/LevelSystem.h @@ -22,13 +22,14 @@ #include "Game/EScoreEvent.h" #include "Game/EComboEvent.h" #include "Game/EHitPad.h" +#include "Game/ELifebuoy.h" #include "Game/EMultiBall.h" #include "Game/EMultiBallLost.h" #include "Game/EPause.h" #include "Game/EGameOver.h" #include "Game/ECreatePowerUp.h" #include "Game/EPowerUpTaken.h" -#include "Game/Bricks/CPowerUpBrick.h" +//#include "Game/Bricks/CPowerUpBrick.h" #include "Physics/CPhysics.h" #include "Physics/CCircleShape.h" #include "Physics/CRectangleShape.h" @@ -123,6 +124,7 @@ private: const int EmptyBrickSpace = 0; const int StandardBrick = 1; const int MultiBallBrick = 2; + const int LifebuoyBrick = 3; EntityID m_BrickTemplate; diff --git a/include/Physics/PhysicsSystem.h b/include/Physics/PhysicsSystem.h index b389def..611bbde 100755 --- a/include/Physics/PhysicsSystem.h +++ b/include/Physics/PhysicsSystem.h @@ -104,7 +104,7 @@ namespace dd dd::EventRelay m_EStageCleared; bool OnStageCleared(const dd::Events::StageCleared &event); bool m_Travelling = false; - float m_Timer = 0; + float m_DistanceTravelled = 0; //TODO: Fill struct with info needed. struct ParticleEmitter diff --git a/src/game/Core/Renderer.cpp b/src/game/Core/Renderer.cpp index 6abf221..157eef9 100755 --- a/src/game/Core/Renderer.cpp +++ b/src/game/Core/Renderer.cpp @@ -59,7 +59,7 @@ void dd::Renderer::Initialize() } // Create default camera - m_DefaultCamera = std::unique_ptr(new dd::Camera((float)m_Resolution.Width / m_Resolution.Height, 45.f, 0.01f, 5000.f)); + m_DefaultCamera = std::unique_ptr(new dd::Camera((float)m_Resolution.Width / m_Resolution.Height, /*45.f*/ 45.f, 0.01f, 5000.f)); m_DefaultCamera->SetPosition(glm::vec3(0, 0, 0)); if (m_Camera == nullptr) { m_Camera = m_DefaultCamera.get(); diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index 93f4a72..6d55ca3 100755 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -77,12 +77,17 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID if (brick != nullptr) { auto transform = m_World->GetComponent(entity); //Removes bricks that falls out of the stage. - if (transform->Position.y < -10) { - if (brick->Type == MultiBallBrick) { + if (transform->Position.y < -10) { + if (brick->Type == StandardBrick) { + } else if (brick->Type == MultiBallBrick) { Events::MultiBall e; e.padTransform = transform; EventBroker->Publish(e); - } + } else if (brick->Type == LifebuoyBrick) { + Events::Lifebuoy e; + e.Transform = transform; + EventBroker->Publish(e); + } m_LooseBricks--; m_World->RemoveEntity(entity); } @@ -185,10 +190,11 @@ void dd::Systems::LevelSystem::CreateBrick(int row, int line, glm::vec2 spacesBe 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"; - } + } else if (typeInt == LifebuoyBrick) { + cBrick->Type = LifebuoyBrick; + } float x = line * spacesBetweenBricks.x; float y = row * spacesBetweenBricks.y; transform->Position = glm::vec3(x - 3, 5 - spaceToEdge - y + aboveLevel, -10.f); diff --git a/src/game/Physics/PhysicsSystem.cpp b/src/game/Physics/PhysicsSystem.cpp index 8d409d4..7fe1cee 100755 --- a/src/game/Physics/PhysicsSystem.cpp +++ b/src/game/Physics/PhysicsSystem.cpp @@ -147,11 +147,12 @@ void dd::Systems::PhysicsSystem::Update(double dt) } if (m_Travelling) { - m_Timer += dt; - if (m_Timer >= 2) { - m_Timer = 0; + if (m_DistanceTravelled > 12.f) { + m_DistanceTravelled = 0; m_Travelling = false; } + + m_DistanceTravelled += 6.0f * dt; } m_Accumulator += dt; @@ -209,10 +210,6 @@ void dd::Systems::PhysicsSystem::UpdateEntity(double dt, EntityID entity, Entity return; } transform->Position.y -= 6.0f * dt; - /*auto brick = m_World->GetComponent(entity); - if (brick != nullptr) { - - }*/ } } }