diff --git a/include/Game/KrakenSystem.h b/include/Game/KrakenSystem.h index a806fba..ae35209 100644 --- a/include/Game/KrakenSystem.h +++ b/include/Game/KrakenSystem.h @@ -98,6 +98,7 @@ private: bool OnBrickGenerating(const dd::Events::BrickGenerating &event); bool OnArrivedAtNewStage(const dd::Events::ArrivedAtNewStage &event); void GetBrickSet(); + void CreateBloodEffect(glm::vec3); }; } diff --git a/src/game/Game/KrakenSystem.cpp b/src/game/Game/KrakenSystem.cpp index a07cd48..e0a9aad 100644 --- a/src/game/Game/KrakenSystem.cpp +++ b/src/game/Game/KrakenSystem.cpp @@ -118,51 +118,51 @@ void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityI krakenAttack.PlayerStrength = 0.05; EventBroker->Publish(krakenAttack); break; - case 3: // Brick Generating - { - m_NumberOfActions++; - kraken->CurrentAction = 1; - Events::BrickGenerating e; - e.Origin1 = glm::vec3(-5, 7, -10); - e.Origin2 = glm::vec3(5, 7, -10); - if (kraken->Health > 20) { - e.SetCluster = 0; - } else if (kraken->Health > 10) { - e.SetCluster = 1; - } else { - e.SetCluster = 2; - } - std::uniform_real_distribution dist(1, 6.999f); - float random = dist(m_RandomGenerator); - e.Set = random; - EventBroker->Publish(e); - break; - } - case 4: // Brick Generating second case - { - kraken->CurrentAction = 1; - Events::BrickGenerating e; - e.Origin1 = glm::vec3(-5, 7, -10); - e.Origin2 = glm::vec3(5, 7, -10); - if (kraken->Health > 20) { - e.SetCluster = 0; - } else if (kraken->Health > 10) { - e.SetCluster = 1; - } else { - e.SetCluster = 2; - } - std::uniform_real_distribution dist(1, 6.999f); - float random = dist(m_RandomGenerator); - e.Set = random; - EventBroker->Publish(e); - break; - } - case 5: // Taunting - if (m_ReturnToIdle) { - m_ReturnToIdle = false; - kraken->CurrentAction = Idle; - } - break; +// case 3: // Brick Generating +// { +// m_NumberOfActions++; +// kraken->CurrentAction = 1; +// Events::BrickGenerating e; +// e.Origin1 = glm::vec3(-5, 7, -10); +// e.Origin2 = glm::vec3(5, 7, -10); +// if (kraken->Health > 20) { +// e.SetCluster = 0; +// } else if (kraken->Health > 10) { +// e.SetCluster = 1; +// } else { +// e.SetCluster = 2; +// } +// std::uniform_real_distribution dist(1, 6.999f); +// float random = dist(m_RandomGenerator); +// e.Set = random; +// EventBroker->Publish(e); +// break; +// } +// case 4: // Brick Generating second case +// { +// kraken->CurrentAction = 1; +// Events::BrickGenerating e; +// e.Origin1 = glm::vec3(-5, 7, -10); +// e.Origin2 = glm::vec3(5, 7, -10); +// if (kraken->Health > 20) { +// e.SetCluster = 0; +// } else if (kraken->Health > 10) { +// e.SetCluster = 1; +// } else { +// e.SetCluster = 2; +// } +// std::uniform_real_distribution dist(1, 6.999f); +// float random = dist(m_RandomGenerator); +// e.Set = random; +// EventBroker->Publish(e); +// break; +// } +// case 5: // Taunting +// if (m_ReturnToIdle) { +// m_ReturnToIdle = false; +// kraken->CurrentAction = Idle; +// } +// break; default: //LOG_INFO("Something's probably off about the random number generator."); break; @@ -291,45 +291,27 @@ bool dd::Systems::KrakenSystem::OnKrakenHit(const dd::Events::KrakenHit &event) auto ball = m_World->GetComponent(event.Hitter); if (ball != nullptr) { - //Particle trail - Events::CreateParticleSequence trail; - trail.parent = event.Hitter; - 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 = 2; - trail.EmitterLifeTime = 1.f; - trail.ParticleLifeTime = 1.f; - trail.ParticlesPerTick = 1; - trail.SpawnRate = 0.5f; - trail.Speed = 10.f; - trail.EmittingAngle = glm::half_pi(); - trail.SpriteFile = "Textures/Particles/FadeBall.png"; - trail.Color = glm::vec4(1, 0, 0, 1); - //p.Spread = ... - EventBroker->Publish(trail); +// //Particle trail +// Events::CreateParticleSequence trail; +// trail.parent = event.Hitter; +// 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 = 2; +// trail.EmitterLifeTime = 1.f; +// trail.ParticleLifeTime = 1.f; +// trail.ParticlesPerTick = 1; +// trail.SpawnRate = 0.5f; +// trail.Speed = 10.f; +// trail.EmittingAngle = glm::half_pi(); +// trail.SpriteFile = "Textures/Particles/FadeBall.png"; +// trail.Color = glm::vec4(1, 0, 0, 1); +// //p.Spread = ... +// EventBroker->Publish(trail); } - //ParticlePoof - Events::CreateParticleSequence poof; - poof.EmitterLifeTime = 4; - poof.EmittingAngle = glm::half_pi(); - poof.Spread = 0.5f; - poof.NumberOfTicks = 1; - poof.ParticleLifeTime = 1.5f; - poof.ParticlesPerTick = 2; - poof.Position = transform->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 = glm::vec4(1, 0, 0, 1); - poof.AlphaValues.clear(); - poof.AlphaValues.push_back(1.f); - poof.AlphaValues.push_back(0.f); - poof.Speed = 20; - EventBroker->Publish(poof); + CreateBloodEffect(transform->Position); //std::cout << kraken->Health << std::endl; //kraken->Health = -1; @@ -437,4 +419,65 @@ bool dd::Systems::KrakenSystem::OnArrivedAtNewStage(const dd::Events::ArrivedAtN m_KrakenHasArrived = true; } return true; +} + +void dd::Systems::KrakenSystem::CreateBloodEffect(glm::vec3 pos) +{ + //ParticlePoof + Events::CreateParticleSequence dust; + dust.EmitterLifeTime = 4; + dust.EmittingAngle = glm::half_pi(); + dust.Spread = 0.5f; + dust.NumberOfTicks = 1; + dust.ParticleLifeTime = 2.f; + dust.ParticlesPerTick = 1; + dust.Position = pos; + dust.ScaleValues.clear(); + dust.ScaleValues.push_back(glm::vec3(0.5f)); + dust.ScaleValues.push_back(glm::vec3(2.f, 2.f, 0.2f)); + dust.SpriteFile = "Textures/Particles/Cloud_Particle.png"; + dust.Color = glm::vec4(1, 0, 0, 1); + dust.AlphaValues.clear(); + dust.AlphaValues.push_back(1.f); + dust.AlphaValues.push_back(0.f); + dust.Speed = 20; + EventBroker->Publish(dust); + std::uniform_real_distribution dist(glm::pi(), glm::two_pi()); + for (int i = 0; i < 3; i++) { + float angle = dist(m_RandomGenerator); + + Events::CreateParticleSequence squirt; + squirt.EmitterLifeTime = 0.5f; + squirt.EmittingAngle = angle; + squirt.Spread = 0; + squirt.SpawnRate = 0.01f; + squirt.ParticleLifeTime = 0.5f; + squirt.ParticlesPerTick = 1; + squirt.Position = pos; + squirt.ScaleValues.clear(); + squirt.ScaleValues.push_back(glm::vec3(0.09f)); + squirt.SpriteFile = "Textures/Particles/FadeBall.png"; + squirt.Color = glm::vec4(1, 0, 0, 1); + squirt.AlphaValues.clear(); + squirt.AlphaValues.push_back(1.f); + squirt.AlphaValues.push_back(0.f); + squirt.Speed = 1000; + EventBroker->Publish(squirt); + } + Events::CreateParticleSequence drop; + drop.EmitterLifeTime = 0.5f; + drop.EmittingAngle = glm::two_pi() + glm::pi(); + drop.Spread = glm::two_pi(); + drop.ParticleLifeTime = 0.5f; + drop.ParticlesPerTick = 5; + drop.Position = pos; + drop.ScaleValues.clear(); + drop.ScaleValues.push_back(glm::vec3(0.2f)); + drop.SpriteFile = "Textures/Particles/FadeBall.png"; + drop.Color = glm::vec4(1, 0, 0, 1); + drop.AlphaValues.clear(); + drop.AlphaValues.push_back(1.f); + drop.AlphaValues.push_back(0.f); + drop.Speed = 100; + EventBroker->Publish(drop); } \ No newline at end of file