TravellingSystem uses EMove. EMove and ERotate copied from Returngeance into TransportSystem.
This commit is contained in:
@@ -15,7 +15,7 @@ namespace Components
|
|||||||
|
|
||||||
struct Background : Component
|
struct Background : Component
|
||||||
{
|
{
|
||||||
|
float distanceLeftToCorrectTravelPosition;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
//
|
||||||
|
// Created by Adniklastrator on 2015-09-15.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef DAYDREAM_CLIFE_H
|
||||||
|
#define DAYDREAM_CLIFE_H
|
||||||
|
|
||||||
|
#include "Core/Component.h"
|
||||||
|
|
||||||
|
namespace dd
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace Components
|
||||||
|
{
|
||||||
|
|
||||||
|
struct Life : Component {
|
||||||
|
|
||||||
|
int Number = 0;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //DAYDREAM_CLIFE_H
|
||||||
@@ -17,6 +17,8 @@ struct Travels : Component
|
|||||||
{
|
{
|
||||||
//This indicates that the object moves upon moving to the next stage. Place this on an object that is to move.
|
//This indicates that the object moves upon moving to the next stage. Place this on an object that is to move.
|
||||||
//The camera does not move. Things that are to follow the camera should not have this component.
|
//The camera does not move. Things that are to follow the camera should not have this component.
|
||||||
|
|
||||||
|
bool CurrentlyTraveling = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
//
|
||||||
|
// Created by Adniklastrator on 2015-10-15.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef DAYDREAM_KRAKENSYSTEM_H
|
||||||
|
#define DAYDREAM_KRAKENSYSTEM_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "Core/System.h"
|
||||||
|
#include "Core/CTransform.h"
|
||||||
|
#include "Core/CTemplate.h"
|
||||||
|
#include "Core/EventBroker.h"
|
||||||
|
#include "Core/World.h"
|
||||||
|
#include "Game/EPause.h"
|
||||||
|
//#include "Core/Camera.h" Camera Component
|
||||||
|
|
||||||
|
|
||||||
|
namespace dd
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace Systems
|
||||||
|
{
|
||||||
|
|
||||||
|
class KrakenSystem : public System
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
KrakenSystem(World* world, std::shared_ptr<dd::EventBroker> eventBroker)
|
||||||
|
: System(world, eventBroker)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void Initialize() override;
|
||||||
|
void InitializeObjects();
|
||||||
|
|
||||||
|
void UpdateEntity(double dt, EntityID entity, EntityID parent) override;
|
||||||
|
|
||||||
|
bool IsPaused() const { return m_Pause; }
|
||||||
|
void SetPause(const bool& pause) { m_Pause = pause; }
|
||||||
|
private:
|
||||||
|
|
||||||
|
dd::EventRelay<KrakenSystem, dd::Events::Pause> m_EPause;
|
||||||
|
bool OnPause(const dd::Events::Pause &event);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //DAYDREAM_KRAKENSYSTEM_H
|
||||||
@@ -18,6 +18,8 @@
|
|||||||
#include "Rendering/CModel.h"
|
#include "Rendering/CModel.h"
|
||||||
#include "Rendering/CPointLight.h"
|
#include "Rendering/CPointLight.h"
|
||||||
|
|
||||||
|
#include "Transform/EMove.h"
|
||||||
|
|
||||||
#include "Game/CBrick.h"
|
#include "Game/CBrick.h"
|
||||||
#include "Game/CBall.h"
|
#include "Game/CBall.h"
|
||||||
#include "Game/CLife.h"
|
#include "Game/CLife.h"
|
||||||
|
|||||||
@@ -13,15 +13,22 @@
|
|||||||
#include "Core/EventBroker.h"
|
#include "Core/EventBroker.h"
|
||||||
#include "Core/EKeyDown.h"
|
#include "Core/EKeyDown.h"
|
||||||
#include "Core/EKeyUp.h"
|
#include "Core/EKeyUp.h"
|
||||||
|
|
||||||
#include "Input/EBindKey.h"
|
#include "Input/EBindKey.h"
|
||||||
|
|
||||||
#include "Physics/EContact.h"
|
#include "Physics/EContact.h"
|
||||||
#include "Physics/CRectangleShape.h"
|
#include "Physics/CRectangleShape.h"
|
||||||
#include "Physics/CWaterVolume.h"
|
#include "Physics/CWaterVolume.h"
|
||||||
#include "Physics/CPhysics.h"
|
#include "Physics/CPhysics.h"
|
||||||
#include "Physics/CCircleShape.h"
|
#include "Physics/CCircleShape.h"
|
||||||
#include "Physics/ESetImpulse.h"
|
#include "Physics/ESetImpulse.h"
|
||||||
|
|
||||||
#include "Rendering/CSprite.h"
|
#include "Rendering/CSprite.h"
|
||||||
#include "Rendering/CModel.h"
|
#include "Rendering/CModel.h"
|
||||||
|
|
||||||
|
#include "Transform/EMove.h"
|
||||||
|
#include "Transform/ERotate.h"
|
||||||
|
|
||||||
#include "Game/CBall.h"
|
#include "Game/CBall.h"
|
||||||
#include "Game/CPad.h"
|
#include "Game/CPad.h"
|
||||||
#include "Game/CPowerUp.h"
|
#include "Game/CPowerUp.h"
|
||||||
|
|||||||
@@ -8,12 +8,15 @@
|
|||||||
|
|
||||||
#include "Core/System.h"
|
#include "Core/System.h"
|
||||||
#include "Core/CTransform.h"
|
#include "Core/CTransform.h"
|
||||||
|
#include "Core/CTemplate.h"
|
||||||
#include "Core/EventBroker.h"
|
#include "Core/EventBroker.h"
|
||||||
#include "Core/World.h"
|
#include "Core/World.h"
|
||||||
|
#include "Transform/EMove.h"
|
||||||
#include "Game/EPause.h"
|
#include "Game/EPause.h"
|
||||||
#include "Game/EArrivedAtNewStage.h"
|
#include "Game/EArrivedAtNewStage.h"
|
||||||
#include "Game/EStageCleared.h"
|
#include "Game/EStageCleared.h"
|
||||||
#include "Game/CTravels.h"
|
#include "Game/CTravels.h"
|
||||||
|
#include "Game/CBackground.h"
|
||||||
|
|
||||||
|
|
||||||
namespace dd
|
namespace dd
|
||||||
@@ -45,9 +48,11 @@ private:
|
|||||||
|
|
||||||
dd::EventRelay<TravellingSystem, dd::Events::Pause> m_EPause;
|
dd::EventRelay<TravellingSystem, dd::Events::Pause> m_EPause;
|
||||||
dd::EventRelay<TravellingSystem, dd::Events::StageCleared> m_EStageCleared;
|
dd::EventRelay<TravellingSystem, dd::Events::StageCleared> m_EStageCleared;
|
||||||
|
dd::EventRelay<TravellingSystem, dd::Events::ArrivedAtNewStage> m_EArrivedAtNewStage;
|
||||||
|
|
||||||
bool OnPause(const dd::Events::Pause &event);
|
bool OnPause(const dd::Events::Pause &event);
|
||||||
bool OnStageCleared(const dd::Events::StageCleared &event);
|
bool OnStageCleared(const dd::Events::StageCleared &event);
|
||||||
|
bool OnArrivedAtNewStage(const dd::Events::ArrivedAtNewStage &event);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,14 +39,38 @@ public:
|
|||||||
TransformSystem(World* world, std::shared_ptr<dd::EventBroker> eventBroker)
|
TransformSystem(World* world, std::shared_ptr<dd::EventBroker> eventBroker)
|
||||||
: System(world, eventBroker)
|
: System(world, eventBroker)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
void Initialize() override;
|
||||||
void Update(double dt) override;
|
void Update(double dt) override;
|
||||||
|
void UpdateEntity(double dt, EntityID entity, EntityID parent) override;
|
||||||
|
|
||||||
Components::Transform AbsoluteTransform(EntityID entity);
|
Components::Transform AbsoluteTransform(EntityID entity);
|
||||||
glm::vec3 AbsolutePosition(EntityID entity);
|
glm::vec3 AbsolutePosition(EntityID entity);
|
||||||
glm::quat AbsoluteOrientation(EntityID entity);
|
glm::quat AbsoluteOrientation(EntityID entity);
|
||||||
glm::vec3 AbsoluteScale(EntityID entity);
|
glm::vec3 AbsoluteScale(EntityID entity);
|
||||||
|
|
||||||
|
// Events
|
||||||
|
EventRelay<TransformSystem, Events::Move> m_EMove;
|
||||||
|
bool OnMove(const Events::Move &event);
|
||||||
|
EventRelay<TransformSystem, Events::Rotate> m_ERotate;
|
||||||
|
bool OnRotate(const Events::Rotate &event);
|
||||||
private:
|
private:
|
||||||
|
struct MoveItems
|
||||||
|
{
|
||||||
|
EntityID Entity;
|
||||||
|
glm::vec3 GoalPosition;
|
||||||
|
float Speed;
|
||||||
|
};
|
||||||
|
std::unordered_map<EntityID, MoveItems> m_MoveItems;
|
||||||
|
std::multimap<EntityID, MoveItems> m_QueuedMoveItems;
|
||||||
|
struct RotationItems
|
||||||
|
{
|
||||||
|
EntityID Entity;
|
||||||
|
glm::quat GoalRotation;
|
||||||
|
double Time;
|
||||||
|
};
|
||||||
|
std::unordered_map<EntityID, RotationItems> m_RotationItems;
|
||||||
|
std::multimap<EntityID, RotationItems> m_QueuedRotationItems;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ void dd::Systems::BallSystem::UpdateEntity(double dt, EntityID entity, EntityID
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} //Removing this made the wall collisions work again
|
} //Removing this made the wall collisions work again
|
||||||
else if (transformBall->Position.x > EdgeX()) {
|
/* else if (transformBall->Position.x > EdgeX()) {
|
||||||
if (transformBall->Velocity.x > 0) {
|
if (transformBall->Velocity.x > 0) {
|
||||||
glm::vec2 reflectedVelocity = glm::reflect(glm::vec2(transformBall->Velocity.x, transformBall->Velocity.y), glm::vec2(1, 0));
|
glm::vec2 reflectedVelocity = glm::reflect(glm::vec2(transformBall->Velocity.x, transformBall->Velocity.y), glm::vec2(1, 0));
|
||||||
transformBall->Velocity = glm::vec3(reflectedVelocity, 0.f);
|
transformBall->Velocity = glm::vec3(reflectedVelocity, 0.f);
|
||||||
@@ -322,9 +322,6 @@ bool dd::Systems::BallSystem::Contact(const Events::Contact &event)
|
|||||||
EventBroker->Publish(particleEvent);
|
EventBroker->Publish(particleEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ballComponent->Combo = 56;
|
ballComponent->Combo = 56;
|
||||||
if (!ballComponent->Waiting) {
|
if (!ballComponent->Waiting) {
|
||||||
if (m_InkBlaster) {
|
if (m_InkBlaster) {
|
||||||
@@ -342,7 +339,8 @@ bool dd::Systems::BallSystem::Contact(const Events::Contact &event)
|
|||||||
m_Sticky = false;
|
m_Sticky = false;
|
||||||
m_Waiting = true;
|
m_Waiting = true;
|
||||||
ballComponent->Sticky = true;
|
ballComponent->Sticky = true;
|
||||||
ballComponent->StickyPlacement = ballTransform->Position - padTransform->Position;
|
//ballComponent->StickyPlacement = ballTransform->Position - padTransform->Position;
|
||||||
|
ballComponent->StickyPlacement = glm::vec3(0, 0.5f, 0);
|
||||||
ballComponent->SavedSpeed = glm::normalize(glm::vec3(x, y, 0.f)) * ballComponent->Speed;
|
ballComponent->SavedSpeed = glm::normalize(glm::vec3(x, y, 0.f)) * ballComponent->Speed;
|
||||||
ballTransform->Velocity *= -1;
|
ballTransform->Velocity *= -1;
|
||||||
Events::StickyAttachedToPad e;
|
Events::StickyAttachedToPad e;
|
||||||
@@ -485,6 +483,7 @@ bool dd::Systems::BallSystem::OnMultiBall(const dd::Events::MultiBall &event)
|
|||||||
bool dd::Systems::BallSystem::OnStickyPad(const dd::Events::StickyPad &event)
|
bool dd::Systems::BallSystem::OnStickyPad(const dd::Events::StickyPad &event)
|
||||||
{
|
{
|
||||||
m_Sticky = true;
|
m_Sticky = true;
|
||||||
|
m_StickyCounter = event.Times;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
//
|
||||||
|
// Created by Adniklastrator on 2015-10-15.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "PrecompiledHeader.h"
|
||||||
|
#include "Game/KrakenSystem.h"
|
||||||
|
|
||||||
|
void dd::Systems::KrakenSystem::Initialize()
|
||||||
|
{
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_EPause, &KrakenSystem::OnPause);
|
||||||
|
|
||||||
|
InitializeObjects();
|
||||||
|
}
|
||||||
|
|
||||||
|
void dd::Systems::KrakenSystem::InitializeObjects()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
|
||||||
|
{
|
||||||
|
if (IsPaused()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::KrakenSystem::OnPause(const dd::Events::Pause &event)
|
||||||
|
{
|
||||||
|
if (IsPaused()) {
|
||||||
|
SetPause(false);
|
||||||
|
} else {
|
||||||
|
SetPause(true);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -53,6 +53,7 @@ void dd::Systems::LevelSystem::Initialize()
|
|||||||
transform->Position = glm::vec3(0.f, 0.f, -15.f);
|
transform->Position = glm::vec3(0.f, 0.f, -15.f);
|
||||||
transform->Scale = glm::vec3(6.f, 6.f, 10.f);
|
transform->Scale = glm::vec3(6.f, 6.f, 10.f);
|
||||||
auto travels = m_World->AddComponent<Components::Travels>(t_halfPipe);
|
auto travels = m_World->AddComponent<Components::Travels>(t_halfPipe);
|
||||||
|
travels->CurrentlyTraveling = false;
|
||||||
auto model = m_World->AddComponent<Components::Model>(t_halfPipe);
|
auto model = m_World->AddComponent<Components::Model>(t_halfPipe);
|
||||||
model->ModelFile = "Models/Test/halfpipe/Halfpipe.obj";
|
model->ModelFile = "Models/Test/halfpipe/Halfpipe.obj";
|
||||||
model->Color = glm::vec4(0.8f, 0.8f, 0.8f, 0.3f);
|
model->Color = glm::vec4(0.8f, 0.8f, 0.8f, 0.3f);
|
||||||
@@ -60,22 +61,23 @@ void dd::Systems::LevelSystem::Initialize()
|
|||||||
|
|
||||||
auto t_halfPipe2 = m_World->CloneEntity(t_halfPipe);
|
auto t_halfPipe2 = m_World->CloneEntity(t_halfPipe);
|
||||||
auto transform2 = m_World->GetComponent<Components::Transform>(t_halfPipe);
|
auto transform2 = m_World->GetComponent<Components::Transform>(t_halfPipe);
|
||||||
transform2->Position = glm::vec3(0.f, 34.6f, -15.f);
|
transform2->Position = glm::vec3(0.f, 34.6f, -15.f); //Halfpipe Value
|
||||||
}
|
}
|
||||||
|
|
||||||
//Background
|
//Background
|
||||||
|
|
||||||
{
|
/*{
|
||||||
auto background = m_World->CreateEntity();
|
auto background = m_World->CreateEntity();
|
||||||
auto transform = m_World->AddComponent<Components::Transform>(background);
|
auto transform = m_World->AddComponent<Components::Transform>(background);
|
||||||
auto travels = m_World->AddComponent<Components::Travels>(background);
|
auto travels = m_World->AddComponent<Components::Travels>(background);
|
||||||
|
travels->CurrentlyTraveling = false;
|
||||||
auto backgroundComponent = m_World->AddComponent<Components::Background>(background);
|
auto backgroundComponent = m_World->AddComponent<Components::Background>(background);
|
||||||
transform->Position = glm::vec3(0.f, 0.f, -30.f);
|
transform->Position = glm::vec3(0.f, 0.f, -30.f);
|
||||||
transform->Scale = glm::vec3(2681.f / 50.f, 1080.f / 50.f, 1.f);
|
transform->Scale = glm::vec3(2681.f / 50.f, 1080.f / 50.f, 1.f);
|
||||||
auto sprite = m_World->AddComponent<Components::Sprite>(background);
|
auto sprite = m_World->AddComponent<Components::Sprite>(background);
|
||||||
sprite->SpriteFile = "Textures/Background.png";
|
sprite->SpriteFile = "Textures/Background.png";
|
||||||
m_World->CommitEntity(background);
|
m_World->CommitEntity(background);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// auto particleEmitter= m_World->AddComponent<Components::Emitter>(Pe);
|
// auto particleEmitter= m_World->AddComponent<Components::Emitter>(Pe);
|
||||||
//Water test
|
//Water test
|
||||||
@@ -184,7 +186,7 @@ void dd::Systems::LevelSystem::Initialize()
|
|||||||
std::shared_ptr<Components::Physics> physics = m_World->AddComponent<Components::Physics>(leftWall);
|
std::shared_ptr<Components::Physics> physics = m_World->AddComponent<Components::Physics>(leftWall);
|
||||||
physics->CollisionType = CollisionType::Type::Static;
|
physics->CollisionType = CollisionType::Type::Static;
|
||||||
physics->Category = CollisionLayer::Wall;
|
physics->Category = CollisionLayer::Wall;
|
||||||
physics->Mask = static_cast<CollisionLayer::Type>(/*CollisionLayer::Ball |*/ CollisionLayer::Brick);
|
physics->Mask = static_cast<CollisionLayer::Type>(CollisionLayer::Ball | CollisionLayer::Brick);
|
||||||
|
|
||||||
m_World->CommitEntity(leftWall);
|
m_World->CommitEntity(leftWall);
|
||||||
}
|
}
|
||||||
@@ -207,7 +209,7 @@ void dd::Systems::LevelSystem::Initialize()
|
|||||||
std::shared_ptr<Components::Physics> physics = m_World->AddComponent<Components::Physics>(rightWall);
|
std::shared_ptr<Components::Physics> physics = m_World->AddComponent<Components::Physics>(rightWall);
|
||||||
physics->CollisionType = CollisionType::Type::Static;
|
physics->CollisionType = CollisionType::Type::Static;
|
||||||
physics->Category = CollisionLayer::Wall;
|
physics->Category = CollisionLayer::Wall;
|
||||||
physics->Mask = static_cast<CollisionLayer::Type>(/*CollisionLayer::Ball |*/ CollisionLayer::Brick);
|
physics->Mask = static_cast<CollisionLayer::Type>(CollisionLayer::Ball | CollisionLayer::Brick);
|
||||||
|
|
||||||
m_World->CommitEntity(rightWall);
|
m_World->CommitEntity(rightWall);
|
||||||
}
|
}
|
||||||
@@ -222,6 +224,7 @@ void dd::Systems::LevelSystem::Initialize()
|
|||||||
std::shared_ptr<Components::Template> cTemplate = m_World->AddComponent<Components::Template>(m_BrickTemplate);
|
std::shared_ptr<Components::Template> cTemplate = m_World->AddComponent<Components::Template>(m_BrickTemplate);
|
||||||
|
|
||||||
auto travels = m_World->AddComponent<Components::Travels>(m_BrickTemplate);
|
auto travels = m_World->AddComponent<Components::Travels>(m_BrickTemplate);
|
||||||
|
travels->CurrentlyTraveling = false;
|
||||||
|
|
||||||
cPhys->CollisionType = CollisionType::Type::Static;
|
cPhys->CollisionType = CollisionType::Type::Static;
|
||||||
cPhys->GravityScale = 0.f;
|
cPhys->GravityScale = 0.f;
|
||||||
@@ -255,15 +258,19 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID
|
|||||||
if (templateCheck != nullptr){ return; }
|
if (templateCheck != nullptr){ return; }
|
||||||
|
|
||||||
// Check the background.
|
// Check the background.
|
||||||
auto model = m_World->GetComponent<Components::Model>(entity);
|
auto background = m_World->GetComponent<Components::Background>(entity);
|
||||||
if (model != nullptr) {
|
if (background != nullptr) {
|
||||||
if (model->ModelFile == "Models/Test/halfpipe/Halfpipe.obj") {
|
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
||||||
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
if (transform->Position.y <= -34.6) { //Halfpipe Value.
|
||||||
if (transform->Position.y <= -34.6) {
|
transform->Position.y = 34.6;
|
||||||
transform->Position.y = 34.6;
|
Events::Move e;
|
||||||
}
|
e.Entity = entity;
|
||||||
}
|
e.GoalPosition = glm::vec3(transform->Position.x, 34.6 + background->distanceLeftToCorrectTravelPosition, transform->Position.z);
|
||||||
}
|
e.Speed = 6.0f;
|
||||||
|
e.Queue = false;
|
||||||
|
EventBroker->Publish(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
auto brick = m_World->GetComponent<Components::Brick>(entity);
|
auto brick = m_World->GetComponent<Components::Brick>(entity);
|
||||||
if (brick != nullptr) {
|
if (brick != nullptr) {
|
||||||
@@ -281,9 +288,11 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID
|
|||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
} else if (brick->Type == StickyBrick) {
|
} else if (brick->Type == StickyBrick) {
|
||||||
Events::StickyPad e;
|
Events::StickyPad e;
|
||||||
|
e.Times = 3;
|
||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
} else if (brick->Type == InkBlasterBrick) {
|
} else if (brick->Type == InkBlasterBrick) {
|
||||||
Events::InkBlaster e;
|
Events::InkBlaster e;
|
||||||
|
e.Shots = 5;
|
||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
} else if(brick->Type == KrakenAttackBrick) {
|
} else if(brick->Type == KrakenAttackBrick) {
|
||||||
Events::KrakenAttack e;
|
Events::KrakenAttack e;
|
||||||
@@ -664,7 +673,7 @@ bool dd::Systems::LevelSystem::OnStageCleared(const dd::Events::StageCleared &ev
|
|||||||
m_CurrentLevel++;
|
m_CurrentLevel++;
|
||||||
if (m_CurrentLevel < 6) {
|
if (m_CurrentLevel < 6) {
|
||||||
GetNextLevel();
|
GetNextLevel();
|
||||||
CreateLevel(12);
|
CreateLevel(12); //NextLevelDistance
|
||||||
} else {
|
} else {
|
||||||
// Win
|
// Win
|
||||||
Events::ClusterClear e;
|
Events::ClusterClear e;
|
||||||
|
|||||||
@@ -240,9 +240,11 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) {
|
|||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
} else if (val == GLFW_KEY_Y) {
|
} else if (val == GLFW_KEY_Y) {
|
||||||
Events::StickyPad e;
|
Events::StickyPad e;
|
||||||
|
e.Times = 3;
|
||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
} else if (val == GLFW_KEY_I) {
|
} else if (val == GLFW_KEY_I) {
|
||||||
Events::InkBlaster e;
|
Events::InkBlaster e;
|
||||||
|
e.Shots = 5;
|
||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
} else if (val == GLFW_KEY_K) {
|
} else if (val == GLFW_KEY_K) {
|
||||||
Events::KrakenAttack e;
|
Events::KrakenAttack e;
|
||||||
@@ -250,6 +252,13 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) {
|
|||||||
e.KrakenStrength = 0.1;
|
e.KrakenStrength = 0.1;
|
||||||
e.PlayerStrength = 0.05;
|
e.PlayerStrength = 0.05;
|
||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
|
} else if (val == GLFW_KEY_Q) {
|
||||||
|
Events::Move e;
|
||||||
|
e.Entity = Entity();
|
||||||
|
e.GoalPosition = glm::vec3(0, 0, -10);
|
||||||
|
e.Speed = 5;
|
||||||
|
e.Queue = false;
|
||||||
|
EventBroker->Publish(e);
|
||||||
} else if (val == GLFW_KEY_SPACE) {
|
} else if (val == GLFW_KEY_SPACE) {
|
||||||
Events::ActionButton e;
|
Events::ActionButton e;
|
||||||
e.Position = Transform()->Position;
|
e.Position = Transform()->Position;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ void dd::Systems::TravellingSystem::Update(double dt)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (m_Travelling) {
|
if (m_Travelling) {
|
||||||
if (m_DistanceTravelled > 12.f) {
|
if (m_DistanceTravelled > 12.f) { //NextLevelDistance
|
||||||
m_DistanceTravelled = 0;
|
m_DistanceTravelled = 0;
|
||||||
m_Travelling = false;
|
m_Travelling = false;
|
||||||
Events::ArrivedAtNewStage e;
|
Events::ArrivedAtNewStage e;
|
||||||
@@ -30,14 +30,47 @@ void dd::Systems::TravellingSystem::Update(double dt)
|
|||||||
|
|
||||||
void dd::Systems::TravellingSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
|
void dd::Systems::TravellingSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
|
||||||
{
|
{
|
||||||
|
auto templateCheck = m_World->GetComponent<Components::Template>(entity);
|
||||||
|
if (templateCheck != nullptr){ return; }
|
||||||
|
|
||||||
if (m_Travelling) {
|
if (m_Travelling) {
|
||||||
auto travels = m_World->GetComponent<Components::Travels>(entity);
|
auto travels = m_World->GetComponent<Components::Travels>(entity);
|
||||||
if (travels != nullptr) {
|
if (travels != nullptr) {
|
||||||
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
if (!travels->CurrentlyTraveling) {
|
||||||
if (transform != nullptr) {
|
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
||||||
transform->Position.y -= 6.0f * dt;
|
if (transform != nullptr) {
|
||||||
|
Events::Move e;
|
||||||
|
e.Entity = entity;
|
||||||
|
glm::vec3 position = transform->Position;
|
||||||
|
glm::vec3 goalPosition = position;
|
||||||
|
e.Queue = false;
|
||||||
|
e.Speed = 6;
|
||||||
|
goalPosition.y -= 12; //NextLevelDistance
|
||||||
|
if (goalPosition.y < -34.6) { //Halfpipe Value
|
||||||
|
auto background = m_World->GetComponent<Components::Background>(entity);
|
||||||
|
if (background != nullptr) {
|
||||||
|
float yValue = position.y; // A negative value between -34.6 and -22.6;
|
||||||
|
yValue += 22.6; // A positive value between -12 and 0. The distance it should travel from 34.6;
|
||||||
|
background->distanceLeftToCorrectTravelPosition = yValue;
|
||||||
|
std::cout << "This happened." << std::endl;
|
||||||
|
} else {
|
||||||
|
m_World->RemoveEntity(entity);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
e.GoalPosition = goalPosition;
|
||||||
|
|
||||||
|
travels->CurrentlyTraveling = true;
|
||||||
|
EventBroker->Publish(e);
|
||||||
|
//transform->Position.y -= 6.0f * dt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
auto travels = m_World->GetComponent<Components::Travels>(entity);
|
||||||
|
if (travels != nullptr) {
|
||||||
|
travels->CurrentlyTraveling = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,5 +93,11 @@ bool dd::Systems::TravellingSystem::OnStageCleared(const dd::Events::StageCleare
|
|||||||
if (event.ClearedStage < 5) {
|
if (event.ClearedStage < 5) {
|
||||||
m_Travelling = true;
|
m_Travelling = true;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::TravellingSystem::OnArrivedAtNewStage(const dd::Events::ArrivedAtNewStage &event)
|
||||||
|
{
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -20,12 +20,125 @@
|
|||||||
#include "Transform/TransformSystem.h"
|
#include "Transform/TransformSystem.h"
|
||||||
#include "Core/World.h"
|
#include "Core/World.h"
|
||||||
|
|
||||||
|
void dd::Systems::TransformSystem::Initialize()
|
||||||
|
{
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_EMove, &Systems::TransformSystem::OnMove);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_ERotate, &Systems::TransformSystem::OnRotate);
|
||||||
|
}
|
||||||
|
|
||||||
void dd::Systems::TransformSystem::Update(double dt)
|
void dd::Systems::TransformSystem::Update(double dt)
|
||||||
{
|
{
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dd::Systems::TransformSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
|
||||||
|
{
|
||||||
|
if (m_MoveItems.find(entity) != m_MoveItems.end())
|
||||||
|
{
|
||||||
|
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
||||||
|
|
||||||
|
glm::vec3 direction = glm::normalize(m_MoveItems[entity].GoalPosition - transform->Position);
|
||||||
|
glm::vec3 movement = direction * m_MoveItems[entity].Speed * (float)dt;
|
||||||
|
|
||||||
|
glm::vec3 v1 = m_MoveItems[entity].GoalPosition - transform->Position;
|
||||||
|
glm::vec3 v2 = movement;
|
||||||
|
|
||||||
|
if (glm::length(v2) >= glm::length(v1))
|
||||||
|
{
|
||||||
|
transform->Position = m_MoveItems[entity].GoalPosition;
|
||||||
|
//transform->Velocity = glm::vec3(0, 0, 0);
|
||||||
|
|
||||||
|
m_MoveItems.erase(entity);
|
||||||
|
|
||||||
|
if (m_QueuedMoveItems.find(entity) != m_QueuedMoveItems.end())
|
||||||
|
{
|
||||||
|
auto it = m_QueuedMoveItems.find(entity);
|
||||||
|
m_MoveItems[entity] = it->second;
|
||||||
|
m_QueuedMoveItems.erase(it->first);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
transform->Position += movement;
|
||||||
|
//transform->Velocity = movement;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_RotationItems.find(entity) != m_RotationItems.end())
|
||||||
|
{
|
||||||
|
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
||||||
|
auto absolutetransform = AbsoluteTransform(entity);
|
||||||
|
|
||||||
|
float percentage = dt / m_RotationItems[entity].Time;
|
||||||
|
m_RotationItems[entity].Time -= dt;
|
||||||
|
glm::clamp(percentage, 0.f, 1.0f);
|
||||||
|
transform->Orientation = glm::slerp(transform->Orientation, m_RotationItems[entity].GoalRotation, percentage);
|
||||||
|
|
||||||
|
if (m_RotationItems[entity].Time <= 0)
|
||||||
|
{
|
||||||
|
m_RotationItems.erase(entity);
|
||||||
|
|
||||||
|
if (m_QueuedRotationItems.find(entity) != m_QueuedRotationItems.end())
|
||||||
|
{
|
||||||
|
auto it = m_QueuedRotationItems.find(entity);
|
||||||
|
m_RotationItems[entity] = it->second;
|
||||||
|
m_QueuedRotationItems.erase(it->first);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::TransformSystem::OnRotate(const Events::Rotate &event)
|
||||||
|
{
|
||||||
|
RotationItems item;
|
||||||
|
item.Entity = event.Entity;
|
||||||
|
item.GoalRotation = event.GoalRotation;
|
||||||
|
item.Time = event.Time;
|
||||||
|
|
||||||
|
if (event.Queue)
|
||||||
|
{
|
||||||
|
if (m_RotationItems.find(event.Entity) != m_RotationItems.end())
|
||||||
|
{
|
||||||
|
m_QueuedRotationItems.insert(std::make_pair(event.Entity, item));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_RotationItems[event.Entity] = item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_RotationItems[event.Entity] = item;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::TransformSystem::OnMove(const Events::Move &event)
|
||||||
|
{
|
||||||
|
MoveItems item;
|
||||||
|
item.Entity = event.Entity;
|
||||||
|
item.GoalPosition = event.GoalPosition;
|
||||||
|
item.Speed = event.Speed;
|
||||||
|
|
||||||
|
if (event.Queue)
|
||||||
|
{
|
||||||
|
if (m_MoveItems.find(event.Entity) != m_MoveItems.end())
|
||||||
|
{
|
||||||
|
m_QueuedMoveItems.insert(std::make_pair(event.Entity, item));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_MoveItems[event.Entity] = item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_MoveItems[event.Entity] = item;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
glm::vec3 dd::Systems::TransformSystem::AbsolutePosition(EntityID entity)
|
glm::vec3 dd::Systems::TransformSystem::AbsolutePosition(EntityID entity)
|
||||||
{
|
{
|
||||||
glm::vec3 absPosition;
|
glm::vec3 absPosition;
|
||||||
|
|||||||
Reference in New Issue
Block a user