HitLag has types in strings to send along to affect what systems lag.

This commit is contained in:
PlatinumSkink
2015-10-01 14:14:07 +02:00
parent c63ec035a7
commit 4d3428f125
10 changed files with 79 additions and 19 deletions
+8 -6
View File
@@ -183,10 +183,12 @@ public:
//Water test //Water test
{ {
float amount = 1.5f;
auto t_waterBody = m_World->CreateEntity(); auto t_waterBody = m_World->CreateEntity();
auto transform = m_World->AddComponent<Components::Transform>(t_waterBody); auto transform = m_World->AddComponent<Components::Transform>(t_waterBody);
transform->Position = glm::vec3(0.f, -5.5f, -10.f); transform->Position = glm::vec3(0.f, -6.25f + (amount / 2), -10.f);
transform->Scale = glm::vec3(7.f, 1.5f, 1.f); transform->Scale = glm::vec3(7.f, amount, 1.f);
auto water = m_World->AddComponent<Components::WaterVolume>(t_waterBody); auto water = m_World->AddComponent<Components::WaterVolume>(t_waterBody);
auto body = m_World->AddComponent<Components::RectangleShape>(t_waterBody); auto body = m_World->AddComponent<Components::RectangleShape>(t_waterBody);
m_World->CommitEntity(t_waterBody); m_World->CommitEntity(t_waterBody);
@@ -235,7 +237,7 @@ public:
// m_World->CommitEntity(topWall); // m_World->CommitEntity(topWall);
// } // }
{ /*{
auto topWall = m_World->CreateEntity(); auto topWall = m_World->CreateEntity();
std::shared_ptr<Components::Transform> transform = m_World->AddComponent<Components::Transform>( std::shared_ptr<Components::Transform> transform = m_World->AddComponent<Components::Transform>(
topWall); topWall);
@@ -254,14 +256,14 @@ public:
physics->Mask = CollisionLayer::Type::Ball | CollisionLayer::Type::Brick; physics->Mask = CollisionLayer::Type::Ball | CollisionLayer::Type::Brick;
m_World->CommitEntity(topWall); m_World->CommitEntity(topWall);
} }*/
{ {
auto leftWall = m_World->CreateEntity(); auto leftWall = m_World->CreateEntity();
std::shared_ptr<Components::Transform> transform = m_World->AddComponent<Components::Transform>( std::shared_ptr<Components::Transform> transform = m_World->AddComponent<Components::Transform>(
leftWall); leftWall);
transform->Position = glm::vec3(-4.f, 1.f, -10.f); transform->Position = glm::vec3(-4.f, 1.f, -10.f);
transform->Scale = glm::vec3(0.5f, 20.f, 1.f); transform->Scale = glm::vec3(0.5f, 35.f, 1.f);
std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(leftWall); std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(leftWall);
sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; sprite->SpriteFile = "Textures/Core/ErrorTexture.png";
@@ -282,7 +284,7 @@ public:
std::shared_ptr<Components::Transform> transform = m_World->AddComponent<Components::Transform>( std::shared_ptr<Components::Transform> transform = m_World->AddComponent<Components::Transform>(
rightWall); rightWall);
transform->Position = glm::vec3(4.f, 1.f, -10.f); transform->Position = glm::vec3(4.f, 1.f, -10.f);
transform->Scale = glm::vec3(0.5f, 20.f, 1.f); transform->Scale = glm::vec3(0.5f, 35.f, 1.f);
std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(rightWall); std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(rightWall);
sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; sprite->SpriteFile = "Textures/Core/ErrorTexture.png";
+3
View File
@@ -90,6 +90,9 @@ private:
bool m_MultiBall = false; bool m_MultiBall = false;
bool m_Pause = false; bool m_Pause = false;
glm::vec3 m_SavedSpeed;
bool m_InitializePause = false;
EntityID m_Ball; EntityID m_Ball;
dd::EventRelay<BallSystem, dd::Events::LifeLost> m_ELifeLost; dd::EventRelay<BallSystem, dd::Events::LifeLost> m_ELifeLost;
+2
View File
@@ -18,6 +18,8 @@ struct Ball : Component
int Number = 0; int Number = 0;
float Speed = 5.f; float Speed = 5.f;
int Combo = 0; int Combo = 0;
bool Paused = false;
glm::vec3 SavedSpeed = glm::vec3(0, 0, 0);
}; };
} }
+1 -1
View File
@@ -15,7 +15,7 @@ namespace Events
struct Pause : Event struct Pause : Event
{ {
std::string Type;
}; };
} }
+8
View File
@@ -57,16 +57,24 @@ public:
void Initialize() override; void Initialize() override;
void Update(double dt) override; void Update(double dt) override;
void FlipPause();
bool IsPaused() const { return m_Pause; } bool IsPaused() const { return m_Pause; }
void SetPause(const bool& pause) { m_Pause = pause; } void SetPause(const bool& pause) { m_Pause = pause; }
bool HitLag() const { return m_HitLag; } bool HitLag() const { return m_HitLag; }
void SetHitLag(const bool& hitLag) { m_HitLag = hitLag; } void SetHitLag(const bool& hitLag) { m_HitLag = hitLag; }
float& HitLagDuration() { return m_HitLagDuration; }
void SetHitLagDuration(const float& hitLagDuration) { m_HitLagDuration = hitLagDuration; }
float& HitLagTimer() { return m_HitLagTimer; }
void SetHitLagTimer(const float& hitLagTimer) { m_HitLagTimer = hitLagTimer; }
std::string& CurrentType() { return m_CurrentType; }
void SetCurrentType(const std::string& currentType) { m_CurrentType = currentType; }
private: private:
bool m_Pause; bool m_Pause;
bool m_HitLag; bool m_HitLag;
float m_HitLagDuration; float m_HitLagDuration;
float m_HitLagTimer; float m_HitLagTimer;
std::string m_CurrentType;
dd::EventRelay<HitLagSystem, dd::Events::Pause> m_EPause; dd::EventRelay<HitLagSystem, dd::Events::Pause> m_EPause;
dd::EventRelay<HitLagSystem, dd::Events::HitLag> m_EHitLag; dd::EventRelay<HitLagSystem, dd::Events::HitLag> m_EHitLag;
+25 -2
View File
@@ -71,15 +71,34 @@ void dd::Systems::BallSystem::Update(double dt)
void dd::Systems::BallSystem::UpdateEntity(double dt, EntityID entity, EntityID parent) void dd::Systems::BallSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
{ {
auto ballComponent = m_World->GetComponent<Components::Ball>(entity);
if (IsPaused()) { if (IsPaused()) {
if (ballComponent != nullptr) {
auto transform = m_World->GetComponent<Components::Transform>(entity);
if (!ballComponent->Paused) {
ballComponent->Paused = true;
ballComponent->SavedSpeed = transform->Velocity;
transform->Velocity = glm::vec3(0, 0, 0);
}
}
return; return;
} else {
if (ballComponent != nullptr) {
auto transform = m_World->GetComponent<Components::Transform>(entity);
if (ballComponent->Paused) {
transform->Velocity = ballComponent->SavedSpeed;
ballComponent->Paused = false;
}
}
} }
auto templateCheck = m_World->GetComponent<Components::Template>(entity); auto templateCheck = m_World->GetComponent<Components::Template>(entity);
if (templateCheck != nullptr){ return; } if (templateCheck != nullptr){ return; }
auto ballComponent = m_World->GetComponent<Components::Ball>(entity);
if (ballComponent != nullptr) { if (ballComponent != nullptr) {
if (ReplaceBall() == true) { if (ReplaceBall()) {
SetReplaceBall(false); SetReplaceBall(false);
auto transform = m_World->GetComponent<Components::Transform>(entity); auto transform = m_World->GetComponent<Components::Transform>(entity);
@@ -153,6 +172,10 @@ void dd::Systems::BallSystem::UpdateEntity(double dt, EntityID entity, EntityID
bool dd::Systems::BallSystem::OnPause(const dd::Events::Pause &event) bool dd::Systems::BallSystem::OnPause(const dd::Events::Pause &event)
{ {
if (event.Type != "BallSystem" && event.Type != "All") {
return false;
}
if (IsPaused()) { if (IsPaused()) {
SetPause(false); SetPause(false);
} else { } else {
+18 -9
View File
@@ -15,19 +15,25 @@ void dd::Systems::HitLagSystem::Update(double dt)
{ {
if (IsPaused()) { if (IsPaused()) {
if (HitLag()) { if (HitLag()) {
m_HitLagTimer += dt; SetHitLagTimer(HitLagTimer() += dt);
std::cout << m_HitLagTimer << std::endl; std::cout << HitLagTimer() << std::endl;
if (m_HitLagDuration < m_HitLagTimer) { if (HitLagDuration() < HitLagTimer()) {
m_HitLagTimer = 0; SetHitLagTimer(0);
SetHitLag(false); SetHitLag(false);
Events::Pause e; FlipPause();
EventBroker->Publish(e);
} }
} }
return; return;
} }
} }
void dd::Systems::HitLagSystem::FlipPause()
{
Events::Pause e;
e.Type = CurrentType();
EventBroker->Publish(e);
}
bool dd::Systems::HitLagSystem::OnPause(const dd::Events::Pause &event) bool dd::Systems::HitLagSystem::OnPause(const dd::Events::Pause &event)
{ {
if (IsPaused()) { if (IsPaused()) {
@@ -40,9 +46,12 @@ bool dd::Systems::HitLagSystem::OnPause(const dd::Events::Pause &event)
bool dd::Systems::HitLagSystem::OnHitLag(const dd::Events::HitLag &event) bool dd::Systems::HitLagSystem::OnHitLag(const dd::Events::HitLag &event)
{ {
if (HitLag()) {
FlipPause();
}
SetHitLag(true); SetHitLag(true);
Events::Pause e; SetCurrentType(event.Type);
EventBroker->Publish(e); FlipPause();
m_HitLagDuration = event.Time; SetHitLagDuration(event.Time);
return true; return true;
} }
+4
View File
@@ -77,6 +77,10 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID
bool dd::Systems::LevelSystem::OnPause(const dd::Events::Pause &event) bool dd::Systems::LevelSystem::OnPause(const dd::Events::Pause &event)
{ {
if (event.Type != "LevelSystem" && event.Type != "All") {
return false;
}
if (IsPaused()) { if (IsPaused()) {
SetPause(false); SetPause(false);
} else { } else {
+6 -1
View File
@@ -111,6 +111,10 @@ void dd::Systems::PadSystem::Update(double dt)
bool dd::Systems::PadSystem::OnPause(const dd::Events::Pause &event) bool dd::Systems::PadSystem::OnPause(const dd::Events::Pause &event)
{ {
if (event.Type != "PadSystem" && event.Type != "All") {
return false;
}
if (IsPaused()) { if (IsPaused()) {
SetPause(false); SetPause(false);
} else { } else {
@@ -143,10 +147,11 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event)
EventBroker->Publish(e); EventBroker->Publish(e);
} else if (val == GLFW_KEY_P) { } else if (val == GLFW_KEY_P) {
Events::Pause e; Events::Pause e;
e.Type = "All";
EventBroker->Publish(e); EventBroker->Publish(e);
} else if (val == GLFW_KEY_H) { } else if (val == GLFW_KEY_H) {
Events::HitLag e; Events::HitLag e;
e.Time = 0.3; e.Time = 0.2;
e.Type = "All"; e.Type = "All";
EventBroker->Publish(e); EventBroker->Publish(e);
} else if (val == GLFW_KEY_D) { } else if (val == GLFW_KEY_D) {
+4
View File
@@ -179,6 +179,10 @@ void dd::Systems::PhysicsSystem::UpdateEntity(double dt, EntityID entity, Entity
bool dd::Systems::PhysicsSystem::OnPause(const dd::Events::Pause &event) bool dd::Systems::PhysicsSystem::OnPause(const dd::Events::Pause &event)
{ {
if (event.Type != "PhysicsSystem" && event.Type != "All") {
return false;
}
if (IsPaused()) { if (IsPaused()) {
SetPause(false); SetPause(false);
} else { } else {