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) { - - }*/ } } }