Kraken shows up on last stage. Created WaterSystem for possible future use.
This commit is contained in:
@@ -59,6 +59,7 @@
|
|||||||
#include "Game/LifebuoySystem.h"
|
#include "Game/LifebuoySystem.h"
|
||||||
#include "Game/ProjectileSystem.h"
|
#include "Game/ProjectileSystem.h"
|
||||||
#include "Game/KrakenSystem.h"
|
#include "Game/KrakenSystem.h"
|
||||||
|
#include "Game/WaterSystem.h"
|
||||||
#include "Game/Bricks/CPowerUpBrick.h"
|
#include "Game/Bricks/CPowerUpBrick.h"
|
||||||
|
|
||||||
#include "Game/BrickComponents.h"
|
#include "Game/BrickComponents.h"
|
||||||
@@ -164,7 +165,7 @@ public:
|
|||||||
m_World->ComponentFactory.Register<Components::KrakenAttackBrick>();
|
m_World->ComponentFactory.Register<Components::KrakenAttackBrick>();
|
||||||
|
|
||||||
m_World->SystemFactory.Register<Systems::LevelSystem>(
|
m_World->SystemFactory.Register<Systems::LevelSystem>(
|
||||||
[this]() { return new Systems::LevelSystem(m_World.get(), m_EventBroker); });
|
[this]() { return new Systems::LevelSystem(m_World.get(), m_EventBroker); });
|
||||||
m_World->AddSystem<Systems::LevelSystem>();
|
m_World->AddSystem<Systems::LevelSystem>();
|
||||||
m_World->SystemFactory.Register<Systems::PadSystem>(
|
m_World->SystemFactory.Register<Systems::PadSystem>(
|
||||||
[this]() { return new Systems::PadSystem(m_World.get(), m_EventBroker); });
|
[this]() { return new Systems::PadSystem(m_World.get(), m_EventBroker); });
|
||||||
@@ -193,6 +194,9 @@ public:
|
|||||||
m_World->SystemFactory.Register<Systems::KrakenSystem>(
|
m_World->SystemFactory.Register<Systems::KrakenSystem>(
|
||||||
[this]() { return new Systems::KrakenSystem(m_World.get(), m_EventBroker); });
|
[this]() { return new Systems::KrakenSystem(m_World.get(), m_EventBroker); });
|
||||||
m_World->AddSystem<Systems::KrakenSystem>();
|
m_World->AddSystem<Systems::KrakenSystem>();
|
||||||
|
m_World->SystemFactory.Register<Systems::WaterSystem>(
|
||||||
|
[this]() { return new Systems::WaterSystem(m_World.get(), m_EventBroker); });
|
||||||
|
m_World->AddSystem<Systems::WaterSystem>();
|
||||||
|
|
||||||
m_World->ComponentFactory.Register<Components::Model>();
|
m_World->ComponentFactory.Register<Components::Model>();
|
||||||
m_World->ComponentFactory.Register<Components::Template>();
|
m_World->ComponentFactory.Register<Components::Template>();
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace Components
|
|||||||
|
|
||||||
struct Projectile : Component
|
struct Projectile : Component
|
||||||
{
|
{
|
||||||
|
float Speed = 5;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace Events
|
|||||||
|
|
||||||
struct ClusterClear : Event
|
struct ClusterClear : Event
|
||||||
{
|
{
|
||||||
|
int ClusterCleared;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ struct InkBlaster : Event
|
|||||||
{
|
{
|
||||||
Components::Transform* Transform;
|
Components::Transform* Transform;
|
||||||
int Shots;
|
int Shots;
|
||||||
|
float Speed = 5;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
//
|
||||||
|
// Created by Adniklastrator on 2015-10-19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef DAYDREAM_EKRAKENDEFEATED_H
|
||||||
|
#define DAYDREAM_EKRAKENDEFEATED_H
|
||||||
|
|
||||||
|
#include "Core/EventBroker.h"
|
||||||
|
|
||||||
|
namespace dd
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace Events
|
||||||
|
{
|
||||||
|
|
||||||
|
struct KrakenDefeated : Event
|
||||||
|
{
|
||||||
|
EntityID Kraken;
|
||||||
|
EntityID Hitter;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //DAYDREAM_EKRAKENDEFEATED_H
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
//
|
||||||
|
// Created by Adniklastrator on 2015-10-19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef DAYDREAM_EKRAKENHIT_H
|
||||||
|
#define DAYDREAM_EKRAKENHIT_H
|
||||||
|
|
||||||
|
#include "Core/EventBroker.h"
|
||||||
|
|
||||||
|
namespace dd
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace Events
|
||||||
|
{
|
||||||
|
|
||||||
|
struct KrakenHit : Event
|
||||||
|
{
|
||||||
|
EntityID Kraken;
|
||||||
|
EntityID Hitter;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //DAYDREAM_EKRAKENHIT_H
|
||||||
@@ -16,6 +16,7 @@ namespace Events
|
|||||||
struct RaiseWater : Event
|
struct RaiseWater : Event
|
||||||
{
|
{
|
||||||
float Amount;
|
float Amount;
|
||||||
|
float Speed;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
//
|
||||||
|
// Created by Administrator on 2015-10-20.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef DAYDREAM_ERAISEWATERWALL_H
|
||||||
|
#define DAYDREAM_ERAISEWATERWALL_H
|
||||||
|
|
||||||
|
#include "Core/EventBroker.h"
|
||||||
|
|
||||||
|
namespace dd
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace Events
|
||||||
|
{
|
||||||
|
|
||||||
|
struct RaiseWaterWall : Event
|
||||||
|
{
|
||||||
|
float Amount;
|
||||||
|
float Speed;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //DAYDREAM_ERAISEWATERWALL_H
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//
|
||||||
|
// Created by Administrator on 2015-10-20.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef DAYDREAM_ERELEVANTOBJECTCREATED_H
|
||||||
|
#define DAYDREAM_ERELEVANTOBJECTCREATED_H
|
||||||
|
|
||||||
|
#include "Core/EventBroker.h"
|
||||||
|
#include "Core/Entity.h"
|
||||||
|
|
||||||
|
namespace dd
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace Events
|
||||||
|
{
|
||||||
|
|
||||||
|
struct RelevantObjectCreated : Event
|
||||||
|
{
|
||||||
|
std::string ObjectName;
|
||||||
|
EntityID ObjectID;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //DAYDREAM_ERELEVANTOBJECTCREATED_H
|
||||||
@@ -17,6 +17,7 @@ struct StageCleared : Event
|
|||||||
{
|
{
|
||||||
int ClearedStage = 0;
|
int ClearedStage = 0;
|
||||||
int StageCluster = 0;
|
int StageCluster = 0;
|
||||||
|
int StagesInCluster = 6;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
//
|
||||||
|
// Created by Administrator on 2015-10-19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef DAYDREAM_ESTARTEDNEWLEVEL_H
|
||||||
|
#define DAYDREAM_ESTARTEDNEWLEVEL_H
|
||||||
|
|
||||||
|
#include "Core/EventBroker.h"
|
||||||
|
#include "Core/Entity.h"
|
||||||
|
|
||||||
|
namespace dd
|
||||||
|
{
|
||||||
|
namespace Events
|
||||||
|
{
|
||||||
|
struct StartedNewLevel : Event
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //DAYDREAM_ESTARTEDNEWLEVEL_H
|
||||||
@@ -17,13 +17,18 @@
|
|||||||
#include "Physics/CCircleShape.h"
|
#include "Physics/CCircleShape.h"
|
||||||
#include "Physics/CPhysics.h"
|
#include "Physics/CPhysics.h"
|
||||||
#include "Physics/EContact.h"
|
#include "Physics/EContact.h"
|
||||||
|
#include "Physics/ESetImpulse.h"
|
||||||
|
#include "Physics/ECreateParticleSequence.h"
|
||||||
#include "Game/EPause.h"
|
#include "Game/EPause.h"
|
||||||
#include "Game/EResume.h"
|
#include "Game/EResume.h"
|
||||||
#include "Game/EKrakenAppear.h"
|
#include "Game/EKrakenAppear.h"
|
||||||
#include "Game/EKrakenAttack.h"
|
#include "Game/EKrakenAttack.h"
|
||||||
|
#include "Game/EKrakenHit.h"
|
||||||
|
#include "Game/EKrakenDefeated.h"
|
||||||
#include "Game/EBrickGenerating.h"
|
#include "Game/EBrickGenerating.h"
|
||||||
#include "Game/CTravels.h"
|
#include "Game/CTravels.h"
|
||||||
#include "Game/CKraken.h"
|
#include "Game/CKraken.h"
|
||||||
|
#include "Game/CBall.h"
|
||||||
#include "Sound/CCollisionSound.h"
|
#include "Sound/CCollisionSound.h"
|
||||||
//#include "Core/Camera.h" Camera Component
|
//#include "Core/Camera.h" Camera Component
|
||||||
|
|
||||||
@@ -69,12 +74,16 @@ private:
|
|||||||
dd::EventRelay<KrakenSystem, dd::Events::Contact> m_EContact;
|
dd::EventRelay<KrakenSystem, dd::Events::Contact> m_EContact;
|
||||||
dd::EventRelay<KrakenSystem, dd::Events::KrakenAppear> m_EKrakenAppear;
|
dd::EventRelay<KrakenSystem, dd::Events::KrakenAppear> m_EKrakenAppear;
|
||||||
dd::EventRelay<KrakenSystem, dd::Events::KrakenAttack> m_EKrakenAttack;
|
dd::EventRelay<KrakenSystem, dd::Events::KrakenAttack> m_EKrakenAttack;
|
||||||
|
dd::EventRelay<KrakenSystem, dd::Events::KrakenHit> m_EKrakenHit;
|
||||||
|
dd::EventRelay<KrakenSystem, dd::Events::KrakenDefeated> m_EKrakenDefeated;
|
||||||
dd::EventRelay<KrakenSystem, dd::Events::BrickGenerating> m_EBrickGenerating;
|
dd::EventRelay<KrakenSystem, dd::Events::BrickGenerating> m_EBrickGenerating;
|
||||||
bool OnPause(const dd::Events::Pause &event);
|
bool OnPause(const dd::Events::Pause &event);
|
||||||
bool OnResume(const dd::Events::Resume &event);
|
bool OnResume(const dd::Events::Resume &event);
|
||||||
bool OnContact(const dd::Events::Contact &event);
|
bool OnContact(const dd::Events::Contact &event);
|
||||||
bool OnKrakenAppear(const dd::Events::KrakenAppear &event);
|
bool OnKrakenAppear(const dd::Events::KrakenAppear &event);
|
||||||
bool OnKrakenAttack(const dd::Events::KrakenAttack &event);
|
bool OnKrakenAttack(const dd::Events::KrakenAttack &event);
|
||||||
|
bool OnKrakenHit(const dd::Events::KrakenHit &event);
|
||||||
|
bool OnKrakenDefeated(const dd::Events::KrakenDefeated &event);
|
||||||
bool OnBrickGenerating(const dd::Events::BrickGenerating &event);
|
bool OnBrickGenerating(const dd::Events::BrickGenerating &event);
|
||||||
void GetBrickSet();
|
void GetBrickSet();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -31,7 +31,9 @@
|
|||||||
|
|
||||||
#include "Game/BrickComponents.h"
|
#include "Game/BrickComponents.h"
|
||||||
|
|
||||||
|
#include "Game/ERelevantObjectCreated.h"
|
||||||
#include "Game/EStageCleared.h"
|
#include "Game/EStageCleared.h"
|
||||||
|
#include "Game/EArrivedAtNewStage.h"
|
||||||
#include "Game/ELifeLost.h"
|
#include "Game/ELifeLost.h"
|
||||||
#include "Game/EResetBall.h"
|
#include "Game/EResetBall.h"
|
||||||
#include "Game/EScoreEvent.h"
|
#include "Game/EScoreEvent.h"
|
||||||
@@ -50,7 +52,9 @@
|
|||||||
#include "Game/ECreatePowerUp.h"
|
#include "Game/ECreatePowerUp.h"
|
||||||
#include "Game/EPowerUpTaken.h"
|
#include "Game/EPowerUpTaken.h"
|
||||||
|
|
||||||
|
#include "Game/CKraken.h"
|
||||||
#include "Game/EKrakenAppear.h"
|
#include "Game/EKrakenAppear.h"
|
||||||
|
#include "Game/EKrakenDefeated.h"
|
||||||
#include "Game/EBrickGenerating.h"
|
#include "Game/EBrickGenerating.h"
|
||||||
|
|
||||||
#include "Physics/CPhysics.h"
|
#include "Physics/CPhysics.h"
|
||||||
@@ -145,6 +149,7 @@ private:
|
|||||||
int m_NumberOfBricks;
|
int m_NumberOfBricks;
|
||||||
int m_Rows = 6;
|
int m_Rows = 6;
|
||||||
int m_Lines = 7;
|
int m_Lines = 7;
|
||||||
|
int m_StagesInCluster = 6;
|
||||||
float m_SpaceToEdge = 0.25f;
|
float m_SpaceToEdge = 0.25f;
|
||||||
glm::vec2 m_SpaceBetweenBricks = glm::vec2(1, 0.4);
|
glm::vec2 m_SpaceBetweenBricks = glm::vec2(1, 0.4);
|
||||||
float m_NotResettingTheStage = 5.f;
|
float m_NotResettingTheStage = 5.f;
|
||||||
@@ -174,10 +179,12 @@ private:
|
|||||||
dd::EventRelay<LevelSystem, dd::Events::CreatePowerUp> m_ECreatePowerUp;
|
dd::EventRelay<LevelSystem, dd::Events::CreatePowerUp> m_ECreatePowerUp;
|
||||||
dd::EventRelay<LevelSystem, dd::Events::PowerUpTaken> m_EPowerUpTaken;
|
dd::EventRelay<LevelSystem, dd::Events::PowerUpTaken> m_EPowerUpTaken;
|
||||||
dd::EventRelay<LevelSystem, dd::Events::StageCleared> m_EStageCleared;
|
dd::EventRelay<LevelSystem, dd::Events::StageCleared> m_EStageCleared;
|
||||||
|
dd::EventRelay<LevelSystem, dd::Events::ArrivedAtNewStage> m_EArrivedAtNewStage;
|
||||||
dd::EventRelay<LevelSystem, dd::Events::Pause> m_EPause;
|
dd::EventRelay<LevelSystem, dd::Events::Pause> m_EPause;
|
||||||
dd::EventRelay<LevelSystem, dd::Events::Resume> m_EResume;
|
dd::EventRelay<LevelSystem, dd::Events::Resume> m_EResume;
|
||||||
dd::EventRelay<LevelSystem, dd::Events::HitPad> m_EHitPad;
|
dd::EventRelay<LevelSystem, dd::Events::HitPad> m_EHitPad;
|
||||||
dd::EventRelay<LevelSystem, dd::Events::BrickGenerating> m_EBrickGenerating;
|
dd::EventRelay<LevelSystem, dd::Events::BrickGenerating> m_EBrickGenerating;
|
||||||
|
dd::EventRelay<LevelSystem, dd::Events::KrakenDefeated> m_EKrakenDefeated;
|
||||||
|
|
||||||
bool OnContact(const dd::Events::Contact &event);
|
bool OnContact(const dd::Events::Contact &event);
|
||||||
bool OnScoreEvent(const dd::Events::ScoreEvent &event);
|
bool OnScoreEvent(const dd::Events::ScoreEvent &event);
|
||||||
@@ -186,11 +193,13 @@ private:
|
|||||||
bool OnCreatePowerUp(const dd::Events::CreatePowerUp &event);
|
bool OnCreatePowerUp(const dd::Events::CreatePowerUp &event);
|
||||||
bool OnPowerUpTaken(const dd::Events::PowerUpTaken &event);
|
bool OnPowerUpTaken(const dd::Events::PowerUpTaken &event);
|
||||||
bool OnStageCleared(const dd::Events::StageCleared &event);
|
bool OnStageCleared(const dd::Events::StageCleared &event);
|
||||||
|
bool OnArrivedAtNewStage(const dd::Events::ArrivedAtNewStage &event);
|
||||||
bool OnPause(const dd::Events::Pause &event);
|
bool OnPause(const dd::Events::Pause &event);
|
||||||
bool OnResume(const dd::Events::Resume &event);
|
bool OnResume(const dd::Events::Resume &event);
|
||||||
bool OnHitPad(const dd::Events::HitPad &event);
|
bool OnHitPad(const dd::Events::HitPad &event);
|
||||||
bool OnBrickGenerating(const dd::Events::BrickGenerating &event);
|
bool OnBrickGenerating(const dd::Events::BrickGenerating &event);
|
||||||
void GetBrickSet(int Set);
|
void GetBrickSet(int Set);
|
||||||
|
bool OnKrakenDefeated(const dd::Events::KrakenDefeated &event);
|
||||||
|
|
||||||
void GetNextLevel();
|
void GetNextLevel();
|
||||||
void SetBrokenModel(EntityID entity);
|
void SetBrokenModel(EntityID entity);
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
#include "Game/EResetBall.h"
|
#include "Game/EResetBall.h"
|
||||||
#include "Game/EResetAll.h"
|
#include "Game/EResetAll.h"
|
||||||
#include "Game/ERaiseWater.h"
|
#include "Game/ERaiseWater.h"
|
||||||
|
#include "Game/ERaiseWaterWall.h"
|
||||||
#include "Game/EMultiBall.h"
|
#include "Game/EMultiBall.h"
|
||||||
#include "Game/ELifebuoy.h"
|
#include "Game/ELifebuoy.h"
|
||||||
#include "Game/EStickyPad.h"
|
#include "Game/EStickyPad.h"
|
||||||
@@ -118,6 +119,7 @@ private:
|
|||||||
dd::EventRelay<PadSystem, dd::Events::ResetBall> m_EResetBall;
|
dd::EventRelay<PadSystem, dd::Events::ResetBall> m_EResetBall;
|
||||||
dd::EventRelay<PadSystem, dd::Events::ResetAll> m_EResetAll;
|
dd::EventRelay<PadSystem, dd::Events::ResetAll> m_EResetAll;
|
||||||
dd::EventRelay<PadSystem, dd::Events::RaiseWater> m_ERaiseWater;
|
dd::EventRelay<PadSystem, dd::Events::RaiseWater> m_ERaiseWater;
|
||||||
|
dd::EventRelay<PadSystem, dd::Events::RaiseWaterWall> m_ERaiseWaterWall;
|
||||||
dd::EventRelay<PadSystem, dd::Events::Pause> m_EPause;
|
dd::EventRelay<PadSystem, dd::Events::Pause> m_EPause;
|
||||||
dd::EventRelay<PadSystem, dd::Events::Resume> m_EResume;
|
dd::EventRelay<PadSystem, dd::Events::Resume> m_EResume;
|
||||||
dd::EventRelay<PadSystem, dd::Events::KrakenAttack> m_EKrakenAttack;
|
dd::EventRelay<PadSystem, dd::Events::KrakenAttack> m_EKrakenAttack;
|
||||||
@@ -133,6 +135,8 @@ private:
|
|||||||
bool OnResetBall(const dd::Events::ResetBall &event);
|
bool OnResetBall(const dd::Events::ResetBall &event);
|
||||||
bool OnResetAll(const dd::Events::ResetAll &event);
|
bool OnResetAll(const dd::Events::ResetAll &event);
|
||||||
bool OnRaiseWater(const dd::Events::RaiseWater &event);
|
bool OnRaiseWater(const dd::Events::RaiseWater &event);
|
||||||
|
bool OnRaiseWaterWall(const dd::Events::RaiseWaterWall &event);
|
||||||
|
bool RaisePad(float amount, float speed);
|
||||||
bool OnPause(const dd::Events::Pause &event);
|
bool OnPause(const dd::Events::Pause &event);
|
||||||
bool OnResume(const dd::Events::Resume &event);
|
bool OnResume(const dd::Events::Resume &event);
|
||||||
bool OnKrakenAttack(const dd::Events::KrakenAttack &event);
|
bool OnKrakenAttack(const dd::Events::KrakenAttack &event);
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ private:
|
|||||||
bool m_InkBlaster = false;
|
bool m_InkBlaster = false;
|
||||||
bool m_SquidLoaded = false;
|
bool m_SquidLoaded = false;
|
||||||
int m_Shots = 0;
|
int m_Shots = 0;
|
||||||
|
float m_InkBlasterSpeed = 5;
|
||||||
EntityID m_InkBlastTemplate;
|
EntityID m_InkBlastTemplate;
|
||||||
EntityID m_AttachedSquid;
|
EntityID m_AttachedSquid;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,72 @@
|
|||||||
|
//
|
||||||
|
// Created by Adniklastrator on 2015-10-20.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef DAYDREAM_WATERSYSTEM_H
|
||||||
|
#define DAYDREAM_WATERSYSTEM_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "Core/System.h"
|
||||||
|
#include "Core/CTransform.h"
|
||||||
|
#include "Core/CTemplate.h"
|
||||||
|
#include "Core/EventBroker.h"
|
||||||
|
#include "Core/World.h"
|
||||||
|
#include "Transform/EMove.h"
|
||||||
|
#include "Physics/CWaterVolume.h"
|
||||||
|
#include "Physics/CRectangleShape.h"
|
||||||
|
#include "Game/EPause.h"
|
||||||
|
#include "Game/EResume.h"
|
||||||
|
#include "Game/ERelevantObjectCreated.h"
|
||||||
|
#include "Game/ERaiseWater.h"
|
||||||
|
#include "Game/ERaiseWaterWall.h"
|
||||||
|
#include "Game/EArrivedAtNewStage.h"
|
||||||
|
#include "Game/EStageCleared.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace dd
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace Systems
|
||||||
|
{
|
||||||
|
|
||||||
|
class WaterSystem : public System
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WaterSystem(World* world, std::shared_ptr<dd::EventBroker> eventBroker)
|
||||||
|
: System(world, eventBroker)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
void Initialize() override;
|
||||||
|
void Update(double dt) override;
|
||||||
|
void UpdateEntity(double dt, EntityID entity, EntityID parent) override;
|
||||||
|
|
||||||
|
bool IsPaused() const { return m_Pause; }
|
||||||
|
void SetPause(const bool& pause) { m_Pause = pause; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_Pause = false;
|
||||||
|
EntityID m_BottomWall = 0;
|
||||||
|
|
||||||
|
dd::EventRelay<WaterSystem, dd::Events::Pause> m_EPause;
|
||||||
|
dd::EventRelay<WaterSystem, dd::Events::Resume> m_EResume;
|
||||||
|
dd::EventRelay<WaterSystem, dd::Events::RelevantObjectCreated> m_ERelevantObjectCreated;
|
||||||
|
dd::EventRelay<WaterSystem, dd::Events::StageCleared> m_EStageCleared;
|
||||||
|
dd::EventRelay<WaterSystem, dd::Events::ArrivedAtNewStage> m_EArrivedAtNewStage;
|
||||||
|
dd::EventRelay<WaterSystem, dd::Events::RaiseWater> m_ERaiseWater;
|
||||||
|
dd::EventRelay<WaterSystem, dd::Events::RaiseWaterWall> m_ERaiseWaterWall;
|
||||||
|
|
||||||
|
bool OnPause(const dd::Events::Pause &event);
|
||||||
|
bool OnResume(const dd::Events::Resume &event);
|
||||||
|
bool OnRelevantObjectCreated(const dd::Events::RelevantObjectCreated &event);
|
||||||
|
bool OnStageCleared(const dd::Events::StageCleared &event);
|
||||||
|
bool OnArrivedAtNewStage(const dd::Events::ArrivedAtNewStage &event);
|
||||||
|
bool OnRaiseWater(const dd::Events::RaiseWater &event);
|
||||||
|
bool OnRaiseWaterWall(const dd::Events::RaiseWaterWall &event);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //DAYDREAM_WATERSYSTEM_H
|
||||||
@@ -11,8 +11,11 @@ void dd::Systems::KrakenSystem::Initialize()
|
|||||||
m_RandomGenerator = std::mt19937(rd());
|
m_RandomGenerator = std::mt19937(rd());
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EPause, &KrakenSystem::OnPause);
|
EVENT_SUBSCRIBE_MEMBER(m_EPause, &KrakenSystem::OnPause);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EResume, &KrakenSystem::OnResume);
|
EVENT_SUBSCRIBE_MEMBER(m_EResume, &KrakenSystem::OnResume);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_EContact, &KrakenSystem::OnContact);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EKrakenAppear, &KrakenSystem::OnKrakenAppear);
|
EVENT_SUBSCRIBE_MEMBER(m_EKrakenAppear, &KrakenSystem::OnKrakenAppear);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EKrakenAttack, &KrakenSystem::OnKrakenAttack);
|
EVENT_SUBSCRIBE_MEMBER(m_EKrakenAttack, &KrakenSystem::OnKrakenAttack);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_EKrakenHit, &KrakenSystem::OnKrakenHit);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_EKrakenDefeated, &KrakenSystem::OnKrakenDefeated);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EBrickGenerating, &KrakenSystem::OnBrickGenerating);
|
EVENT_SUBSCRIBE_MEMBER(m_EBrickGenerating, &KrakenSystem::OnBrickGenerating);
|
||||||
|
|
||||||
EntityID ent = m_World->CreateEntity();
|
EntityID ent = m_World->CreateEntity();
|
||||||
@@ -59,7 +62,7 @@ void dd::Systems::KrakenSystem::Update(double dt)
|
|||||||
|
|
||||||
void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
|
void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
|
||||||
{
|
{
|
||||||
if (IsPaused()) {
|
if (IsPaused() || !m_KrakenBattle) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,6 +71,11 @@ void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityI
|
|||||||
|
|
||||||
auto kraken = m_World->GetComponent<Components::Kraken>(entity);
|
auto kraken = m_World->GetComponent<Components::Kraken>(entity);
|
||||||
if (kraken != nullptr) {
|
if (kraken != nullptr) {
|
||||||
|
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
||||||
|
if (transform->Position.y < -10) {
|
||||||
|
m_World->RemoveEntity(entity);
|
||||||
|
return;
|
||||||
|
}
|
||||||
Events::KrakenAttack krakenAttack;
|
Events::KrakenAttack krakenAttack;
|
||||||
switch (kraken->CurrentAction)
|
switch (kraken->CurrentAction)
|
||||||
{
|
{
|
||||||
@@ -77,9 +85,9 @@ void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityI
|
|||||||
m_KrakenTimer = 0;
|
m_KrakenTimer = 0;
|
||||||
std::uniform_real_distribution<float> dist(1, 2.999f);
|
std::uniform_real_distribution<float> dist(1, 2.999f);
|
||||||
float random = dist(m_RandomGenerator);
|
float random = dist(m_RandomGenerator);
|
||||||
std::cout << random << std::endl;
|
//std::cout << random << std::endl;
|
||||||
kraken->CurrentAction = random;
|
kraken->CurrentAction = random;
|
||||||
std::cout << kraken->CurrentAction << std::endl;
|
//std::cout << kraken->CurrentAction << std::endl;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2: // Grabbing
|
case 2: // Grabbing
|
||||||
@@ -126,6 +134,42 @@ bool dd::Systems::KrakenSystem::OnResume(const dd::Events::Resume &event)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::KrakenSystem::OnContact(const dd::Events::Contact &event)
|
||||||
|
{
|
||||||
|
Components::Kraken* kraken1 = m_World->GetComponent<Components::Kraken>(event.Entity1);
|
||||||
|
Components::Kraken* kraken2 = m_World->GetComponent<Components::Kraken>(event.Entity2);
|
||||||
|
Components::Kraken* kraken;
|
||||||
|
|
||||||
|
if (kraken1 != nullptr && kraken2 != nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
EntityID krakenEntity, otherEntitiy;
|
||||||
|
|
||||||
|
//Which is the ball?
|
||||||
|
if (kraken1 != nullptr) {
|
||||||
|
krakenEntity = event.Entity1;
|
||||||
|
otherEntitiy = event.Entity2;
|
||||||
|
kraken = kraken1;
|
||||||
|
}
|
||||||
|
else if (kraken2 != nullptr) {
|
||||||
|
krakenEntity = event.Entity2;
|
||||||
|
otherEntitiy = event.Entity1;
|
||||||
|
kraken = kraken2;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto ball = m_World->GetComponent<Components::Ball>(otherEntitiy);
|
||||||
|
if (ball != nullptr) {
|
||||||
|
Events::KrakenHit e;
|
||||||
|
e.Kraken = krakenEntity;
|
||||||
|
e.Hitter = otherEntitiy;
|
||||||
|
EventBroker->Publish(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool dd::Systems::KrakenSystem::OnKrakenAppear(const dd::Events::KrakenAppear &event)
|
bool dd::Systems::KrakenSystem::OnKrakenAppear(const dd::Events::KrakenAppear &event)
|
||||||
{
|
{
|
||||||
auto ent = m_World->CloneEntity(m_KrakenTemplate);
|
auto ent = m_World->CloneEntity(m_KrakenTemplate);
|
||||||
@@ -144,6 +188,103 @@ bool dd::Systems::KrakenSystem::OnKrakenAttack(const dd::Events::KrakenAttack &e
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::KrakenSystem::OnKrakenHit(const dd::Events::KrakenHit &event)
|
||||||
|
{
|
||||||
|
auto kraken = m_World->GetComponent<Components::Kraken>(event.Kraken);
|
||||||
|
//kraken->Health--;
|
||||||
|
//std::cout << kraken->Health << std::endl;
|
||||||
|
kraken->Health = -1;
|
||||||
|
if (kraken->Health < 0) {
|
||||||
|
Events::KrakenDefeated e;
|
||||||
|
e.Kraken = event.Kraken;
|
||||||
|
e.Hitter = event.Hitter;
|
||||||
|
EventBroker->Publish(e);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::KrakenSystem::OnKrakenDefeated(const dd::Events::KrakenDefeated &event)
|
||||||
|
{
|
||||||
|
m_KrakenBattle = false;
|
||||||
|
|
||||||
|
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->Mask = static_cast<CollisionLayer::Type>(CollisionLayer::Water | CollisionLayer::Wall);
|
||||||
|
physicsComponent->Calculate = false;*/
|
||||||
|
|
||||||
|
auto transformComponentBrick = m_World->GetComponent<Components::Transform>(event.Kraken);
|
||||||
|
auto transformComponentHitter = m_World->GetComponent<Components::Transform>(event.Hitter);
|
||||||
|
|
||||||
|
|
||||||
|
auto brickModel = m_World->GetComponent<Components::Model>(event.Kraken);
|
||||||
|
|
||||||
|
auto cTransform = m_World->GetComponent<Components::Transform>(event.Kraken);
|
||||||
|
/*cTransform->Position = cTransform->Position + transformComponentBrick->Position;
|
||||||
|
glm::vec2 ballToBrick = 4.f * glm::normalize(glm::vec2(cTransform->Position.x - transformComponentHitter->Position.x, cTransform->Position.y - transformComponentHitter->Position.y));
|
||||||
|
cTransform->Velocity = glm::vec3(ballToBrick.x, ballToBrick.y, 0.f);
|
||||||
|
|
||||||
|
std::uniform_real_distribution<float> dist(-1.5f, 1.5f);
|
||||||
|
int impulseStrength = dist(m_RandomGenerator);
|
||||||
|
|
||||||
|
Events::SetImpulse i;
|
||||||
|
i.Entity = event.Kraken;
|
||||||
|
i.Impulse = glm::vec2(impulseStrength, 0.f);
|
||||||
|
i.Point = glm::vec2(cTransform->Position.x, cTransform->Position.y + 0.5f);
|
||||||
|
EventBroker->Publish(i);*/
|
||||||
|
|
||||||
|
auto cModel = m_World->GetComponent<Components::Model>(event.Kraken);
|
||||||
|
cModel->Color = brickModel->Color;
|
||||||
|
cModel->Color *= 0.5f;
|
||||||
|
|
||||||
|
/*m_World->RemoveComponent<Components::Template>(event.Kraken);
|
||||||
|
m_World->SetEntityParent(event.Kraken, 0);
|
||||||
|
m_World->CommitEntity(event.Kraken);*/
|
||||||
|
|
||||||
|
//Particle trail
|
||||||
|
Events::CreateParticleSequence trail;
|
||||||
|
trail.parent = event.Kraken;
|
||||||
|
trail.AlphaValues.push_back(1.f);
|
||||||
|
trail.AlphaValues.push_back(0.f);
|
||||||
|
trail.ScaleValues.push_back(glm::vec3(0.08f));
|
||||||
|
trail.ScaleValues.push_back(glm::vec3(0.f));
|
||||||
|
trail.RadiusDistribution = 1;
|
||||||
|
trail.EmitterLifeTime = 2.f;
|
||||||
|
trail.ParticleLifeTime = 1.f;
|
||||||
|
trail.ParticlesPerTick = 1;
|
||||||
|
trail.SpawnRate = 0.1f;
|
||||||
|
trail.Speed = 10.f;
|
||||||
|
trail.EmittingAngle = glm::half_pi<float>();
|
||||||
|
trail.SpriteFile = "Textures/Particles/FadeBall.png";
|
||||||
|
trail.Color = brickModel->Color;
|
||||||
|
//p.Spread = ...
|
||||||
|
EventBroker->Publish(trail);
|
||||||
|
|
||||||
|
//ParticlePoof
|
||||||
|
Events::CreateParticleSequence poof;
|
||||||
|
poof.EmitterLifeTime = 4;
|
||||||
|
poof.EmittingAngle = glm::half_pi<float>();
|
||||||
|
poof.Spread = 0.5f;
|
||||||
|
poof.NumberOfTicks = 1;
|
||||||
|
poof.ParticleLifeTime = 1.5f;
|
||||||
|
poof.ParticlesPerTick = 1;
|
||||||
|
poof.Position = cTransform->Position;
|
||||||
|
poof.ScaleValues.clear();
|
||||||
|
poof.ScaleValues.push_back(glm::vec3(0.5f));
|
||||||
|
poof.ScaleValues.push_back(glm::vec3(2.f, 2.f, 0.2f));
|
||||||
|
poof.SpriteFile = "Textures/Particles/Cloud_Particle.png";
|
||||||
|
poof.Color = brickModel->Color;
|
||||||
|
poof.AlphaValues.clear();
|
||||||
|
poof.AlphaValues.push_back(1.f);
|
||||||
|
poof.AlphaValues.push_back(0.f);
|
||||||
|
poof.Speed = 10;
|
||||||
|
EventBroker->Publish(poof);
|
||||||
|
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool dd::Systems::KrakenSystem::OnBrickGenerating(const dd::Events::BrickGenerating &event)
|
bool dd::Systems::KrakenSystem::OnBrickGenerating(const dd::Events::BrickGenerating &event)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -18,10 +18,12 @@ void dd::Systems::LevelSystem::Initialize()
|
|||||||
EVENT_SUBSCRIBE_MEMBER(m_EMultiBallLost, &LevelSystem::OnMultiBallLost);
|
EVENT_SUBSCRIBE_MEMBER(m_EMultiBallLost, &LevelSystem::OnMultiBallLost);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EPowerUpTaken, &LevelSystem::OnPowerUpTaken);
|
EVENT_SUBSCRIBE_MEMBER(m_EPowerUpTaken, &LevelSystem::OnPowerUpTaken);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EStageCleared, &LevelSystem::OnStageCleared);
|
EVENT_SUBSCRIBE_MEMBER(m_EStageCleared, &LevelSystem::OnStageCleared);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_EArrivedAtNewStage, &LevelSystem::OnArrivedAtNewStage);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EPause, &LevelSystem::OnPause);
|
EVENT_SUBSCRIBE_MEMBER(m_EPause, &LevelSystem::OnPause);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EResume, &LevelSystem::OnResume);
|
EVENT_SUBSCRIBE_MEMBER(m_EResume, &LevelSystem::OnResume);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EHitPad, &LevelSystem::OnHitPad);
|
EVENT_SUBSCRIBE_MEMBER(m_EHitPad, &LevelSystem::OnHitPad);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EBrickGenerating, &LevelSystem::OnBrickGenerating);
|
EVENT_SUBSCRIBE_MEMBER(m_EBrickGenerating, &LevelSystem::OnBrickGenerating);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_EKrakenDefeated, &LevelSystem::OnKrakenDefeated);
|
||||||
|
|
||||||
//PointLightTest
|
//PointLightTest
|
||||||
{
|
{
|
||||||
@@ -82,16 +84,7 @@ void dd::Systems::LevelSystem::Initialize()
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
// auto particleEmitter= m_World->AddComponent<Components::Emitter>(Pe);
|
// auto particleEmitter= m_World->AddComponent<Components::Emitter>(Pe);
|
||||||
//Water test
|
|
||||||
{
|
|
||||||
auto t_waterBody = m_World->CreateEntity();
|
|
||||||
auto transform = m_World->AddComponent<Components::Transform>(t_waterBody);
|
|
||||||
transform->Position = glm::vec3(0.f, -3.5f, -10.f);
|
|
||||||
transform->Scale = glm::vec3(7.0f, 1.5f, 1.f);
|
|
||||||
auto water = m_World->AddComponent<Components::WaterVolume>(t_waterBody);
|
|
||||||
auto body = m_World->AddComponent<Components::RectangleShape>(t_waterBody);
|
|
||||||
m_World->CommitEntity(t_waterBody);
|
|
||||||
}
|
|
||||||
|
|
||||||
//ParticleTest
|
//ParticleTest
|
||||||
|
|
||||||
@@ -132,20 +125,23 @@ void dd::Systems::LevelSystem::Initialize()
|
|||||||
//TODO: Why does the ball not collide with these bricks?
|
//TODO: Why does the ball not collide with these bricks?
|
||||||
//BottomBox
|
//BottomBox
|
||||||
{
|
{
|
||||||
auto BottomWall = m_World->CreateEntity();
|
EntityID BottomWall = m_World->CreateEntity();
|
||||||
auto transform = m_World->AddComponent<Components::Transform>(BottomWall);
|
auto transform = m_World->AddComponent<Components::Transform>(BottomWall);
|
||||||
auto wall = m_World->AddComponent<Components::Wall>(BottomWall);
|
auto wall = m_World->AddComponent<Components::Wall>(BottomWall);
|
||||||
transform->Position = glm::vec3(0.f, -6.f, -10.f);
|
transform->Position = glm::vec3(0.f, -6.f, -10.f);
|
||||||
transform->Scale = glm::vec3(20.f, 0.5f, 1.f);
|
transform->Scale = glm::vec3(20.f, 0.5f, 1.f);
|
||||||
//std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(BottomWall);
|
std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(BottomWall);
|
||||||
//sprite->SpriteFile = "Textures/Core/ErrorTexture.png";
|
sprite->SpriteFile = "Textures/Core/ErrorTexture.png";
|
||||||
std::shared_ptr<Components::RectangleShape> rectangleShape = m_World->AddComponent<Components::RectangleShape>(BottomWall);
|
std::shared_ptr<Components::RectangleShape> rectangleShape = m_World->AddComponent<Components::RectangleShape>(BottomWall);
|
||||||
rectangleShape->Dimensions = glm::vec2(20.f, 0.5f);
|
rectangleShape->Dimensions = glm::vec2(20.f, 0.5f);
|
||||||
std::shared_ptr<Components::Physics> physics = m_World->AddComponent<Components::Physics>(BottomWall);
|
std::shared_ptr<Components::Physics> physics = m_World->AddComponent<Components::Physics>(BottomWall);
|
||||||
physics->CollisionType = CollisionType::Type::Static;
|
physics->CollisionType = CollisionType::Type::Static;
|
||||||
physics->Category = CollisionLayer::Wall;
|
physics->Category = CollisionLayer::Wall;
|
||||||
|
physics->Calculate = true;
|
||||||
physics->Mask = static_cast<CollisionLayer::Type>(CollisionLayer::LifeBuoy);
|
physics->Mask = static_cast<CollisionLayer::Type>(CollisionLayer::LifeBuoy);
|
||||||
m_World->CommitEntity(BottomWall);
|
m_World->CommitEntity(BottomWall);
|
||||||
|
|
||||||
|
m_World->SetProperty(BottomWall, "Name", "BottomWall");
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -295,6 +291,7 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID
|
|||||||
} else if (brick->Type == InkBlasterBrick) {
|
} else if (brick->Type == InkBlasterBrick) {
|
||||||
Events::InkBlaster e;
|
Events::InkBlaster e;
|
||||||
e.Shots = 5;
|
e.Shots = 5;
|
||||||
|
e.Speed = 5;
|
||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
} else if(brick->Type == KrakenAttackBrick) {
|
} else if(brick->Type == KrakenAttackBrick) {
|
||||||
Events::KrakenAttack e;
|
Events::KrakenAttack e;
|
||||||
@@ -315,6 +312,7 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID
|
|||||||
Events::StageCleared ec;
|
Events::StageCleared ec;
|
||||||
ec.ClearedStage = m_CurrentLevel;
|
ec.ClearedStage = m_CurrentLevel;
|
||||||
ec.StageCluster = m_CurrentCluster;
|
ec.StageCluster = m_CurrentCluster;
|
||||||
|
ec.StagesInCluster = m_StagesInCluster;
|
||||||
EventBroker->Publish(ec);
|
EventBroker->Publish(ec);
|
||||||
} else {
|
} else {
|
||||||
if (ball != nullptr && MultiBalls() > 0) {
|
if (ball != nullptr && MultiBalls() > 0) {
|
||||||
@@ -682,6 +680,7 @@ void dd::Systems::LevelSystem::BrickHit(EntityID entityHitter, EntityID entityBr
|
|||||||
Events::InkBlaster e;
|
Events::InkBlaster e;
|
||||||
e.Transform = transformComponentBrick;
|
e.Transform = transformComponentBrick;
|
||||||
e.Shots = 5;
|
e.Shots = 5;
|
||||||
|
e.Speed = 5;
|
||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -704,8 +703,6 @@ void dd::Systems::LevelSystem::BrickHit(EntityID entityHitter, EntityID entityBr
|
|||||||
auto brickChildren = m_World->GetEntityChildren(entityBrick);
|
auto brickChildren = m_World->GetEntityChildren(entityBrick);
|
||||||
for (auto b : brickChildren)
|
for (auto b : brickChildren)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
auto cTransform = m_World->GetComponent<Components::Transform>(b);
|
auto cTransform = m_World->GetComponent<Components::Transform>(b);
|
||||||
cTransform->Position = cTransform->Position + transformComponentBrick->Position;
|
cTransform->Position = cTransform->Position + transformComponentBrick->Position;
|
||||||
glm::vec2 ballToBrick = 4.f * glm::normalize(glm::vec2(cTransform->Position.x - transformComponentHitter->Position.x, cTransform->Position.y - transformComponentHitter->Position.y));
|
glm::vec2 ballToBrick = 4.f * glm::normalize(glm::vec2(cTransform->Position.x - transformComponentHitter->Position.x, cTransform->Position.y - transformComponentHitter->Position.y));
|
||||||
@@ -831,6 +828,16 @@ bool dd::Systems::LevelSystem::OnPowerUpTaken(const dd::Events::PowerUpTaken &ev
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::LevelSystem::OnKrakenDefeated(const dd::Events::KrakenDefeated &event)
|
||||||
|
{
|
||||||
|
SetNumberOfBricks(NumberOfBricks() - 1);
|
||||||
|
m_LooseBricks--;
|
||||||
|
|
||||||
|
std::cout << m_LooseBricks << std::endl;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool dd::Systems::LevelSystem::OnStageCleared(const dd::Events::StageCleared &event)
|
bool dd::Systems::LevelSystem::OnStageCleared(const dd::Events::StageCleared &event)
|
||||||
{
|
{
|
||||||
if (!m_Cleared) {
|
if (!m_Cleared) {
|
||||||
@@ -842,12 +849,13 @@ bool dd::Systems::LevelSystem::OnStageCleared(const dd::Events::StageCleared &ev
|
|||||||
es.Score = 500;
|
es.Score = 500;
|
||||||
EventBroker->Publish(es);
|
EventBroker->Publish(es);
|
||||||
m_CurrentLevel++;
|
m_CurrentLevel++;
|
||||||
if (m_CurrentLevel < 6) {
|
if (m_CurrentLevel <= event.StagesInCluster) {
|
||||||
GetNextLevel();
|
GetNextLevel();
|
||||||
CreateLevel(12); //NextLevelDistance
|
CreateLevel(12); //NextLevelDistance
|
||||||
} else {
|
} else {
|
||||||
// Win
|
// Win
|
||||||
Events::ClusterClear e;
|
Events::ClusterClear e;
|
||||||
|
e.ClusterCleared = m_CurrentCluster;
|
||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
|
|
||||||
Events::Pause p;
|
Events::Pause p;
|
||||||
@@ -858,6 +866,12 @@ bool dd::Systems::LevelSystem::OnStageCleared(const dd::Events::StageCleared &ev
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::LevelSystem::OnArrivedAtNewStage(const dd::Events::ArrivedAtNewStage &event)
|
||||||
|
{
|
||||||
|
m_Cleared = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void dd::Systems::LevelSystem::GetNextLevel()
|
void dd::Systems::LevelSystem::GetNextLevel()
|
||||||
{
|
{
|
||||||
std::array<int, 42> level;
|
std::array<int, 42> level;
|
||||||
|
|||||||
+41
-14
@@ -30,6 +30,7 @@ void dd::Systems::PadSystem::Initialize()
|
|||||||
EVENT_SUBSCRIBE_MEMBER(m_EResetBall, &PadSystem::OnResetBall);
|
EVENT_SUBSCRIBE_MEMBER(m_EResetBall, &PadSystem::OnResetBall);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EResetAll, &PadSystem::OnResetAll);
|
EVENT_SUBSCRIBE_MEMBER(m_EResetAll, &PadSystem::OnResetAll);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_ERaiseWater, &PadSystem::OnRaiseWater);
|
EVENT_SUBSCRIBE_MEMBER(m_ERaiseWater, &PadSystem::OnRaiseWater);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_ERaiseWaterWall, &PadSystem::OnRaiseWaterWall);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EPause, &PadSystem::OnPause);
|
EVENT_SUBSCRIBE_MEMBER(m_EPause, &PadSystem::OnPause);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EResume, &PadSystem::OnResume);
|
EVENT_SUBSCRIBE_MEMBER(m_EResume, &PadSystem::OnResume);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EKrakenAttack, &PadSystem::OnKrakenAttack);
|
EVENT_SUBSCRIBE_MEMBER(m_EKrakenAttack, &PadSystem::OnKrakenAttack);
|
||||||
@@ -74,6 +75,17 @@ void dd::Systems::PadSystem::Initialize()
|
|||||||
|
|
||||||
m_StickTransform = transform;
|
m_StickTransform = transform;
|
||||||
m_StickyAim = sticky;
|
m_StickyAim = sticky;
|
||||||
|
|
||||||
|
/*{
|
||||||
|
auto entChild = m_World->CreateEntity(ent);
|
||||||
|
std::shared_ptr<Components::Transform> transform = m_World->AddComponent<Components::Transform>(entChild);
|
||||||
|
transform->Position = glm::vec3(0.f, 12.5f, 0.f);
|
||||||
|
|
||||||
|
transform->Scale = glm::vec3(0.1f, 25.f, 0.1f);
|
||||||
|
std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(entChild);
|
||||||
|
sprite->SpriteFile = "Models/Brick/White.png";
|
||||||
|
sprite->Color = glm::vec4(0.f, 0.5f, 0.f, 0.5f);
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ResetBall = true;
|
m_ResetBall = true;
|
||||||
@@ -219,8 +231,14 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) {
|
|||||||
} else if (val == GLFW_KEY_W) {
|
} else if (val == GLFW_KEY_W) {
|
||||||
Events::RaiseWater e;
|
Events::RaiseWater e;
|
||||||
e.Amount = 0.2;
|
e.Amount = 0.2;
|
||||||
|
e.Speed = 0.2;
|
||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
} else if (val == GLFW_KEY_A) {
|
} else if (val == GLFW_KEY_Q) {
|
||||||
|
Events::RaiseWaterWall e;
|
||||||
|
e.Amount = 0.2;
|
||||||
|
e.Speed = 0.2;
|
||||||
|
EventBroker->Publish(e);
|
||||||
|
} else if (val == GLFW_KEY_A) {
|
||||||
Events::ResetAll e;
|
Events::ResetAll e;
|
||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
} else if (val == GLFW_KEY_M) {
|
} else if (val == GLFW_KEY_M) {
|
||||||
@@ -267,6 +285,7 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) {
|
|||||||
} else if (val == GLFW_KEY_I) {
|
} else if (val == GLFW_KEY_I) {
|
||||||
Events::InkBlaster e;
|
Events::InkBlaster e;
|
||||||
e.Shots = 5;
|
e.Shots = 5;
|
||||||
|
e.Speed = 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;
|
||||||
@@ -416,21 +435,29 @@ bool dd::Systems::PadSystem::OnResetAll(const dd::Events::ResetAll &event)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool dd::Systems::PadSystem::OnRaiseWater(const dd::Events::RaiseWater &event)
|
bool dd::Systems::PadSystem::OnRaiseWater(const dd::Events::RaiseWater &event)
|
||||||
|
{
|
||||||
|
RaisePad(event.Amount, event.Speed);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::PadSystem::OnRaiseWaterWall(const dd::Events::RaiseWaterWall &event)
|
||||||
|
{
|
||||||
|
RaisePad(event.Amount, event.Speed);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::PadSystem::RaisePad(float amount, float speed)
|
||||||
{
|
{
|
||||||
auto transform = Transform();
|
auto transform = Transform();
|
||||||
glm::vec3 raise = glm::vec3(0, event.Amount, 0);
|
glm::vec3 raise = glm::vec3(0, amount, 0);
|
||||||
transform->Position += raise;
|
Events::Move e;
|
||||||
|
e.Entity = m_Entity;
|
||||||
{
|
e.GoalPosition = transform->Position + raise;
|
||||||
auto t_waterBody = m_World->CreateEntity();
|
e.Speed = speed;
|
||||||
auto transform = m_World->AddComponent<Components::Transform>(t_waterBody);
|
e.Queue = true;
|
||||||
transform->Position = glm::vec3(0.f, -3.5f, -10.f);
|
EventBroker->Publish(e);
|
||||||
transform->Scale = glm::vec3(7.0f, event.Amount * 1.6f, 1.f);
|
|
||||||
auto water = m_World->AddComponent<Components::WaterVolume>(t_waterBody);
|
|
||||||
auto body = m_World->AddComponent<Components::RectangleShape>(t_waterBody);
|
|
||||||
m_World->CommitEntity(t_waterBody);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ bool dd::Systems::ProjectileSystem::OnInkBlaster(const dd::Events::InkBlaster &e
|
|||||||
{
|
{
|
||||||
m_InkBlaster = true;
|
m_InkBlaster = true;
|
||||||
m_Shots = event.Shots;
|
m_Shots = event.Shots;
|
||||||
|
m_InkBlasterSpeed = event.Speed;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,9 +116,11 @@ bool dd::Systems::ProjectileSystem::OnActionButton(const dd::Events::ActionButto
|
|||||||
if (m_InkBlaster && m_SquidLoaded) {
|
if (m_InkBlaster && m_SquidLoaded) {
|
||||||
auto ent = m_World->CloneEntity(m_InkBlastTemplate);
|
auto ent = m_World->CloneEntity(m_InkBlastTemplate);
|
||||||
m_World->RemoveComponent<Components::Template>(ent);
|
m_World->RemoveComponent<Components::Template>(ent);
|
||||||
|
auto projectile = m_World->GetComponent<Components::Projectile>(ent);
|
||||||
|
projectile->Speed = m_InkBlasterSpeed;
|
||||||
auto transform = m_World->GetComponent<Components::Transform>(ent);
|
auto transform = m_World->GetComponent<Components::Transform>(ent);
|
||||||
transform->Position = event.Position;
|
transform->Position = event.Position;
|
||||||
transform->Velocity = glm::vec3(0, 5, 0);
|
transform->Velocity = glm::vec3(0, projectile->Speed, 0);
|
||||||
m_Shots--;
|
m_Shots--;
|
||||||
if (m_Shots <= 0) {
|
if (m_Shots <= 0) {
|
||||||
auto ball = m_World->GetComponent<Components::Ball>(m_AttachedSquid);
|
auto ball = m_World->GetComponent<Components::Ball>(m_AttachedSquid);
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ bool dd::Systems::TravellingSystem::OnResume(const dd::Events::Resume &event)
|
|||||||
|
|
||||||
bool dd::Systems::TravellingSystem::OnStageCleared(const dd::Events::StageCleared &event)
|
bool dd::Systems::TravellingSystem::OnStageCleared(const dd::Events::StageCleared &event)
|
||||||
{
|
{
|
||||||
if (event.ClearedStage < 5) {
|
if (event.ClearedStage < event.StagesInCluster) {
|
||||||
m_Travelling = true;
|
m_Travelling = true;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -0,0 +1,124 @@
|
|||||||
|
//
|
||||||
|
// Created by Adniklastrator on 2015-10-20.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "PrecompiledHeader.h"
|
||||||
|
#include "Game/WaterSystem.h"
|
||||||
|
|
||||||
|
void dd::Systems::WaterSystem::Initialize()
|
||||||
|
{
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_EPause, &WaterSystem::OnPause);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_EResume, &WaterSystem::OnResume);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_ERelevantObjectCreated, &WaterSystem::OnRelevantObjectCreated);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_EStageCleared, &WaterSystem::OnStageCleared);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_ERaiseWater, &WaterSystem::OnRaiseWater);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_ERaiseWaterWall, &WaterSystem::OnRaiseWaterWall);
|
||||||
|
|
||||||
|
//Water test
|
||||||
|
{
|
||||||
|
auto t_waterBody = m_World->CreateEntity();
|
||||||
|
auto transform = m_World->AddComponent<Components::Transform>(t_waterBody);
|
||||||
|
transform->Position = glm::vec3(0.f, -3.5f, -10.f);
|
||||||
|
transform->Scale = glm::vec3(7.0f, 1.5f, 1.f);
|
||||||
|
auto water = m_World->AddComponent<Components::WaterVolume>(t_waterBody);
|
||||||
|
auto body = m_World->AddComponent<Components::RectangleShape>(t_waterBody);
|
||||||
|
m_World->CommitEntity(t_waterBody);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dd::Systems::WaterSystem::Update(double dt)
|
||||||
|
{
|
||||||
|
if (m_Pause) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void dd::Systems::WaterSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
|
||||||
|
{
|
||||||
|
if (m_Pause) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto templateCheck = m_World->GetComponent<Components::Template>(entity);
|
||||||
|
if (templateCheck != nullptr){ return; }
|
||||||
|
|
||||||
|
if (m_BottomWall == 0) {
|
||||||
|
for (auto it = m_World->GetEntities()->begin(); it != m_World->GetEntities()->end(); it++) {
|
||||||
|
if (m_World->GetProperty<std::string>(it->first, "Name") == "BottomWall") {
|
||||||
|
m_BottomWall = entity;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::WaterSystem::OnPause(const dd::Events::Pause &event)
|
||||||
|
{
|
||||||
|
/*if (event.Type != "WaterSystem" && event.Type != "All") {
|
||||||
|
return false;
|
||||||
|
}*/
|
||||||
|
m_Pause = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool dd::Systems::WaterSystem::OnResume(const dd::Events::Resume &event)
|
||||||
|
{
|
||||||
|
/*if (event.Type != "WaterSystem" && event.Type != "All") {
|
||||||
|
return false;
|
||||||
|
}*/
|
||||||
|
m_Pause = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::WaterSystem::OnRelevantObjectCreated(const dd::Events::RelevantObjectCreated &event)
|
||||||
|
{
|
||||||
|
if (event.ObjectName == "BottomWall") {
|
||||||
|
m_BottomWall = event.ObjectID;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::WaterSystem::OnStageCleared(const dd::Events::StageCleared &event)
|
||||||
|
{
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::WaterSystem::OnArrivedAtNewStage(const dd::Events::ArrivedAtNewStage &event)
|
||||||
|
{
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::WaterSystem::OnRaiseWater(const dd::Events::RaiseWater &event)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
auto t_waterBody = m_World->CreateEntity();
|
||||||
|
auto transform = m_World->AddComponent<Components::Transform>(t_waterBody);
|
||||||
|
transform->Position = glm::vec3(0.f, -3.5f, -10.f);
|
||||||
|
transform->Scale = glm::vec3(7.0f, event.Amount * 1.6f, 1.f);
|
||||||
|
auto water = m_World->AddComponent<Components::WaterVolume>(t_waterBody);
|
||||||
|
auto body = m_World->AddComponent<Components::RectangleShape>(t_waterBody);
|
||||||
|
m_World->CommitEntity(t_waterBody);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dd::Systems::WaterSystem::OnRaiseWaterWall(const dd::Events::RaiseWaterWall &event)
|
||||||
|
{
|
||||||
|
auto transform = m_World->GetComponent<Components::Transform>(m_BottomWall);
|
||||||
|
if (transform != nullptr) {
|
||||||
|
glm::vec3 raise = glm::vec3(0, event.Amount, 0);
|
||||||
|
Events::Move e;
|
||||||
|
e.Entity = m_BottomWall;
|
||||||
|
e.GoalPosition = transform->Position + raise;
|
||||||
|
e.Queue = true;
|
||||||
|
e.Speed = 0.2;
|
||||||
|
EventBroker->Publish(e);
|
||||||
|
} else {
|
||||||
|
LOG_ERROR("There is no BottomWall in WaterSystem");
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user