From 091895cc8549769e9a4093d296797ceed113da17 Mon Sep 17 00:00:00 2001 From: Stiffly Date: Tue, 20 Oct 2015 11:14:53 +0200 Subject: [PATCH 1/5] broken ass shit after projectiles --- include/Game/ProjectileSystem.h | 7 +++++-- src/game/Game/LevelSystem.cpp | 3 +-- src/game/Game/ProjectileSystem.cpp | 21 +++++++++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/include/Game/ProjectileSystem.h b/include/Game/ProjectileSystem.h index 9cf0f81..764d337 100644 --- a/include/Game/ProjectileSystem.h +++ b/include/Game/ProjectileSystem.h @@ -5,6 +5,10 @@ #ifndef DAYDREAM_PROJECTILESYSTEM_H #define DAYDREAM_PROJECTILESYSTEM_H + +#include +#include + #include "Core/System.h" #include "Core/CTransform.h" #include "Core/CTemplate.h" @@ -24,8 +28,7 @@ #include "Game/CProjectile.h" #include "Game/CBall.h" #include "Rendering/CSprite.h" -#include -#include +#include "Physics/ECreateParticleSequence.h" namespace dd { diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index b0ea481..2e452d8 100755 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -910,8 +910,7 @@ void dd::Systems::LevelSystem::GetNextLevel() glm::vec4 p2 = glm::vec4(255.f / 255.f, 81.f / 255.f, 253.f / 255.f, 1.f); glm::vec4 p3 = glm::vec4(189.f / 255.f, 0.f / 255.f, 187.f / 255.f, 1.f); glm::vec4 p4 = glm::vec4(125.f / 255.f, 0.f / 255.f, 147.f / 255.f, 1.f); - - + m_CurrentLevel = 4; if (m_CurrentCluster == 0) { if (m_CurrentLevel == 1) { level = diff --git a/src/game/Game/ProjectileSystem.cpp b/src/game/Game/ProjectileSystem.cpp index 81cd5e6..54c80cd 100644 --- a/src/game/Game/ProjectileSystem.cpp +++ b/src/game/Game/ProjectileSystem.cpp @@ -121,6 +121,27 @@ bool dd::Systems::ProjectileSystem::OnActionButton(const dd::Events::ActionButto transform->Position = event.Position; transform->Velocity = glm::vec3(0, 7, 0); m_Shots--; + Events::CreateParticleSequence e; + e.parent = ent; + e.EmitterLifeTime = 1.0; + e.EmittingAngle = glm::half_pi(); + e.Spread = 0.f; + e.SpawnRate = 0.2; + //e.NumberOfTicks = 1; + e.ParticleLifeTime = 0.5f; + e.ParticlesPerTick = 1; + e.Position = event.Position; + e.ScaleValues.clear(); + e.ScaleValues.push_back(glm::vec3(0.1f)); + e.RadiusDistribution = 0.3; + e.ScaleValues.push_back(glm::vec3(0.f, 0.f, 0.2f)); + e.SpriteFile = "Textures/Particles/FadeBall.png"; + e.Color = glm::vec4(0, 0, 0, 1); + e.AlphaValues.clear(); + e.AlphaValues.push_back(1.f); + e.AlphaValues.push_back(0.f); + e.Speed = 20.f; + EventBroker->Publish(e); if (m_Shots <= 0) { auto ball = m_World->GetComponent(m_AttachedSquid); m_InkBlaster = false; From 49c80c1c5ac778b2fdf30ea7e164fc55d61a2c08 Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Thu, 22 Oct 2015 15:42:28 +0200 Subject: [PATCH 2/5] Fixed so generated bricks fo not collide with anything. --- include/Game/CBall.h | 2 ++ include/Game/CBrick.h | 2 ++ include/Game/CLife.h | 7 ++++--- include/Game/LifeSystem.h | 1 + src/game/Game/BallSystem.cpp | 25 ++++++++++++++++--------- src/game/Game/LevelSystem.cpp | 25 ++++++++++++++++++++++--- src/game/Game/LifeSystem.cpp | 29 +++++++++++++++++++++++++---- 7 files changed, 72 insertions(+), 19 deletions(-) diff --git a/include/Game/CBall.h b/include/Game/CBall.h index 9a7933f..17ebbaf 100644 --- a/include/Game/CBall.h +++ b/include/Game/CBall.h @@ -24,6 +24,8 @@ struct Ball : Component bool Sticky = false; glm::vec3 StickyPlacement = glm::vec3(0, 0, 0); glm::vec3 SavedSpeed = glm::vec3(0, 1, 0); + + int PosterBoy = 0; }; } diff --git a/include/Game/CBrick.h b/include/Game/CBrick.h index 7a5ae15..4e3a5af 100644 --- a/include/Game/CBrick.h +++ b/include/Game/CBrick.h @@ -20,6 +20,8 @@ struct Brick : Component int Type = 0; bool Removed = false; int Number = 100; // For the Kraken to keep track of which bricks needs replacing. + bool BeingGenerated = false; + glm::vec3 GenerationGoal; //What number of types each is. const int EmptyBrickSpace = 0; diff --git a/include/Game/CLife.h b/include/Game/CLife.h index aeca335..73266fd 100644 --- a/include/Game/CLife.h +++ b/include/Game/CLife.h @@ -13,10 +13,11 @@ namespace dd namespace Components { -struct Life : Component { - +struct Life : Component +{ int Number = 0; - + float SinusAltitude = 1; + bool Left = false; }; } diff --git a/include/Game/LifeSystem.h b/include/Game/LifeSystem.h index 249e9ee..2e7f0af 100644 --- a/include/Game/LifeSystem.h +++ b/include/Game/LifeSystem.h @@ -54,6 +54,7 @@ private: bool m_Pause = false; int m_Lives = 3; int m_PastLives = 3; + float m_LifeSpeed = 0.8; bool m_GodMode = false; diff --git a/src/game/Game/BallSystem.cpp b/src/game/Game/BallSystem.cpp index 016c2ab..273a67b 100644 --- a/src/game/Game/BallSystem.cpp +++ b/src/game/Game/BallSystem.cpp @@ -64,6 +64,13 @@ void dd::Systems::BallSystem::Initialize() auto transform2 = m_World->GetComponent(ent2); transform2->Position = glm::vec3(-0.f, 0.26f, -10.f); transform2->Velocity = glm::vec3(0.0f, -10.f, 0.f); + + /*auto PosterBoy = CreateBall(); + auto PosterBall = m_World->GetComponent(PosterBoy); + PosterBall->PosterBoy = 1; + auto Postertran = m_World->GetComponent(PosterBoy); + Postertran->Position = glm::vec3(-3.f, -3.f, -10.f); + Postertran->Velocity = glm::vec3(0.0f, 0.f, 0.f);*/ } SetReplaceBall(true); @@ -88,6 +95,11 @@ void dd::Systems::BallSystem::UpdateEntity(double dt, EntityID entity, EntityID if (templateCheck != nullptr){ return; } if (ballComponent != nullptr) { + auto transformBall = m_World->GetComponent(entity); + if (ballComponent->PosterBoy == 1) { + transformBall->Position = glm::vec3(-3, 3, -10); + } + if (ReplaceBall()) { m_First = true; SetReplaceBall(false); @@ -97,24 +109,21 @@ void dd::Systems::BallSystem::UpdateEntity(double dt, EntityID entity, EntityID ballComponent->SavedSpeed = glm::vec3(random, 1, 0.f); //ballComponent->SavedSpeed = glm::vec3(0.f, 1, 0.f); ballComponent->Waiting = true; - auto transform = m_World->GetComponent(entity); } if (ballComponent->Waiting) { if (!m_Waiting) { m_Restarting = false; ballComponent->Waiting = false; - auto transform = m_World->GetComponent(entity); /*std::uniform_real_distribution dist(-0.5f, 0.5f); float random = dist(m_RandomGenerator);*/ - transform->Velocity = glm::normalize(ballComponent->SavedSpeed) * ballComponent->Speed; + transformBall->Velocity = glm::normalize(ballComponent->SavedSpeed) * ballComponent->Speed; //transform->Velocity = glm::normalize(glm::vec3(0, 1, 0)) * ballComponent->Speed; } else if (!ballComponent->Sticky) { - auto transform = m_World->GetComponent(entity); - transform->Velocity = glm::vec3(0.f, 0.f, 0.f); + transformBall->Velocity = glm::vec3(0.f, 0.f, 0.f); //transform->Position = glm::vec3(0.0f, -3.f, -10.f); if (m_First) { - transform->Orientation = glm::quat(); + transformBall->Orientation = glm::quat(); m_First = false; } return; @@ -124,8 +133,7 @@ void dd::Systems::BallSystem::UpdateEntity(double dt, EntityID entity, EntityID //TODO - Ball can stick to same pad just after detaching. if (!m_Waiting) { - auto transform = m_World->GetComponent(entity); - transform->Velocity = ballComponent->SavedSpeed; + transformBall->Velocity = ballComponent->SavedSpeed; m_StickyCounter--; if (m_StickyCounter > 0) { m_Sticky = true; @@ -134,7 +142,6 @@ void dd::Systems::BallSystem::UpdateEntity(double dt, EntityID entity, EntityID } } - auto transformBall = m_World->GetComponent(entity); if (glm::abs(transformBall->Velocity.y) < 2) { if (transformBall->Velocity.y > 0) { transformBall->Velocity.y = 2; diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index de6ceb3..645deea 100755 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -281,7 +281,19 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID auto brick = m_World->GetComponent(entity); if (brick != nullptr) { - auto transform = m_World->GetComponent(entity); + + auto transform = m_World->GetComponent(entity); + if (brick->BeingGenerated) { + if (transform->Position == brick->GenerationGoal) { + brick->BeingGenerated = false; + auto cPhys = m_World->AddComponent(entity); + cPhys->CollisionType = CollisionType::Type::Static; + cPhys->GravityScale = 0.f; + cPhys->Category = CollisionLayer::Type::Brick; + cPhys->Mask = static_cast(CollisionLayer::Type::Ball | CollisionLayer::Type::Projectile | CollisionLayer::Type::Wall | CollisionLayer::LifeBuoy); + } + } + //Removes bricks that falls out of the stage. if (transform->Position.y < -10) { if (brick->Type == StandardBrick) { @@ -480,6 +492,8 @@ bool dd::Systems::LevelSystem::BrickGenerating(const dd::Events::BrickGenerating auto ent = CreateBrick(i, j, SpaceBetweenBricks(), SpaceToEdge(), -3.2, 1, m_BrickSet[getter], m_ColorSet[getter]); if (ent != NULL) { auto brick = m_World->GetComponent(ent); + brick->BeingGenerated = true; + m_World->RemoveComponent(ent); brick->Number = getter; m_KrakenBricks[getter] = true; auto transform = m_World->GetComponent(ent); @@ -490,6 +504,7 @@ bool dd::Systems::LevelSystem::BrickGenerating(const dd::Events::BrickGenerating } else { transform->Position = event.Origin2; } + brick->GenerationGoal = e.GoalPosition; e.Entity = ent; e.Speed = 6; e.Queue = false; @@ -689,7 +704,11 @@ bool dd::Systems::LevelSystem::OnContact(const dd::Events::Contact &event) brick = m_World->GetComponent(entityBrick); if (brick == nullptr) { return false; - } + } + + if (brick->BeingGenerated) { + return false; + } if (entityShot != 0) { // For when a brick gets shot. @@ -1101,7 +1120,7 @@ void dd::Systems::LevelSystem::GetNextLevel() 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; color = {w, w, w, w, w, w, w, diff --git a/src/game/Game/LifeSystem.cpp b/src/game/Game/LifeSystem.cpp index 944ed1c..810ed35 100644 --- a/src/game/Game/LifeSystem.cpp +++ b/src/game/Game/LifeSystem.cpp @@ -47,10 +47,29 @@ void dd::Systems::LifeSystem::UpdateEntity(double dt, EntityID entity, EntityID auto templateCheck = m_World->GetComponent(entity); if (templateCheck != nullptr){ return; } + auto life = m_World->GetComponent(entity); - if (Lives() != PastLives()) { - auto life = m_World->GetComponent(entity); - if (life != nullptr) { + + if (life != nullptr) { + auto transform = m_World->GetComponent(entity); + if (life->Left) { + if (transform->Position.x > 3) { + life->Left = false; + transform->Velocity.x = m_LifeSpeed; + } + } else { + + if (transform->Position.x < -3) { + life->Left = true; + transform->Velocity.x = -m_LifeSpeed; + } + } + transform->Position.x += transform->Velocity.x * dt; + /*glm::vec2 dir = glm::normalize(glm::vec2(transform->Velocity.x, transform->Velocity.y)); + glm::vec2 up = glm::vec2(0.f, 1.f); + float angle = glm::acos(glm::dot(dir, up)) * glm::sign(dir.x); + transform->Orientation = glm::rotate(glm::quat(), angle, glm::vec3(0.f, 0.f, -1.f));*/ + if (Lives() != PastLives()) { if (life->Number + 1 == PastLives()) { m_World->RemoveEntity(entity); SetPastLives(Lives()); @@ -64,7 +83,9 @@ void dd::Systems::LifeSystem::CreateLife(int number) auto life = m_World->CreateEntity(); std::shared_ptr transform = m_World->AddComponent(life); transform->Position = glm::vec3(-1.5f + number * 0.15f, -2.f, -5.f); + //transform->Position = glm::vec3(-1.5f + number * 1.5f, -3.f, -10.f); transform->Scale = glm::vec3(0.1f, 0.1f, 0.1f); + //transform->Scale = glm::vec3(0.2f, 0.2f, 0.2f); std::shared_ptr lifeNr = m_World->AddComponent(life); lifeNr->Number = number; @@ -81,7 +102,7 @@ bool dd::Systems::LifeSystem::OnLifeLost(const dd::Events::LifeLost &event) SetLives(Lives() - 1); return true; } - return false; + return true; } bool dd::Systems::LifeSystem::OnPause(const dd::Events::Pause &event) From d75e481e0f778ed9e90f7dd08b1ea2fe9deecd23 Mon Sep 17 00:00:00 2001 From: viktorljung Date: Thu, 22 Oct 2015 15:44:09 +0200 Subject: [PATCH 3/5] life fix --- include/Game/LifeSystem.h | 2 ++ src/game/Game/LifeSystem.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/include/Game/LifeSystem.h b/include/Game/LifeSystem.h index 249e9ee..60ab8eb 100644 --- a/include/Game/LifeSystem.h +++ b/include/Game/LifeSystem.h @@ -24,6 +24,8 @@ #include "Game/EGameOver.h" #include "Game/EKrakenAttackEnd.h" +#include "Rendering/CAnimation.h" + namespace dd { diff --git a/src/game/Game/LifeSystem.cpp b/src/game/Game/LifeSystem.cpp index 944ed1c..3752271 100644 --- a/src/game/Game/LifeSystem.cpp +++ b/src/game/Game/LifeSystem.cpp @@ -72,6 +72,8 @@ void dd::Systems::LifeSystem::CreateLife(int number) auto model = m_World->AddComponent(life); model->ModelFile = "Models/Sid/Sid.dae"; + auto anim = m_World->AddComponent(life); + anim->Speed = 0.f; m_World->CommitEntity(life); } From 7c2782fe2c540c48faf97bbaebad9e908f41627e Mon Sep 17 00:00:00 2001 From: Stiffly Date: Thu, 22 Oct 2015 16:27:23 +0200 Subject: [PATCH 4/5] Fixed scale issue for power up textures. Added a defaultscale flag. Also removed ugly particleeffect for projectiles. --- include/Game/ProjectileSystem.h | 1 - include/Physics/CParticleEmitter.h | 2 +- include/Physics/ECreateParticleSequence.h | 1 + include/Physics/PhysicsSystem.h | 1 + src/game/Game/LevelSystem.cpp | 2 +- src/game/Game/ProjectileSystem.cpp | 22 +---------------- src/game/Physics/PhysicsSystem.cpp | 29 ++++++++++++++++++----- 7 files changed, 28 insertions(+), 30 deletions(-) diff --git a/include/Game/ProjectileSystem.h b/include/Game/ProjectileSystem.h index 50f5af3..294029e 100644 --- a/include/Game/ProjectileSystem.h +++ b/include/Game/ProjectileSystem.h @@ -30,7 +30,6 @@ #include "Game/CProjectile.h" #include "Game/CBall.h" #include "Rendering/CSprite.h" -#include "Physics/ECreateParticleSequence.h" namespace dd { diff --git a/include/Physics/CParticleEmitter.h b/include/Physics/CParticleEmitter.h index 9ba9212..d4f795a 100755 --- a/include/Physics/CParticleEmitter.h +++ b/include/Physics/CParticleEmitter.h @@ -22,7 +22,7 @@ struct ParticleEmitter : public Component float Speed = 2.f; double LifeTime = 100; float RadiusDistribution = 0; - + bool DefaultScale = false; //values to interpolate between. std::vector ScaleValues; std::vector AlphaValues; diff --git a/include/Physics/ECreateParticleSequence.h b/include/Physics/ECreateParticleSequence.h index d1f165d..19eb372 100644 --- a/include/Physics/ECreateParticleSequence.h +++ b/include/Physics/ECreateParticleSequence.h @@ -26,6 +26,7 @@ struct CreateParticleSequence : public Event glm::vec4 Color = glm::vec4(0); EntityID parent = 0; // values to interpolate between. + bool DefaultScale = false; std::vector ScaleValues; std::vector AlphaValues; diff --git a/include/Physics/PhysicsSystem.h b/include/Physics/PhysicsSystem.h index c01c896..f237512 100755 --- a/include/Physics/PhysicsSystem.h +++ b/include/Physics/PhysicsSystem.h @@ -14,6 +14,7 @@ #include "Core/CTemplate.h" #include "Core/CTransform.h" #include "Core/CTemplate.h" +#include "Rendering/Texture.h" #include "Physics/EContact.h" #include "Physics/ESetImpulse.h" diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index 74477f3..c482cf0 100755 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -1007,7 +1007,7 @@ void dd::Systems::LevelSystem::GetNextLevel() glm::vec4 p2 = glm::vec4(255.f / 255.f, 81.f / 255.f, 253.f / 255.f, 1.f); glm::vec4 p3 = glm::vec4(189.f / 255.f, 0.f / 255.f, 187.f / 255.f, 1.f); glm::vec4 p4 = glm::vec4(125.f / 255.f, 0.f / 255.f, 147.f / 255.f, 1.f); - m_CurrentLevel = 4; + if (m_CurrentCluster == 0) { if (m_CurrentLevel == 1) { level = diff --git a/src/game/Game/ProjectileSystem.cpp b/src/game/Game/ProjectileSystem.cpp index 01b8ad6..b5d7e07 100644 --- a/src/game/Game/ProjectileSystem.cpp +++ b/src/game/Game/ProjectileSystem.cpp @@ -139,27 +139,7 @@ bool dd::Systems::ProjectileSystem::OnActionButton(const dd::Events::ActionButto transform->Position = event.Position; transform->Velocity = glm::vec3(0, projectile->Speed, 0); m_Shots--; - Events::CreateParticleSequence e; - e.parent = ent; - e.EmitterLifeTime = 1.0; - e.EmittingAngle = glm::half_pi(); - e.Spread = 0.f; - e.SpawnRate = 0.2; - //e.NumberOfTicks = 1; - e.ParticleLifeTime = 0.5f; - e.ParticlesPerTick = 1; - e.Position = event.Position; - e.ScaleValues.clear(); - e.ScaleValues.push_back(glm::vec3(0.1f)); - e.RadiusDistribution = 0.3; - e.ScaleValues.push_back(glm::vec3(0.f, 0.f, 0.2f)); - e.SpriteFile = "Textures/Particles/FadeBall.png"; - e.Color = glm::vec4(0, 0, 0, 1); - e.AlphaValues.clear(); - e.AlphaValues.push_back(1.f); - e.AlphaValues.push_back(0.f); - e.Speed = 20.f; - EventBroker->Publish(e); + if (m_Shots <= 0) { auto ball = m_World->GetComponent(m_AttachedSquid); m_InkBlaster = false; diff --git a/src/game/Physics/PhysicsSystem.cpp b/src/game/Physics/PhysicsSystem.cpp index ce67687..1d59c9e 100755 --- a/src/game/Physics/PhysicsSystem.cpp +++ b/src/game/Physics/PhysicsSystem.cpp @@ -235,7 +235,12 @@ void dd::Systems::PhysicsSystem::Update(double dt) auto particle = m_World->GetComponent(entity); transform->Position = glm::vec3(position.x, position.y, transform->Position.z); - transform->Scale = particle->Scale;//glm::vec3(particle->Radius * 2.f, particle->Radius * 2.f, 1); + EntityID emitter = m_ParticleEmitters.ParticleEmitter[e]; + auto cEmitter = m_World->GetComponent(emitter); + if (!cEmitter->DefaultScale) + { + transform->Scale = particle->Scale; + } } } @@ -271,7 +276,7 @@ void dd::Systems::PhysicsSystem::UpdateEntity(double dt, EntityID entity, Entity m_World->RemoveEntity(entity); } } - //Update alpha + //Update alpha & scale auto sprite = m_World->GetComponent(entity); float timeProgress = particle->TimeLived / (particle->LifeTime - 0.1); if (timeProgress > 1) { @@ -280,7 +285,9 @@ void dd::Systems::PhysicsSystem::UpdateEntity(double dt, EntityID entity, Entity auto emitter = m_World->GetComponent(particle->ParticleSystem); if (emitter) { sprite->Color.w = ScalarInterpolation(timeProgress, emitter->AlphaValues); - particle->Scale = VectorInterpolation(timeProgress, emitter->ScaleValues); + if (!emitter->DefaultScale) { + particle->Scale = VectorInterpolation(timeProgress, emitter->ScaleValues); + } } } @@ -719,8 +726,9 @@ bool dd::Systems::PhysicsSystem::CreateParticleSequence(const Events::CreatePart particleEmitter->EmittingAngle = event.EmittingAngle; particleEmitter->LifeTime = event.EmitterLifeTime; particleEmitter->AlphaValues = event.AlphaValues; - particleEmitter->ScaleValues = event.ScaleValues; particleEmitter->RadiusDistribution = event.RadiusDistribution; + particleEmitter->DefaultScale = event.DefaultScale; + particleEmitter->ScaleValues = event.ScaleValues; { //Creating Particle Template auto particle = m_World->CreateEntity(emitter); @@ -730,10 +738,17 @@ bool dd::Systems::PhysicsSystem::CreateParticleSequence(const Events::CreatePart m_World->AddComponent(particle); particleTransform->Position = emitterTransform->Position; sprite->SpriteFile = event.SpriteFile; + if (particleEmitter->DefaultScale == true) + { + Texture* texture = ResourceManager::Load(event.SpriteFile); + particleEmitter->ScaleValues.clear(); + particleEmitter->ScaleValues.push_back(glm::vec3(texture->Width / 100, texture->Height / 100, 1)); + + } sprite->Color = event.Color; particleComponent->LifeTime = event.ParticleLifeTime; particleComponent->Flags = event.Flags; - particleComponent->Scale = event.ScaleValues[0]; + particleComponent->Scale = particleEmitter->ScaleValues[0]; particleComponent->ParticleSystem = emitter; } m_World->CommitEntity(emitter); @@ -834,8 +849,9 @@ bool dd::Systems::PhysicsSystem::OnContact(const dd::Events::Contact &event) e.Color = glm::vec4(1.f); e.AlphaValues.push_back(1.f); e.AlphaValues.push_back(0.f); - e.ScaleValues.push_back(glm::vec3(1.f)); + e.ScaleValues.push_back(glm::vec3(4)); e.Speed = 0; + e.DefaultScale = true; auto PowerFriend = m_World->GetComponent(entity); auto PowerSaviour = m_World->GetComponent(entity); @@ -860,6 +876,7 @@ bool dd::Systems::PhysicsSystem::OnContact(const dd::Events::Contact &event) e.SpriteFile = "Textures/PowerUps/RealeaseTheKraken.png"; } else { + e.DefaultScale = false; e.EmitterLifeTime = 4; e.EmittingAngle = glm::half_pi(); e.Spread = 0.5f; From fd569f7a529315ca4dfd280efccca13de870545c Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Thu, 22 Oct 2015 16:57:10 +0200 Subject: [PATCH 5/5] Fixed PadSystem --- include/Game/PadSystem.h | 25 +++---------- src/game/Game/LevelSystem.cpp | 2 +- src/game/Game/LifeSystem.cpp | 3 +- src/game/Game/PadSystem.cpp | 66 +++++++++++++++++------------------ 4 files changed, 40 insertions(+), 56 deletions(-) diff --git a/include/Game/PadSystem.h b/include/Game/PadSystem.h index 0e9f9cd..55ad678 100755 --- a/include/Game/PadSystem.h +++ b/include/Game/PadSystem.h @@ -72,29 +72,12 @@ public: void Update(double dt) override; void UpdateEntity(double dt, EntityID entity, EntityID parent) override; - EntityID& Entity() { return m_Entity; } - void SetEntity(const EntityID& ent) { m_Entity = ent; } - glm::vec3 Acceleration() const { return m_Acceleration; } - void SetAcceleration(const glm::vec3& acceleration) { m_Acceleration = acceleration; } - - bool Left() const { return m_Left; } - void SetLeft(const bool& left) { m_Left = left; } - bool Right() const { return m_Right; } - void SetRight(const bool& right) { m_Right = right; } - float Edge() const { return m_Edge; } - void SetEdge(const float& edge) { m_Edge = edge; } - - Components::Transform* Transform() const { return m_Transform; } - void SetTransform(Components::Transform* transform) { m_Transform = transform; } - Components::Pad* Pad() const { return m_Pad; } - void SetPad(Components::Pad* pad) { m_Pad = pad; } - bool IsPaused() const { return m_Pause; } void SetPause(const bool& pause) { m_Pause = pause; } private: - EntityID m_Entity = 0; - glm::vec3 m_Acceleration = glm::vec3(0.f, 0.f, 0.f); + EntityID m_PadEntity = 0; + glm::vec3 m_PadAcceleration = glm::vec3(0.f, 0.f, 0.f); bool m_Left = false; bool m_Right = false; bool m_ReplaceBall = false; @@ -110,8 +93,8 @@ private: EntityID m_KrakenArm = NULL; EntityID m_KrakenArmHitbox = NULL; float m_PadRiseSpeed = 0.2; - Components::Transform* m_Transform = nullptr; - Components::Pad* m_Pad = nullptr; + Components::Transform* m_PadTransform = nullptr; + Components::Pad* m_PadComponent = nullptr; std::shared_ptr m_StickTransform; std::shared_ptr m_StickyAim; diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index 489b3ab..80df1b0 100755 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -329,7 +329,7 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID auto ball = m_World->GetComponent(entity); - if (NumberOfBricks() <= 0 && m_LooseBricks <= 0 && !Restarting()) { + if (NumberOfBricks() <= 0 && m_LooseBricks <= 0 && !Restarting() && !m_Cleared) { if (MultiBalls() <= 0 && PowerUps() <= 0) { Events::StageCleared ec; ec.ClearedStage = m_CurrentLevel; diff --git a/src/game/Game/LifeSystem.cpp b/src/game/Game/LifeSystem.cpp index 703a965..c1262ac 100644 --- a/src/game/Game/LifeSystem.cpp +++ b/src/game/Game/LifeSystem.cpp @@ -85,7 +85,8 @@ void dd::Systems::LifeSystem::CreateLife(int number) transform->Position = glm::vec3(-1.5f + number * 0.15f, -2.f, -5.f); //transform->Position = glm::vec3(-1.5f + number * 1.5f, -3.f, -10.f); transform->Scale = glm::vec3(0.1f, 0.1f, 0.1f); - //transform->Scale = glm::vec3(0.2f, 0.2f, 0.2f); + /*transform->Scale = glm::vec3(0.2f, 0.2f, 0.2f); + transform->Velocity.x = m_LifeSpeed;*/ std::shared_ptr lifeNr = m_World->AddComponent(life); lifeNr->Number = number; diff --git a/src/game/Game/PadSystem.cpp b/src/game/Game/PadSystem.cpp index 3b3048c..7e7b51c 100755 --- a/src/game/Game/PadSystem.cpp +++ b/src/game/Game/PadSystem.cpp @@ -58,7 +58,7 @@ void dd::Systems::PadSystem::Initialize() auto pad = m_World->AddComponent(ent); m_World->CommitEntity(ent); - SetEdge(3.2 - (ctransform->Scale.x / 2)); + m_Edge = 3.2 - (ctransform->Scale.x / 2); } //Stick @@ -110,7 +110,7 @@ void dd::Systems::PadSystem::UpdateEntity(double dt, EntityID entity, EntityID p m_ResetBall = false; } auto ballTransform = m_World->GetComponent(entity); - ballTransform->Position = Transform()->Position; + ballTransform->Position = m_PadTransform->Position; ballTransform->Position += ball->StickyPlacement; glm::vec2 dir = glm::normalize(glm::vec2(ball->SavedSpeed.x, ball->SavedSpeed.y)); glm::vec2 up = glm::vec2(0.f, 1.f); @@ -133,12 +133,12 @@ void dd::Systems::PadSystem::Update(double dt) return; } - if (Entity() == 0) { + if (m_PadEntity == 0) { for (auto it = m_World->GetEntities()->begin(); it != m_World->GetEntities()->end(); it++) { if (m_World->GetProperty(it->first, "Name") == "Pad") { - SetEntity(it->first); - SetTransform(m_World->GetComponent(Entity())); - SetPad(m_World->GetComponent(Entity())); + m_PadEntity = it->first; + m_PadTransform = m_World->GetComponent(m_PadEntity); + m_PadComponent = m_World->GetComponent(m_PadEntity); break; } } @@ -155,9 +155,9 @@ void dd::Systems::PadSystem::Update(double dt) return; } - auto transform = Transform(); - auto pad = Pad(); - auto acceleration = Acceleration(); + auto transform = m_PadTransform; + auto pad = m_PadComponent; + auto acceleration = m_PadAcceleration; if (glm::abs(transform->Position.y - m_PadHeight) > m_PadRiseSpeed) { if (transform->Position.y < m_PadHeight) { @@ -173,27 +173,27 @@ void dd::Systems::PadSystem::Update(double dt) transform->Velocity.x = pad->MaxSpeed; } transform->Position += transform->Velocity * (float)dt; - if (transform->Position.x > Edge()) { - transform->Position.x = Edge(); - } else if (transform->Position.x < -Edge()) { - transform->Position.x = -Edge(); + if (transform->Position.x > m_Edge) { + transform->Position.x = m_Edge; + } else if (transform->Position.x < -m_Edge) { + transform->Position.x = -m_Edge; } - transform->Velocity += acceleration * (float)dt; - if (glm::abs(transform->Velocity.x) > 1 || (!Left() && !Right())) { + transform->Velocity += acceleration * (float)dt; + if (glm::abs(transform->Velocity.x) > 1 || (!m_Left && !m_Right)) { transform->Velocity -= transform->Velocity * pad->SlowdownModifier * (float) dt; } - if (Left()) { + if (m_Left) { acceleration.x = -pad->AccelerationSpeed; - } else if (Right()) { + } else if (m_Right) { acceleration.x = pad->AccelerationSpeed; } else { acceleration.x = 0.f; } - SetTransform(transform); - SetPad(pad); - SetAcceleration(acceleration); + m_PadTransform = transform; + m_PadComponent = pad; + m_PadAcceleration = acceleration; return; } @@ -227,11 +227,11 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) { } else if (val == GLFW_KEY_LEFT) { //std::cout << "Left!" << std::endl; //acceleration.x = -0.01f; - SetLeft(true); + m_Left = true; } else if (val == GLFW_KEY_RIGHT) { //std::cout << "Right!" << std::endl; //acceleration.x = 0.01f; - SetRight(true); + m_Right = true; } else if (val == GLFW_KEY_R) { Events::ResetBall e; EventBroker->Publish(e); @@ -250,7 +250,7 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) { EventBroker->Publish(e); } else if (val == GLFW_KEY_M) { Events::MultiBall e; - e.padTransform = Transform(); + e.padTransform = m_PadTransform; EventBroker->Publish(e); } else if (val == GLFW_KEY_P) { if (IsPaused()) { @@ -284,7 +284,7 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) { EventBroker->Publish(e); } else if (val == GLFW_KEY_L) { Events::Lifebuoy e; - e.Transform = Transform(); + e.Transform = m_PadTransform; EventBroker->Publish(e); } else if (val == GLFW_KEY_Y) { Events::StickyPad e; @@ -303,14 +303,14 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) { EventBroker->Publish(e); } else if (val == GLFW_KEY_Q) { Events::Move e; - e.Entity = Entity(); + e.Entity = m_PadEntity; e.GoalPosition = glm::vec3(0, 0, -10); e.Speed = 5; e.Queue = false; EventBroker->Publish(e); } else if (val == GLFW_KEY_SPACE) { Events::ActionButton e; - e.Position = Transform()->Position; + e.Position = m_PadTransform->Position; EventBroker->Publish(e); } else if (val == GLFW_KEY_D) { return false; @@ -326,9 +326,9 @@ bool dd::Systems::PadSystem::OnKeyUp(const dd::Events::KeyUp &event) } else if (val == GLFW_KEY_DOWN) { } else if (val == GLFW_KEY_LEFT) { - SetLeft(false); + m_Left = false; } else if (val == GLFW_KEY_RIGHT) { - SetRight(false); + m_Right = false; } return true; } @@ -471,15 +471,15 @@ bool dd::Systems::PadSystem::OnKrakenAttack(const dd::Events::KrakenAttack &even m_PlayerStrength = event.PlayerStrength; m_KrakenCharge = event.ChargeUpdate; m_KrakenAttack = true; - auto transform = Transform(); - auto acceleration = Acceleration(); + auto transform = m_PadTransform; + auto acceleration = m_PadAcceleration; transform->Velocity = glm::vec3(0, 0, 0); acceleration = glm::vec3(0, 0, 0); LOG_INFO("Kraken arm duuude"); if (!m_KrakenArm){ LOG_INFO("InKrakenArmDuuude"); - m_KrakenArm = m_World->CreateEntity(Entity()); + m_KrakenArm = m_World->CreateEntity(m_PadEntity); auto transform = m_World->AddComponent(m_KrakenArm); transform->Position = glm::vec3(1.f, -3.0f, 0.f); auto model = m_World->AddComponent(m_KrakenArm); @@ -508,8 +508,8 @@ bool dd::Systems::PadSystem::OnKrakenAttack(const dd::Events::KrakenAttack &even m_World->CommitEntity(m_KrakenArmHitbox); } - SetTransform(transform); - SetAcceleration(acceleration); + m_PadTransform = transform; + m_PadAcceleration = acceleration; } else if (m_KrakenCharge >= 1) { m_KrakenAttack = false; Events::KrakenAttackEnd e;