From fa5cb379abf289aae5da9523fbb8829adfc660bf Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Fri, 23 Oct 2015 15:12:28 +0200 Subject: [PATCH 1/4] Skill-Kraken implemented. What do people think...? --- include/Game/CKraken.h | 2 +- include/Game/EBrickGenerating.h | 1 + include/Game/KrakenSystem.h | 4 + include/Game/LevelSystem.h | 8 +- include/Game/PadSystem.h | 1 + src/game/Game/KrakenSystem.cpp | 71 ++++++++++----- src/game/Game/LevelSystem.cpp | 154 ++++++++++++++++++-------------- src/game/Game/PadSystem.cpp | 4 + src/game/Game/WaterSystem.cpp | 2 +- 9 files changed, 155 insertions(+), 92 deletions(-) diff --git a/include/Game/CKraken.h b/include/Game/CKraken.h index e2dea50..eee9e18 100644 --- a/include/Game/CKraken.h +++ b/include/Game/CKraken.h @@ -15,7 +15,7 @@ namespace Components struct Kraken : Component { - int MaxHealth = 30; + int MaxHealth = 18; int Health = MaxHealth; int CurrentAction = 3; float RetreatSpeed = 0.2; diff --git a/include/Game/EBrickGenerating.h b/include/Game/EBrickGenerating.h index 47a723c..27fd37d 100644 --- a/include/Game/EBrickGenerating.h +++ b/include/Game/EBrickGenerating.h @@ -20,6 +20,7 @@ struct BrickGenerating : Event int TargetLine; int Set; int SetCluster; + int Speed = 6; }; } diff --git a/include/Game/KrakenSystem.h b/include/Game/KrakenSystem.h index a806fba..2c2a16e 100644 --- a/include/Game/KrakenSystem.h +++ b/include/Game/KrakenSystem.h @@ -67,6 +67,7 @@ private: bool m_KrakenBattle = false; bool m_KrakenHasArrived = false; bool m_ReturnToIdle = false; + bool m_RandomKraken = false; EntityID m_KrakenTemplate; std::string m_Action = "Idle"; int m_NumberOfActions; @@ -76,6 +77,9 @@ private: float m_KrakenCurrentSecondsToAction = 15; const int Idle = 1; + int m_Set = 0; + int m_SetCluster = 0; + std::array m_Bricks; std::array m_Colors; diff --git a/include/Game/LevelSystem.h b/include/Game/LevelSystem.h index 901a8b7..20df7d4 100755 --- a/include/Game/LevelSystem.h +++ b/include/Game/LevelSystem.h @@ -59,6 +59,7 @@ #include "Game/EKrakenAppear.h" #include "Game/EKrakenDefeated.h" #include "Game/EBrickGenerating.h" +#include "Game/EBreakAllBricks.h" #include "Physics/CPhysics.h" #include "Physics/CCircleShape.h" @@ -101,7 +102,7 @@ public: void CreateBasicLevel(int, int, glm::vec2, float); void CreateLevel(int); EntityID CreateBrick(int, int, glm::vec2, float, int, int, int, glm::vec4); - void BrickHit(EntityID, EntityID, int); + void BrickHit(EntityID, EntityID, int, bool); void OnEntityRemoved(EntityID entity); @@ -145,7 +146,7 @@ private: bool m_Pause = false; int m_LooseBricks = 0; int m_CurrentCluster = 1; - int m_CurrentLevel = 1; + int m_CurrentLevel = 6; int m_MultiBalls = 0; int m_PowerUps = 0; int m_Score = 0; @@ -180,6 +181,7 @@ private: bool m_BrickGenerating = false; dd::Events::BrickGenerating m_BrickGeneratingEvent; + bool m_KrakenBattle = false; bool m_BreakAllBricks = false; dd::EventRelay m_EContact; @@ -194,6 +196,7 @@ private: dd::EventRelay m_EResume; dd::EventRelay m_EHitPad; dd::EventRelay m_EBrickGenerating; + dd::EventRelay m_EBreakAllBricks; dd::EventRelay m_EKrakenDefeated; bool OnContact(const dd::Events::Contact &event); @@ -209,6 +212,7 @@ private: bool OnHitPad(const dd::Events::HitPad &event); bool OnBrickGenerating(const dd::Events::BrickGenerating &event); bool BrickGenerating(const dd::Events::BrickGenerating &event); + bool OnBreakAllBricks(const dd::Events::BreakAllBricks &event); void GetBrickSet(int Set, int SetCluster); bool OnKrakenDefeated(const dd::Events::KrakenDefeated &event); diff --git a/include/Game/PadSystem.h b/include/Game/PadSystem.h index 0148430..3266397 100755 --- a/include/Game/PadSystem.h +++ b/include/Game/PadSystem.h @@ -54,6 +54,7 @@ #include "Rendering/CAnimation.h" #include "Game/EBrickGenerating.h" +#include "Game/EBreakAllBricks.h" namespace dd diff --git a/src/game/Game/KrakenSystem.cpp b/src/game/Game/KrakenSystem.cpp index a07cd48..2fcdd50 100644 --- a/src/game/Game/KrakenSystem.cpp +++ b/src/game/Game/KrakenSystem.cpp @@ -93,12 +93,14 @@ void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityI return; } Events::KrakenAttack krakenAttack; - switch (kraken->CurrentAction) - { + switch (kraken->CurrentAction) { case 1: // Idle - m_KrakenTimer += dt; + if (m_RandomKraken) { + m_KrakenTimer += dt; + } if (m_KrakenTimer > m_KrakenCurrentSecondsToAction) { m_KrakenTimer = 0; + kraken->CurrentAction = 3; if (m_NumberOfActions == 0) { kraken->CurrentAction = 3; } else { @@ -112,11 +114,12 @@ void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityI break; case 2: // Grabbing m_NumberOfActions++; - kraken->CurrentAction = 5; - krakenAttack.ChargeUpdate = 0; + kraken->CurrentAction = 3; + /*krakenAttack.ChargeUpdate = 0; krakenAttack.KrakenStrength = 0.1; krakenAttack.PlayerStrength = 0.05; - EventBroker->Publish(krakenAttack); + EventBroker->Publish(krakenAttack);*/ + break; case 3: // Brick Generating { @@ -125,35 +128,60 @@ void dd::Systems::KrakenSystem::UpdateEntity(double dt, EntityID entity, EntityI Events::BrickGenerating e; e.Origin1 = glm::vec3(-5, 7, -10); e.Origin2 = glm::vec3(5, 7, -10); - if (kraken->Health > 20) { + e.Speed = 10; + if (m_RandomKraken) { + if (kraken->Health > 20) { e.SetCluster = 0; - } else if (kraken->Health > 10) { + } else if (kraken->Health > 10) { e.SetCluster = 1; - } else { + } else { e.SetCluster = 2; + } + std::uniform_real_distribution dist(1, 6.999f); + float random = dist(m_RandomGenerator); + e.Set = random; + } else { + e.Set = m_Set; + e.SetCluster = m_SetCluster; + m_Set++; + if (m_Set > 6) { + m_SetCluster++; + m_Set = 1; + } } - 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 { + 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; + e.Speed = 10; + if (m_RandomKraken) { + 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; } else { - e.SetCluster = 2; + e.Set = m_Set; + e.SetCluster = m_SetCluster; + m_Set++; + if (m_Set > 6) { + m_SetCluster++; + m_Set = 1; + } } - std::uniform_real_distribution dist(1, 6.999f); - float random = dist(m_RandomGenerator); - e.Set = random; + EventBroker->Publish(e); break; } @@ -277,6 +305,7 @@ bool dd::Systems::KrakenSystem::OnKrakenHit(const dd::Events::KrakenHit &event) auto kraken = m_World->GetComponent(event.Kraken); auto transform = m_World->GetComponent(event.Hitter); kraken->Health--; + kraken->CurrentAction = 3; //kraken->Health -= 15; //kraken->Health = -1; //To defeat the kraken instantly. @@ -345,6 +374,8 @@ bool dd::Systems::KrakenSystem::OnKrakenHit(const dd::Events::KrakenHit &event) bool dd::Systems::KrakenSystem::OnKrakenDefeated(const dd::Events::KrakenDefeated &event) { m_KrakenBattle = false; + m_Set = 0; + m_SetCluster = 0; auto kraken = m_World->GetComponent(event.Kraken); auto physicsComponent = m_World->GetComponent(event.Kraken); diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index be38ca1..8ce9b95 100755 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -23,6 +23,7 @@ void dd::Systems::LevelSystem::Initialize() EVENT_SUBSCRIBE_MEMBER(m_EResume, &LevelSystem::OnResume); EVENT_SUBSCRIBE_MEMBER(m_EHitPad, &LevelSystem::OnHitPad); EVENT_SUBSCRIBE_MEMBER(m_EBrickGenerating, &LevelSystem::OnBrickGenerating); + EVENT_SUBSCRIBE_MEMBER(m_EBreakAllBricks, &LevelSystem::OnBreakAllBricks); EVENT_SUBSCRIBE_MEMBER(m_EKrakenDefeated, &LevelSystem::OnKrakenDefeated); m_GodMode = ResourceManager::Load("Config.ini")->GetValue("Cheat.GodMode", false); @@ -279,12 +280,18 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID } } + if (m_BreakAllBricks) { + if (m_LooseBricks == 1 && m_KrakenBattle) { + m_BreakAllBricks = false; + } + } + auto brick = m_World->GetComponent(entity); if (brick != nullptr) { if (m_BreakAllBricks) { if (!brick->Removed) { brick->Removed = true; - BrickHit(entity, entity, 1); + BrickHit(entity, entity, 0, false); } } @@ -336,7 +343,7 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID auto ball = m_World->GetComponent(entity); if (ball != nullptr) { - if (m_BrickGenerating) { + if (m_BrickGenerating && !m_BreakAllBricks) { auto transform = m_World->GetComponent(entity); if (transform->Position.y < 0 && transform->Velocity.y < 0) { m_BrickGenerating = false; @@ -477,6 +484,7 @@ EntityID dd::Systems::LevelSystem::CreateBrick(int row, int line, glm::vec2 spac model->ModelFile = "Models/Brick/KrakenBrick.obj"; } else if (typeInt == Kraken) { + m_KrakenBattle = true; Events::KrakenAppear e; e.Position = transform->Position; e.Health = 10; @@ -491,6 +499,7 @@ EntityID dd::Systems::LevelSystem::CreateBrick(int row, int line, glm::vec2 spac bool dd::Systems::LevelSystem::OnBrickGenerating(const dd::Events::BrickGenerating &event) { + m_BreakAllBricks = true; m_BrickGenerating = true; m_BrickGeneratingEvent = event; return true; @@ -523,7 +532,7 @@ bool dd::Systems::LevelSystem::BrickGenerating(const dd::Events::BrickGenerating } brick->GenerationGoal = e.GoalPosition; e.Entity = ent; - e.Speed = 6; + e.Speed = event.Speed; e.Queue = false; EventBroker->Publish(e); m_LooseBricks++; @@ -536,6 +545,12 @@ bool dd::Systems::LevelSystem::BrickGenerating(const dd::Events::BrickGenerating return true; } +bool dd::Systems::LevelSystem::OnBreakAllBricks(const dd::Events::BreakAllBricks &event) +{ + m_BreakAllBricks = true; + return true; +} + void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are sets the Kraken gets! { std::array level; @@ -587,10 +602,10 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 2) { level = // The Audience {0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, - 1, 0, 0, 0, 0, 0, 1, - 1, 0, 0, 0, 0, 0, 1, + 1, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0 }; color = {y, y, y, y, y, y, y, @@ -604,8 +619,8 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 1, 0, - 1, 1, 1, 0, 1, 1, 1, + 0, 3, 0, 0, 0, 1, 0, + 1, 1, 6, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }; color = {b, b, b, b, b, b, b, @@ -617,11 +632,11 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 4) { level = // The Scales (right) {1, 1, 1, 0, 0, 0, 0, - 1, 1, 1, 0, 0, 0, 0, + 1, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 1, 1, 1 }; + 0, 0, 0, 0, 1, 4, 1 }; color = {m, m, m, m, m, m, m, m, m, m, m, m, m, m, @@ -632,11 +647,11 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 5) { level = // The Scales (left) {0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, - 1, 1, 1, 0, 0, 0, 0 }; + 1, 6, 1, 0, 0, 0, 0 }; color = {g, g, g, g, g, g, g, g, g, g, g, g, g, g, @@ -647,7 +662,7 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 6) { level = // The Sword {0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 1, 1, 0, 0, + 0, 0, 6, 2, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, @@ -665,8 +680,8 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are level = // The Wall {1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, - 1, 0, 0, 0, 0, 0, 1, - 1, 1, 1, 1, 1, 1, 2, + 6, 0, 0, 0, 0, 0, 6, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }; color = @@ -680,7 +695,7 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are level = // The Checkerboard {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 1, 0, 1, 0, 1, + 3, 0, 1, 0, 6, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0 }; @@ -695,7 +710,7 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are level = // The Fighter Jet {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 1, 0, 1, + 6, 0, 1, 0, 1, 0, 6, 0, 1, 1, 1, 1, 1, 0, 0, 0, 4, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 }; @@ -709,9 +724,9 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 4) { level = // The Formation {0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 3, 1, + 1, 1, 4, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, + 1, 1, 6, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; color = @@ -725,9 +740,9 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are level = // The Pillars {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, - 0, 1, 2, 0, 1, 1, 0, - 0, 1, 1, 0, 1, 1, 0, + 0, 6, 1, 0, 1, 6, 0, 0, 1, 1, 0, 1, 1, 0, + 0, 1, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; color = {g, g, g, g, g, g, g, @@ -740,8 +755,8 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are level = // The Treasure Chest {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, - 0, 1, 1, 5, 1, 1, 0, - 0, 0, 1, 1, 1, 0, 0, + 0, 1, 1, 2, 1, 1, 0, + 0, 0, 1, 6, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; color = @@ -755,11 +770,11 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (setCluster == 2) { if (set == 1) { level = // The Butterfly - {1, 0, 0, 1, 0, 0, 1, - 1, 1, 0, 1, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, + {4, 0, 0, 1, 0, 0, 1, + 1, 6, 0, 1, 0, 6, 1, + 1, 1, 1, 6, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, - 1, 0, 0, 2, 0, 0, 1, + 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 3 }; color = {r, r, r, r, r, r, r, @@ -771,7 +786,7 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 2) { level = // The Cross {1, 1, 0, 0, 0, 1, 1, - 0, 4, 1, 0, 1, 1, 0, + 0, 4, 1, 0, 1, 6, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, @@ -785,11 +800,11 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are y, y, y, y, y, y, y }; } else if (set == 3) { level = // The Inverted Cross - {0, 0, 1, 6, 1, 0, 0, - 1, 0, 0, 1, 0, 0, 1, - 1, 1, 0, 0, 0, 1, 3, + {0, 0, 1, 1, 1, 0, 0, + 1, 0, 0, 6, 0, 0, 1, + 4, 1, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 1, 1, - 1, 0, 0, 1, 0, 0, 1, + 1, 0, 0, 6, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0 }; color = {b, b, b, b, b, b, b, @@ -801,11 +816,11 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 4) { level = // The Great Wall {1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, + 1, 1, 6, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 5, 1, + 1, 6, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 3, 1, 1, 1, 1, 1 }; + 1, 3, 1, 1, 1, 1, 5 }; color = {m, m, m, m, m, m, m, m, m, m, m, m, m, m, @@ -816,10 +831,10 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are } else if (set == 5) { level = // The Champion {0, 0, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 2, 0, 0, + 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, - 5, 1, 1, 0, 1, 1, 1, + 3, 6, 1, 0, 1, 6, 1, 1, 1, 1, 0, 1, 1, 1 }; color = {g, g, g, g, g, g, g, @@ -830,10 +845,10 @@ void dd::Systems::LevelSystem::GetBrickSet(int set, int setCluster) // These are g, g, g, g, g, g, g }; } else if (set == 6) { level = // The Dog. What, you can't see it? XD - {0, 1, 1, 1, 1, 1, 0, - 1, 1, 2, 1, 2, 1, 1, + {0, 1, 1, 6, 1, 1, 0, + 1, 1, 4, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 1, 1, 1, 0, 1, + 6, 0, 1, 1, 1, 0, 6, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 3, 0, 0, 0 }; color = @@ -912,7 +927,7 @@ bool dd::Systems::LevelSystem::OnContact(const dd::Events::Contact &event) // For when a brick gets shot. brick->Removed = true; m_World->RemoveEntity(entityShot); - BrickHit(entityShot, entityBrick, 1); + BrickHit(entityShot, entityBrick, 1, true); //ep.Radius = 0.05; return true; @@ -928,13 +943,13 @@ bool dd::Systems::LevelSystem::OnContact(const dd::Events::Contact &event) ec.Ball = entityBall; EventBroker->Publish(ec); - BrickHit(entityBall, entityBrick, ball->Combo); + BrickHit(entityBall, entityBrick, ball->Combo, true); } return true; } -void dd::Systems::LevelSystem::BrickHit(EntityID entityHitter, EntityID entityBrick, int combo) +void dd::Systems::LevelSystem::BrickHit(EntityID entityHitter, EntityID entityBrick, int combo, bool activatePowerUps) { auto brick = m_World->GetComponent(entityBrick); auto physicsComponent = m_World->GetComponent(entityBrick); @@ -951,47 +966,49 @@ void dd::Systems::LevelSystem::BrickHit(EntityID entityHitter, EntityID entityBr } // Check if the brick is any kind of special. - auto multi = m_World->GetComponent(entityBrick); - if (multi != nullptr) { - Events::MultiBall e; - e.padTransform = transformComponentBrick; - EventBroker->Publish(e); - } - else { - auto buoy = m_World->GetComponent(entityBrick); - if (buoy != nullptr) { - Events::Lifebuoy e; - e.Transform = transformComponentBrick; + if (activatePowerUps) { + auto multi = m_World->GetComponent(entityBrick); + if (multi != nullptr) { + Events::MultiBall e; + e.padTransform = transformComponentBrick; EventBroker->Publish(e); } else { - auto sticky = m_World->GetComponent(entityBrick); - if (sticky != nullptr) { - Events::StickyPad e; + auto buoy = m_World->GetComponent(entityBrick); + if (buoy != nullptr) { + Events::Lifebuoy e; e.Transform = transformComponentBrick; - e.Times = 3; EventBroker->Publish(e); } else { - auto ink = m_World->GetComponent(entityBrick); - if (ink != nullptr) { - Events::InkBlaster e; + auto sticky = m_World->GetComponent(entityBrick); + if (sticky != nullptr) { + Events::StickyPad e; e.Transform = transformComponentBrick; - e.Shots = 5; - e.Speed = 7; + e.Times = 3; EventBroker->Publish(e); } else { - auto kraken = m_World->GetComponent(entityBrick); - if (kraken != nullptr) { - Events::KrakenAttack e; - e.ChargeUpdate = 0; - e.KrakenStrength = 0.1; - e.PlayerStrength = 0.05; + auto ink = m_World->GetComponent(entityBrick); + if (ink != nullptr) { + Events::InkBlaster e; + e.Transform = transformComponentBrick; + e.Shots = 5; + e.Speed = 7; EventBroker->Publish(e); } else { + auto kraken = m_World->GetComponent(entityBrick); + if (kraken != nullptr) { + Events::KrakenAttack e; + e.ChargeUpdate = 0; + e.KrakenStrength = 0.1; + e.PlayerStrength = 0.05; + EventBroker->Publish(e); + } + else { + } } } } @@ -1128,6 +1145,7 @@ bool dd::Systems::LevelSystem::OnPowerUpTaken(const dd::Events::PowerUpTaken &ev bool dd::Systems::LevelSystem::OnKrakenDefeated(const dd::Events::KrakenDefeated &event) { + m_KrakenBattle = false; m_BrickGenerating = false; m_BreakAllBricks = true; SetNumberOfBricks(NumberOfBricks() - 1); diff --git a/src/game/Game/PadSystem.cpp b/src/game/Game/PadSystem.cpp index 9d5dd9d..6c5f301 100755 --- a/src/game/Game/PadSystem.cpp +++ b/src/game/Game/PadSystem.cpp @@ -287,6 +287,10 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) { e.Origin1 = glm::vec3(-5, 7, -10); e.Origin2 = glm::vec3(5, 7, -10); e.Set = 1; + e.SetCluster = 1; + EventBroker->Publish(e); + } else if (val == GLFW_KEY_C) { + Events::BreakAllBricks e; EventBroker->Publish(e); } else if (val == GLFW_KEY_L) { Events::Lifebuoy e; diff --git a/src/game/Game/WaterSystem.cpp b/src/game/Game/WaterSystem.cpp index 3e77f45..02db22f 100644 --- a/src/game/Game/WaterSystem.cpp +++ b/src/game/Game/WaterSystem.cpp @@ -57,7 +57,7 @@ void dd::Systems::WaterSystem::UpdateEntity(double dt, EntityID entity, EntityID if (transform->Position.y < m_SubmergedHeight) { brickPart->Submerged = true; m_BrickPartCounters[brickPart->NumberOfPartsInBrick]++; - std::cout << "Parts: " << m_BrickPartCounters[brickPart->NumberOfPartsInBrick] << " of " << brickPart->NumberOfPartsInBrick << std::endl; + //std::cout << "Parts: " << m_BrickPartCounters[brickPart->NumberOfPartsInBrick] << " of " << brickPart->NumberOfPartsInBrick << std::endl; if (m_BrickPartCounters[brickPart->NumberOfPartsInBrick] >= brickPart->NumberOfPartsInBrick) { m_BrickPartCounters[brickPart->NumberOfPartsInBrick] = 0; Events::RaiseWater e; From b8e27e0cea2d97d1bb47dd485ff70ab1e637c3db Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Fri, 23 Oct 2015 15:18:34 +0200 Subject: [PATCH 2/4] Corrected Stage. --- include/Game/LevelSystem.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Game/LevelSystem.h b/include/Game/LevelSystem.h index 2d6ab1e..ad85e5a 100755 --- a/include/Game/LevelSystem.h +++ b/include/Game/LevelSystem.h @@ -147,7 +147,7 @@ private: bool m_Pause = false; int m_LooseBricks = 0; int m_CurrentCluster = 1; - int m_CurrentLevel = 6; + int m_CurrentLevel = 1; int m_MultiBalls = 0; int m_PowerUps = 0; int m_Score = 0; From 48b9e8fbede6715381586e95475cff8ec47dc87f Mon Sep 17 00:00:00 2001 From: viktorljung Date: Fri, 23 Oct 2015 15:36:23 +0200 Subject: [PATCH 3/4] Animation fixes --- assets/Models/Sid/Sid_Jump.dae | 340 ++++++++++++++--------------- assets/Models/Sid/Sid_Shoot.dae | 34 +-- include/Game/ProjectileSystem.h | 2 +- src/game/Game/BallSystem.cpp | 17 +- src/game/Game/PadSystem.cpp | 2 +- src/game/Game/ProjectileSystem.cpp | 8 +- 6 files changed, 211 insertions(+), 192 deletions(-) diff --git a/assets/Models/Sid/Sid_Jump.dae b/assets/Models/Sid/Sid_Jump.dae index b4a1465..d8ce03e 100644 --- a/assets/Models/Sid/Sid_Jump.dae +++ b/assets/Models/Sid/Sid_Jump.dae @@ -5,8 +5,8 @@ Blender User Blender 2.75.0 commit date:2015-07-07, commit time:14:56, hash:c27589e - 2015-10-23T14:18:54 - 2015-10-23T14:18:54 + 2015-10-23T14:55:47 + 2015-10-23T14:55:47 Z_UP @@ -117,25 +117,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 7.54979e-8 0 -1 0 1 0 7.54979e-8 0 0 -1 0 -0.831985 0 0 0 1 7.54979e-8 0 -1 0 1 0 7.54979e-8 0 0 -1 0 -0.831985 0 0 0 1 7.54979e-8 0 -1 0 1 0 7.54979e-8 0 0 -1 0 -0.831985 0 0 0 1 + 7.54979e-8 0 -1 0 1 0 7.54979e-8 0 0 -1 0 -0.831985 0 0 0 1 7.54979e-8 0 -1 0 1 0 7.54979e-8 0 0 -1 0 -0.831985 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -149,25 +149,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 2.8213e-7 0 -1 0 0 -0.8 0 -0.305899 -1 0 -2.8213e-7 0 0 0 0 1 2.8213e-7 0 -1 0 0 -0.8999999 0 -0.305899 -1 0 -2.8213e-7 0 0 0 0 1 2.8213e-7 0 -1 0 0 -0.9999999 0 -0.305899 -1 0 -2.8213e-7 0 0 0 0 1 + 2.8213e-7 0 -1 0 0 -0.8 0 -0.305899 -1 0 -2.8213e-7 0 0 0 0 1 2.8213e-7 0 -1 0 0 -0.9999999 0 -0.305899 -1 0 -2.8213e-7 0 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -181,25 +181,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - -4.53842e-7 0.6170548 0.7869204 0.1847505 1.46037e-7 -0.7869205 0.6170546 1.127367 1 8.9407e-8 2.73509e-7 -0.002287612 0 0 0 1 -4.53842e-7 0.5821425 0.8130869 0.1847505 1.46037e-7 -0.813087 0.5821424 1.127367 1 7.73916e-8 2.77148e-7 -0.002287612 0 0 0 1 -4.39136e-7 0.5461221 0.8377058 0.1847505 1.58507e-7 -0.8377059 0.5461219 1.127367 1 6.76434e-8 2.61131e-7 -0.002287612 0 0 0 1 + -4.53842e-7 0.6170548 0.7869204 0.1847505 1.46037e-7 -0.7869205 0.6170546 1.127367 1 8.9407e-8 2.73509e-7 -0.002287612 0 0 0 1 -4.39136e-7 0.5461221 0.8377058 0.1847505 1.58507e-7 -0.8377059 0.5461219 1.127367 1 6.76434e-8 2.61131e-7 -0.002287612 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -213,25 +213,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - -6.18379e-7 -0.6170548 -0.7869204 -0.1847505 3.71728e-7 -0.7869205 0.6170546 1.127367 -1 -2.08617e-7 7.33482e-7 -0.0022877 0 0 0 1 -6.18379e-7 -0.5821425 -0.8130869 -0.1847505 3.71728e-7 -0.813087 0.5821424 1.127367 -1 -2.40412e-7 7.23685e-7 -0.0022877 0 0 0 1 -6.46627e-7 -0.5461221 -0.8377058 -0.1847505 3.06338e-7 -0.8377059 0.5461219 1.127367 -1 -2.01547e-7 7.00461e-7 -0.0022877 0 0 0 1 + -6.18379e-7 -0.6170548 -0.7869204 -0.1847505 3.71728e-7 -0.7869205 0.6170546 1.127367 -1 -2.08617e-7 7.33482e-7 -0.0022877 0 0 0 1 -6.46627e-7 -0.5461221 -0.8377058 -0.1847505 3.06338e-7 -0.8377059 0.5461219 1.127367 -1 -2.01547e-7 7.00461e-7 -0.0022877 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -245,25 +245,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - -0.6271049 0.3253729 0.7077233 0.09214502 -0.06216809 0.884773 -0.4618571 -0.30983 -0.7764501 -0.3336307 -0.5346175 -0.1036631 0 0 0 1 -0.6271049 0.3727865 0.6839372 0.09214502 -0.06216808 0.8512871 -0.5210043 -0.30983 -0.7764501 -0.3692434 -0.5106708 -0.1036631 0 0 0 1 -0.6271048 0.4184712 0.6569793 0.09214502 -0.06216813 0.8138533 -0.5777352 -0.30983 -0.7764502 -0.4031437 -0.4843556 -0.1036631 0 0 0 1 + -0.6271049 0.3253729 0.7077233 0.09214502 -0.06216809 0.884773 -0.4618571 -0.30983 -0.7764501 -0.3336307 -0.5346175 -0.1036631 0 0 0 1 -0.6271048 0.4184712 0.6569793 0.09214502 -0.06216813 0.8138533 -0.5777352 -0.30983 -0.7764502 -0.4031437 -0.4843556 -0.1036631 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -277,25 +277,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 0.9961947 -0.03941186 -0.07773557 -1.11759e-8 -7.45058e-8 0.8919164 -0.4522003 0.2669196 0.08715568 0.4504797 0.8885224 0 0 0 0 1 0.9961947 0.008207973 -0.08676833 -1.11759e-8 -8.9407e-8 0.9955556 0.0941757 0.2669196 0.08715569 -0.09381732 0.9917672 0 0 0 0 1 0.9961947 0.05328933 -0.06896657 -1.11759e-8 -5.21541e-8 0.7913015 0.6114262 0.2669196 0.08715577 -0.6090995 0.7882903 0 0 0 0 1 + 0.9961947 -0.03941186 -0.07773557 -1.11759e-8 -7.45058e-8 0.8919164 -0.4522003 0.2669196 0.08715568 0.4504797 0.8885224 0 0 0 0 1 0.9961947 0.05328933 -0.06896657 -1.11759e-8 -5.21541e-8 0.7913015 0.6114262 0.2669196 0.08715577 -0.6090995 0.7882903 0 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -309,25 +309,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - -1 1.79667e-7 -6.11234e-7 0.00170817 5.95264e-7 0.6054008 -0.7959207 -0.3032414 2.2704e-7 -0.7959207 -0.6054009 -0.1332617 0 0 0 1 -1 2.31314e-7 -5.87108e-7 0.00170817 5.90158e-7 0.6722257 -0.7403463 -0.3032414 2.23417e-7 -0.7403463 -0.6722257 -0.1332617 0 0 0 1 -1 1.14574e-7 -6.09599e-7 0.00170817 4.98122e-7 0.7339727 -0.679179 -0.3032414 3.69613e-7 -0.6791791 -0.7339727 -0.1332617 0 0 0 1 + -1 1.79667e-7 -6.11234e-7 0.00170817 5.95264e-7 0.6054008 -0.7959207 -0.3032414 2.2704e-7 -0.7959207 -0.6054009 -0.1332617 0 0 0 1 -1 1.14574e-7 -6.09599e-7 0.00170817 4.98122e-7 0.7339727 -0.679179 -0.3032414 3.69613e-7 -0.6791791 -0.7339727 -0.1332617 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -341,25 +341,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 -1.29135e-7 1.94509e-7 -1.16415e-10 1.75878e-7 0.9645662 -0.2638414 0.3066351 -1.53546e-7 0.2638413 0.9645661 0 0 0 0 1 1 1.59428e-7 2.00812e-7 -1.16415e-10 -2.0679e-7 0.9645169 0.2640212 0.3066351 -1.51594e-7 -0.2640212 0.9645168 0 0 0 0 1 1 4.22972e-7 2.91339e-7 -1.16415e-10 -5.03542e-7 0.6957159 0.7183172 0.3066351 1.01139e-7 -0.7183172 0.6957157 0 0 0 0 1 + 1 -1.29135e-7 1.94509e-7 -1.16415e-10 1.75878e-7 0.9645662 -0.2638414 0.3066351 -1.53546e-7 0.2638413 0.9645661 0 0 0 0 1 1 4.22972e-7 2.91339e-7 -1.16415e-10 -5.03542e-7 0.6957159 0.7183172 0.3066351 1.01139e-7 -0.7183172 0.6957157 0 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -373,25 +373,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - -0.3874174 -0.5687845 -0.7255288 -0.092145 -0.05040498 0.7988806 -0.5993741 -0.30983 0.9205255 -0.1956376 -0.3381697 -0.1036631 0 0 0 1 -0.4864904 -0.4017697 -0.7758273 -0.092145 0.04559258 0.8751091 -0.4817733 -0.30983 0.8724955 -0.26975 -0.4074144 -0.1036631 0 0 0 1 -0.5622556 -0.2173457 -0.7978907 -0.092145 0.1550205 0.9200383 -0.3598585 -0.30983 0.8123037 -0.3260218 -0.4836036 -0.1036631 0 0 0 1 + -0.3874174 -0.5687845 -0.7255288 -0.092145 -0.05040498 0.7988806 -0.5993741 -0.30983 0.9205255 -0.1956376 -0.3381697 -0.1036631 0 0 0 1 -0.5622556 -0.2173457 -0.7978907 -0.092145 0.1550205 0.9200383 -0.3598585 -0.30983 0.8123037 -0.3260218 -0.4836036 -0.1036631 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -405,25 +405,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 -1.78814e-7 5.96046e-8 -7.45058e-9 1.49012e-7 0.9915508 -0.1297187 0.2669196 5.21541e-8 0.1297187 0.9915509 -1.49012e-8 0 0 0 1 0.9999999 -1.63913e-7 -1.11759e-8 -7.45058e-9 2.08616e-7 0.9804086 0.1969747 0.2669196 7.07805e-8 -0.1969747 0.9804086 -1.49012e-8 0 0 0 1 1 -1.49012e-7 8.00937e-8 -7.45058e-9 5.96046e-8 0.864507 0.5026209 0.2669196 -5.58794e-8 -0.5026209 0.864507 -1.49012e-8 0 0 0 1 + 1 -1.78814e-7 5.96046e-8 -7.45058e-9 1.49012e-7 0.9915508 -0.1297187 0.2669196 5.21541e-8 0.1297187 0.9915509 -1.49012e-8 0 0 0 1 1 -1.49012e-7 8.00937e-8 -7.45058e-9 5.96046e-8 0.864507 0.5026209 0.2669196 -5.58794e-8 -0.5026209 0.864507 -1.49012e-8 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -437,25 +437,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 0.5962579 0.3105631 0.7402885 0.092145 0.1080331 0.8827125 -0.4573265 -0.30983 -0.7954906 0.3526601 0.4927732 0.1036631 0 0 0 1 0.5962579 0.3602274 0.7174348 0.092145 0.1080331 0.8495398 -0.516344 -0.30983 -0.7954906 0.3853808 0.4676284 0.1036631 0 0 0 1 0.5962578 0.4082211 0.691254 0.092145 0.1080331 0.8124272 -0.5729667 -0.30983 -0.7954907 0.4163141 0.4403147 0.1036631 0 0 0 1 + 0.5962579 0.3105631 0.7402885 0.092145 0.1080331 0.8827125 -0.4573265 -0.30983 -0.7954906 0.3526601 0.4927732 0.1036631 0 0 0 1 0.5962578 0.4082211 0.691254 0.092145 0.1080331 0.8124272 -0.5729667 -0.30983 -0.7954907 0.4163141 0.4403147 0.1036631 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -469,25 +469,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 -1.71363e-7 -3.65078e-7 -2.23517e-8 -2.23517e-8 0.8919164 -0.4522005 0.2669196 3.65078e-7 0.4522004 0.8919163 0 0 0 0 1 1 2.98023e-8 -4.58211e-7 -2.23517e-8 0 0.9955556 0.09417555 0.2669196 3.53903e-7 -0.09417564 0.9955555 0 0 0 0 1 1 2.16067e-7 -2.78e-7 -2.23517e-8 -4.47035e-8 0.7913015 0.6114262 0.2669196 2.79397e-7 -0.6114263 0.7913015 0 0 0 0 1 + 1 -1.71363e-7 -3.65078e-7 -2.23517e-8 -2.23517e-8 0.8919164 -0.4522005 0.2669196 3.65078e-7 0.4522004 0.8919163 0 0 0 0 1 1 2.16067e-7 -2.78e-7 -2.23517e-8 -4.47035e-8 0.7913015 0.6114262 0.2669196 2.79397e-7 -0.6114263 0.7913015 0 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -501,25 +501,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 -3.80496e-7 3.91868e-7 0.00170815 5.42882e-7 0.6133798 -0.7897881 -0.3032414 6.01471e-8 0.7897881 0.6133798 0.1332617 0 0 0 1 1 -4.11831e-7 3.65044e-7 0.00170815 5.47395e-7 0.6759425 -0.7369544 -0.3032414 5.67518e-8 0.7369544 0.6759425 0.1332617 0 0 0 1 1 -6.12695e-7 2.8089e-7 0.00170815 6.40476e-7 0.7339727 -0.6791791 -0.3032414 2.09964e-7 0.6791791 0.7339727 0.1332617 0 0 0 1 + 1 -3.80496e-7 3.91868e-7 0.00170815 5.42882e-7 0.6133798 -0.7897881 -0.3032414 6.01471e-8 0.7897881 0.6133798 0.1332617 0 0 0 1 1 -6.12695e-7 2.8089e-7 0.00170815 6.40476e-7 0.7339727 -0.6791791 -0.3032414 2.09964e-7 0.6791791 0.7339727 0.1332617 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -533,25 +533,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 6.74718e-7 3.35923e-7 0 -5.60417e-7 0.9636354 -0.2672207 0.3066351 -5.04006e-7 0.2672207 0.9636354 0 0 0 0 1 1 4.05946e-8 5.35279e-7 0 -1.79593e-7 0.9649782 0.2623304 0.3066351 -5.05883e-7 -0.2623304 0.9649782 0 0 0 0 1 1 -6.24792e-7 4.4462e-7 0 1.153e-7 0.6957158 0.7183171 0.3066351 -7.58128e-7 -0.7183171 0.6957158 0 0 0 0 1 + 1 6.74718e-7 3.35923e-7 0 -5.60417e-7 0.9636354 -0.2672207 0.3066351 -5.04006e-7 0.2672207 0.9636354 0 0 0 0 1 1 -6.24792e-7 4.4462e-7 0 1.153e-7 0.6957158 0.7183171 0.3066351 -7.58128e-7 -0.7183171 0.6957158 0 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -565,25 +565,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 0.341094 -0.5440384 -0.766601 -0.09214502 -0.01064929 0.8132191 -0.5818604 -0.30983 0.9399689 0.2066329 0.2715906 0.1036631 0 0 0 1 0.4383928 -0.3780202 -0.8154217 -0.09214502 -0.1085735 0.8783329 -0.4655571 -0.30983 0.8922016 0.2926301 0.3440118 0.1036631 0 0 0 1 0.5124992 -0.1950254 -0.8362474 -0.09214502 -0.2182847 0.9122856 -0.3465357 -0.30983 0.8304797 0.3601393 0.4249745 0.1036631 0 0 0 1 + 0.341094 -0.5440384 -0.766601 -0.09214502 -0.01064929 0.8132191 -0.5818604 -0.30983 0.9399689 0.2066329 0.2715906 0.1036631 0 0 0 1 0.5124992 -0.1950254 -0.8362474 -0.09214502 -0.2182847 0.9122856 -0.3465357 -0.30983 0.8304797 0.3601393 0.4249745 0.1036631 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -597,25 +597,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 1.93715e-7 1.11759e-7 0 -1.93715e-7 0.9915509 -0.1297187 0.2669194 -1.93715e-7 0.1297188 0.9915509 0 0 0 0 1 0.9999999 1.63913e-7 1.9744e-7 0 -2.23517e-7 0.9804086 0.1969747 0.2669194 -1.56462e-7 -0.1969747 0.9804086 0 0 0 0 1 1 4.47035e-8 1.15484e-7 0 -1.19209e-7 0.864507 0.5026208 0.2669194 0 -0.5026209 0.864507 0 0 0 0 1 + 1 1.93715e-7 1.11759e-7 0 -1.93715e-7 0.9915509 -0.1297187 0.2669194 -1.93715e-7 0.1297188 0.9915509 0 0 0 0 1 1 4.47035e-8 1.15484e-7 0 -1.19209e-7 0.864507 0.5026208 0.2669194 0 -0.5026209 0.864507 0 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -629,25 +629,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - -0.7071069 -0.6123724 -0.3535532 3.93099e-4 -6.32867e-8 0.4999999 -0.8660254 -0.2065513 0.7071066 -0.6123726 -0.3535535 -0.170607 0 0 0 1 -0.3801194 -0.3873716 -0.8399122 3.93099e-4 0.1155668 0.8810675 -0.4586548 -0.2065513 0.9176893 -0.2714096 -0.2901436 -0.170607 0 0 0 1 -4.93163e-8 0.08715574 -0.9961947 3.93099e-4 -6.54522e-8 0.9961947 0.08715573 -0.2065513 1 6.95013e-8 -4.34241e-8 -0.170607 0 0 0 1 + -4.37114e-8 0 -1 3.93099e-4 -6.29212e-8 0.9999999 7.10543e-15 -0.2065513 1 6.29212e-8 -4.37114e-8 -0.170607 0 0 0 1 -4.93163e-8 0.08715574 -0.9961947 3.93099e-4 -6.54522e-8 0.9961947 0.08715573 -0.2065513 1 6.95013e-8 -4.34241e-8 -0.170607 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -661,25 +661,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 -1.28719e-7 1.37801e-7 0 1.29622e-7 0.9999784 -0.006573148 0.2368225 -1.36952e-7 0.006573148 0.9999784 3.72529e-9 0 0 0 1 1 -1.09857e-7 1.28525e-7 0 1.22898e-7 0.9943331 -0.1063096 0.2368225 -1.16117e-7 0.1063097 0.9943331 3.72529e-9 0 0 0 1 1 -5.99114e-8 1.13846e-7 0 4.97611e-8 0.9961947 0.08715574 0.2368225 -1.18635e-7 -0.08715574 0.9961947 3.72529e-9 0 0 0 1 + 1 -6.29212e-8 1.19209e-7 0 6.29212e-8 1 0 0.2368225 -1.19209e-7 0 1 3.72529e-9 0 0 0 1 1 -5.99114e-8 1.13846e-7 0 4.97611e-8 0.9961947 0.08715574 0.2368225 -1.18635e-7 -0.08715574 0.9961947 3.72529e-9 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -693,25 +693,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 -5.60332e-8 1.12095e-7 1.49012e-8 7.464e-8 0.9848198 -0.1735788 0.2368225 -1.00667e-7 0.1735788 0.9848199 -1.49012e-8 0 0 0 1 1 -6.3885e-8 9.0639e-8 1.49012e-8 7.97293e-8 0.9823068 -0.187278 0.2368225 -7.70711e-8 0.187278 0.9823069 -1.49012e-8 0 0 0 1 1 -4.9761e-8 6.34957e-8 1.49012e-8 4.40376e-8 0.9961946 0.08715574 0.2368225 -6.75911e-8 -0.08715576 0.9961947 -1.49012e-8 0 0 0 1 + 1 -6.29212e-8 6.29211e-8 1.49012e-8 6.29212e-8 0.9999999 0 0.2368225 -6.29211e-8 -1.49012e-8 0.9999999 -1.49012e-8 0 0 0 1 1 -4.9761e-8 6.34957e-8 1.49012e-8 4.40376e-8 0.9961946 0.08715574 0.2368225 -6.75911e-8 -0.08715576 0.9961947 -1.49012e-8 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -725,25 +725,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 6.12936e-8 -5.67796e-8 0 -3.58565e-8 0.8966583 0.4427233 0.2368228 7.96621e-8 -0.4427233 0.8966584 1.49012e-8 0 0 0 1 1 1.25452e-8 -9.96217e-8 0 -2.3783e-8 0.9986262 -0.05240045 0.2368228 1.00442e-7 0.05240047 0.9986263 1.49012e-8 0 0 0 1 1 9.28881e-8 -4.82035e-8 0 -8.91413e-8 0.9848078 0.1736482 0.2368228 6.52151e-8 -0.1736482 0.9848078 1.49012e-8 0 0 0 1 + 1 5.68864e-8 -6.13071e-8 0 -6.29211e-8 1 2.98023e-8 0.2368228 6.29211e-8 0 1 1.49012e-8 0 0 0 1 1 9.28881e-8 -4.82035e-8 0 -8.91413e-8 0.9848078 0.1736482 0.2368228 6.52151e-8 -0.1736482 0.9848078 1.49012e-8 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -757,25 +757,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 4.30038e-8 -2.39229e-7 0 -1.07798e-7 0.9731112 -0.2303354 0.2368225 2.20854e-7 0.2303355 0.9731113 0 0 0 0 1 1 4.30199e-8 -2.72239e-7 0 -1.13243e-7 0.9750363 -0.2220455 0.2368225 2.53854e-7 0.2220455 0.9750364 0 0 0 0 1 1 4.21468e-8 -2.34937e-7 0 2.99004e-8 0.9396926 0.3420201 0.2368225 2.33146e-7 -0.3420201 0.9396927 0 0 0 0 1 + 1 -1.08477e-8 -2.40456e-7 0 3.55271e-15 0.9999999 0 0.2368225 2.38419e-7 2.98023e-8 1 0 0 0 0 1 1 4.21468e-8 -2.34937e-7 0 2.99004e-8 0.9396926 0.3420201 0.2368225 2.33146e-7 -0.3420201 0.9396927 0 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -789,25 +789,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 -1.36642e-8 4.34855e-8 1.49012e-8 1.42907e-8 0.9998957 -0.01444024 0.147557 -4.32837e-8 0.01444027 0.9998958 5.96046e-8 0 0 0 1 1 -1.47699e-8 4.31371e-8 1.49012e-8 1.31896e-8 0.9993371 0.03640598 0.147557 -4.36462e-8 -0.03640592 0.9993371 5.96046e-8 0 0 0 1 1 -1.51808e-8 -1.32815e-9 1.49012e-8 1.51808e-8 0.9848077 0.1736482 0.147557 -1.32815e-9 -0.1736482 0.9848077 5.96046e-8 0 0 0 1 + 1 3.55271e-15 0 1.49012e-8 3.55271e-15 0.9999999 2.98023e-8 0.147557 3.55271e-15 0 1 5.96046e-8 0 0 0 1 1 -1.51808e-8 -1.32815e-9 1.49012e-8 1.51808e-8 0.9848077 0.1736482 0.147557 -1.32815e-9 -0.1736482 0.9848077 5.96046e-8 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -821,25 +821,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 0.7071067 -0.6123726 -0.3535533 3.93073e-4 6.32868e-8 0.4999999 -0.8660254 -0.2065513 0.7071068 0.6123723 0.3535534 0.170607 0 0 0 1 0.3808743 -0.4650555 -0.7991609 3.93073e-4 -0.09711698 0.8394046 -0.5347598 -0.2065513 0.9195124 0.2812884 0.2745429 0.170607 0 0 0 1 -2.86828e-7 -0.08715574 -0.9961947 3.93073e-4 4.46726e-8 0.9961947 -0.08715573 -0.2065513 1 -6.95013e-8 -2.81843e-7 0.170607 0 0 0 1 + -2.8213e-7 0 -1 3.93073e-4 6.29212e-8 0.9999999 -2.13163e-14 -0.2065513 1 -6.29212e-8 -2.8213e-7 0.170607 0 0 0 1 -2.86828e-7 -0.08715574 -0.9961947 3.93073e-4 4.46726e-8 0.9961947 -0.08715573 -0.2065513 1 -6.95013e-8 -2.81843e-7 0.170607 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -853,25 +853,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 1.31854e-7 3.39026e-7 0 -1.29622e-7 0.9999784 -0.00657317 0.2368225 -3.39885e-7 0.006573163 0.9999784 0 0 0 0 1 1 2.0258e-7 3.25968e-7 0 -1.5715e-7 0.9910105 -0.133784 0.2368225 -3.50139e-7 0.133784 0.9910105 0 0 0 0 1 1 8.0691e-8 3.51358e-7 0 -4.9761e-8 0.9961947 -0.08715574 0.2368225 -3.57053e-7 0.08715574 0.9961947 0 0 0 0 1 + 1 6.29212e-8 3.57628e-7 0 -6.29212e-8 1 0 0.2368225 -3.57628e-7 0 1 0 0 0 0 1 1 8.0691e-8 3.51358e-7 0 -4.9761e-8 0.9961947 -0.08715574 0.2368225 -3.57053e-7 0.08715574 0.9961947 0 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -885,25 +885,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 5.60332e-8 -1.12095e-7 -1.49012e-8 -7.464e-8 0.9848199 -0.1735788 0.2368225 1.00667e-7 0.1735788 0.9848199 1.49012e-8 0 0 0 1 1 3.8857e-8 -9.07112e-8 -1.49012e-8 -5.75666e-8 0.9763035 -0.2164052 0.2368225 8.01528e-8 0.2164052 0.9763036 1.49012e-8 0 0 0 1 1 4.9761e-8 -6.23466e-8 -1.49012e-8 -5.50055e-8 0.9961946 -0.08715574 0.2368225 5.77724e-8 0.08715576 0.9961947 1.49012e-8 0 0 0 1 + 1 6.29212e-8 -6.29212e-8 -1.49012e-8 -6.29212e-8 0.9999999 0 0.2368225 6.29212e-8 1.49012e-8 0.9999999 1.49012e-8 0 0 0 1 1 4.9761e-8 -6.23466e-8 -1.49012e-8 -5.50055e-8 0.9961946 -0.08715574 0.2368225 5.77724e-8 0.08715576 0.9961947 1.49012e-8 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -917,25 +917,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 -7.4163e-8 5.50016e-8 -1.49012e-8 3.58566e-8 0.8966584 0.4427233 0.2368228 -7.96621e-8 -0.4427233 0.8966584 -5.96046e-8 0 0 0 1 1 -4.52728e-8 5.93144e-8 -1.49012e-8 4.33603e-8 0.9971046 -0.07604243 0.2368228 -5.32109e-8 0.07604237 0.9971046 -5.96046e-8 0 0 0 1 1 -7.64089e-8 7.17683e-8 -1.49012e-8 7.60813e-8 0.9961948 -0.0871558 0.2368228 -6.23466e-8 0.08715571 0.9961948 -5.96046e-8 0 0 0 1 + 1 -6.9213e-8 6.54104e-8 -1.49012e-8 6.29211e-8 1 -2.98023e-8 0.2368228 -6.29212e-8 -2.98023e-8 1 -5.96046e-8 0 0 0 1 1 -7.64089e-8 7.17683e-8 -1.49012e-8 7.60813e-8 0.9961948 -0.0871558 0.2368228 -6.23466e-8 0.08715571 0.9961948 -5.96046e-8 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -949,25 +949,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 -1.52936e-7 -2.22142e-7 -1.49012e-8 1.07798e-7 0.9731112 -0.2303354 0.2368226 2.55983e-7 0.2303355 0.9731113 2.98023e-8 0 0 0 1 1 -1.36432e-7 -2.28682e-7 -1.49012e-8 1.08436e-7 0.9872519 -0.1591646 0.2368226 2.52069e-7 0.1591646 0.9872521 2.98023e-8 0 0 0 1 1 -2.65734e-9 -2.34158e-7 -1.49012e-8 -7.61939e-9 0.9961946 -0.0871557 0.2368226 2.38086e-7 0.08715576 0.9961948 2.98023e-8 0 0 0 1 + 1 1.01416e-8 -2.33831e-7 -1.49012e-8 -1.77636e-15 0.9999999 2.98023e-8 0.2368226 2.38419e-7 2.98023e-8 1 2.98023e-8 0 0 0 1 1 -2.65734e-9 -2.34158e-7 -1.49012e-8 -7.61939e-9 0.9961946 -0.0871557 0.2368226 2.38086e-7 0.08715576 0.9961948 2.98023e-8 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + @@ -981,25 +981,25 @@ - 0.04166662 0.25 0.4583333 + 0.04166662 0.4583333 - + - 1 1.29524e-8 -4.42529e-8 0 -1.42908e-8 0.9998958 -0.0144403 0.1475569 4.32837e-8 0.01444033 0.9998958 2.98023e-8 0 0 0 1 1 1.1152e-8 -4.47407e-8 0 -1.6024e-8 0.9955395 -0.09434634 0.1475569 4.27114e-8 0.09434631 0.9955394 2.98023e-8 0 0 0 1 1 1.43558e-8 -1.97223e-9 0 -1.51808e-8 0.9848078 -0.1736482 0.1475569 -1.32816e-9 0.1736482 0.9848077 2.98023e-8 0 0 0 1 + 1 -7.00673e-10 -7.77575e-10 0 -3.55271e-15 1 -2.98023e-8 0.1475569 -1.77636e-15 2.98023e-8 1 2.98023e-8 0 0 0 1 1 1.43558e-8 -1.97223e-9 0 -1.51808e-8 0.9848078 -0.1736482 0.1475569 -1.32816e-9 0.1736482 0.9848077 2.98023e-8 0 0 0 1 - + - LINEAR LINEAR LINEAR + LINEAR LINEAR - + diff --git a/assets/Models/Sid/Sid_Shoot.dae b/assets/Models/Sid/Sid_Shoot.dae index 7b8b3c4..54bfbed 100644 --- a/assets/Models/Sid/Sid_Shoot.dae +++ b/assets/Models/Sid/Sid_Shoot.dae @@ -5,8 +5,8 @@ Blender User Blender 2.75.0 commit date:2015-07-07, commit time:14:56, hash:c27589e - 2015-10-23T13:41:46 - 2015-10-23T13:41:46 + 2015-10-23T14:55:12 + 2015-10-23T14:55:12 Z_UP @@ -285,7 +285,7 @@ - 0.9961947 -0.0394118 -0.07773563 -3.72529e-9 -5.21541e-8 0.8919164 -0.4522004 0.2669195 0.08715573 0.4504797 0.8885223 1.49012e-8 0 0 0 1 0.9961947 -0.0394118 -0.07773563 -3.72529e-9 -5.21541e-8 0.8919164 -0.4522004 0.2669195 0.08715573 0.4504797 0.8885223 1.49012e-8 0 0 0 1 0.9961947 -0.0394118 -0.07773563 -3.72529e-9 -5.21541e-8 0.8919164 -0.4522004 0.2669195 0.08715573 0.4504797 0.8885223 1.49012e-8 0 0 0 1 + 0.9961947 -0.03941186 -0.07773566 -3.72529e-9 -5.21541e-8 0.8919164 -0.4522003 0.2669195 0.08715573 0.4504797 0.8885224 1.49012e-8 0 0 0 1 0.9961947 -0.03941186 -0.07773566 -3.72529e-9 -5.21541e-8 0.8919164 -0.4522003 0.2669195 0.08715573 0.4504797 0.8885224 1.49012e-8 0 0 0 1 0.9961947 -0.03941186 -0.07773566 -3.72529e-9 -5.21541e-8 0.8919164 -0.4522003 0.2669195 0.08715573 0.4504797 0.8885224 1.49012e-8 0 0 0 1 @@ -413,7 +413,7 @@ - 1 -2.23517e-7 -8.56817e-8 0 1.8999e-7 0.9915508 -0.1297187 0.2669195 1.37836e-7 0.1297188 0.9915509 1.49012e-8 0 0 0 1 1 -2.23517e-7 -8.56817e-8 0 1.8999e-7 0.9915508 -0.1297187 0.2669195 1.37836e-7 0.1297188 0.9915509 1.49012e-8 0 0 0 1 1 -2.23517e-7 -8.56817e-8 0 1.8999e-7 0.9915508 -0.1297187 0.2669195 1.37836e-7 0.1297188 0.9915509 1.49012e-8 0 0 0 1 + 1 -2.27243e-7 -8.9407e-8 0 1.8999e-7 0.9915508 -0.1297186 0.2669195 1.37836e-7 0.1297187 0.9915508 1.49012e-8 0 0 0 1 1 -2.27243e-7 -8.9407e-8 0 1.8999e-7 0.9915508 -0.1297186 0.2669195 1.37836e-7 0.1297187 0.9915508 1.49012e-8 0 0 0 1 1 -2.27243e-7 -8.9407e-8 0 1.8999e-7 0.9915508 -0.1297186 0.2669195 1.37836e-7 0.1297187 0.9915508 1.49012e-8 0 0 0 1 @@ -541,7 +541,7 @@ - 1 6.74719e-7 3.35923e-7 0 -5.60417e-7 0.9636353 -0.2672207 0.3066351 -5.04006e-7 0.2672206 0.9636353 0 0 0 0 1 1 6.74719e-7 3.35923e-7 0 -5.60417e-7 0.9636353 -0.2672207 0.3066351 -5.04006e-7 0.2672206 0.9636353 0 0 0 0 1 1 6.74719e-7 3.35923e-7 0 -5.60417e-7 0.9636353 -0.2672207 0.3066351 -5.04006e-7 0.2672206 0.9636353 0 0 0 0 1 + 1 6.74718e-7 3.35923e-7 0 -5.60417e-7 0.9636354 -0.2672206 0.3066351 -5.04006e-7 0.2672206 0.9636353 0 0 0 0 1 1 6.74718e-7 3.35923e-7 0 -5.60417e-7 0.9636354 -0.2672206 0.3066351 -5.04006e-7 0.2672206 0.9636353 0 0 0 0 1 1 6.74718e-7 3.35923e-7 0 -5.60417e-7 0.9636354 -0.2672206 0.3066351 -5.04006e-7 0.2672206 0.9636353 0 0 0 0 1 @@ -637,7 +637,7 @@ - -0.7071069 -0.6123724 -0.3535532 3.93099e-4 -6.32867e-8 0.4999999 -0.8660254 -0.2065513 0.7071066 -0.6123726 -0.3535535 -0.170607 0 0 0 1 -0.7071069 -0.6123724 -0.3535532 3.93099e-4 -6.32867e-8 0.4999999 -0.8660254 -0.2065513 0.7071066 -0.6123726 -0.3535535 -0.170607 0 0 0 1 -0.7071069 -0.6123724 -0.3535532 3.93099e-4 -6.32867e-8 0.4999999 -0.8660254 -0.2065513 0.7071066 -0.6123726 -0.3535535 -0.170607 0 0 0 1 + -4.37114e-8 0 -1 3.93099e-4 -6.29212e-8 0.9999999 7.10543e-15 -0.2065513 1 6.29212e-8 -4.37114e-8 -0.170607 0 0 0 1 -4.37114e-8 0 -1 3.93099e-4 -6.29212e-8 0.9999999 7.10543e-15 -0.2065513 1 6.29212e-8 -4.37114e-8 -0.170607 0 0 0 1 -4.37114e-8 0 -1 3.93099e-4 -6.29212e-8 0.9999999 7.10543e-15 -0.2065513 1 6.29212e-8 -4.37114e-8 -0.170607 0 0 0 1 @@ -669,7 +669,7 @@ - 1 -2.97919e-7 1.42151e-7 -1.49012e-8 1.49471e-7 0.9999784 -0.006573111 0.2368225 -1.18935e-7 0.006573141 0.9999784 0 0 0 0 1 1 -2.97919e-7 1.42151e-7 -1.49012e-8 1.49471e-7 0.9999784 -0.006573111 0.2368225 -1.18935e-7 0.006573141 0.9999784 0 0 0 0 1 1 -2.97919e-7 1.42151e-7 -1.49012e-8 1.49471e-7 0.9999784 -0.006573111 0.2368225 -1.18935e-7 0.006573141 0.9999784 0 0 0 0 1 + 1 -6.29212e-8 1.19209e-7 0 6.29212e-8 1 -1.2288e-10 0.2368226 -1.19209e-7 1.22887e-10 1 0 0 0 0 1 1 -6.29212e-8 1.19209e-7 0 6.29212e-8 1 -1.2288e-10 0.2368226 -1.19209e-7 1.22887e-10 1 0 0 0 0 1 1 -6.29212e-8 1.19209e-7 0 6.29212e-8 1 -1.2288e-10 0.2368226 -1.19209e-7 1.22887e-10 1 0 0 0 0 1 @@ -701,7 +701,7 @@ - 1 -8.44005e-8 6.6306e-8 -1.49012e-8 1.20871e-7 0.9848199 -0.1735788 0.2368225 -4.86571e-8 0.1735788 0.9848199 -8.9407e-8 0 0 0 1 1 -8.44005e-8 6.6306e-8 -1.49012e-8 1.20871e-7 0.9848199 -0.1735788 0.2368225 -4.86571e-8 0.1735788 0.9848199 -8.9407e-8 0 0 0 1 1 -8.44005e-8 6.6306e-8 -1.49012e-8 1.20871e-7 0.9848199 -0.1735788 0.2368225 -4.86571e-8 0.1735788 0.9848199 -8.9407e-8 0 0 0 1 + 1 -6.29212e-8 6.29211e-8 0 6.29212e-8 1 2.45799e-10 0.2368225 -6.29211e-8 -2.45795e-10 1 0 0 0 0 1 1 -6.29212e-8 6.29211e-8 0 6.29212e-8 1 2.45799e-10 0.2368225 -6.29211e-8 -2.45795e-10 1 0 0 0 0 1 1 -6.29212e-8 6.29211e-8 0 6.29212e-8 1 2.45799e-10 0.2368225 -6.29211e-8 -2.45795e-10 1 0 0 0 0 1 @@ -733,7 +733,7 @@ - 1 8.15159e-8 -7.7126e-8 -3.72529e-8 -1.25925e-7 0.8966584 0.4427233 0.2368227 6.03108e-8 -0.4427233 0.8966583 5.96046e-8 0 0 0 1 1 8.15159e-8 -7.7126e-8 -3.72529e-8 -1.25925e-7 0.8966584 0.4427233 0.2368227 6.03108e-8 -0.4427233 0.8966583 5.96046e-8 0 0 0 1 1 8.15159e-8 -7.7126e-8 -3.72529e-8 -1.25925e-7 0.8966584 0.4427233 0.2368227 6.03108e-8 -0.4427233 0.8966583 5.96046e-8 0 0 0 1 + 1 5.96046e-8 -6.29211e-8 0 -6.29211e-8 1 -1.22902e-10 0.2368227 6.29211e-8 8.73031e-11 1 0 0 0 0 1 1 5.96046e-8 -6.29211e-8 0 -6.29211e-8 1 -1.22902e-10 0.2368227 6.29211e-8 8.73031e-11 1 0 0 0 0 1 1 5.96046e-8 -6.29211e-8 0 -6.29211e-8 1 -1.22902e-10 0.2368227 6.29211e-8 8.73031e-11 1 0 0 0 0 1 @@ -765,7 +765,7 @@ - 1 6.59182e-8 -2.65114e-7 3.72529e-8 -8.26943e-8 0.9731112 -0.2303356 0.2368226 2.59863e-7 0.2303354 0.9731112 -9.68575e-8 0 0 0 1 1 6.59182e-8 -2.65114e-7 3.72529e-8 -8.26943e-8 0.9731112 -0.2303356 0.2368226 2.59863e-7 0.2303354 0.9731112 -9.68575e-8 0 0 0 1 1 6.59182e-8 -2.65114e-7 3.72529e-8 -8.26943e-8 0.9731112 -0.2303356 0.2368226 2.59863e-7 0.2303354 0.9731112 -9.68575e-8 0 0 0 1 + 1 1.49011e-8 -2.38419e-7 2.98023e-8 0 1 0 0.2368227 2.38419e-7 -8.34055e-15 1 0 0 0 0 1 1 1.49011e-8 -2.38419e-7 2.98023e-8 0 1 0 0.2368227 2.38419e-7 -8.34055e-15 1 0 0 0 0 1 1 1.49011e-8 -2.38419e-7 2.98023e-8 0 1 0 0.2368227 2.38419e-7 -8.34055e-15 1 0 0 0 0 1 @@ -797,7 +797,7 @@ - 0.9999999 1.16622e-9 2.33252e-8 4.47035e-8 1.33134e-7 0.9998958 -0.01444027 0.1475569 -1.24173e-7 0.01444024 0.9998957 -5.96046e-8 0 0 0 1 0.9999999 1.16622e-9 2.33252e-8 4.47035e-8 1.33134e-7 0.9998958 -0.01444027 0.1475569 -1.24173e-7 0.01444024 0.9998957 -5.96046e-8 0 0 0 1 0.9999999 1.16622e-9 2.33252e-8 4.47035e-8 1.33134e-7 0.9998958 -0.01444027 0.1475569 -1.24173e-7 0.01444024 0.9998957 -5.96046e-8 0 0 0 1 + 1 -2.83954e-14 0 0 0 1 0 0.1475569 0 -8.34055e-15 1 0 0 0 0 1 1 -2.83954e-14 0 0 0 1 0 0.1475569 0 -8.34055e-15 1 0 0 0 0 1 1 -2.83954e-14 0 0 0 1 0 0.1475569 0 -8.34055e-15 1 0 0 0 0 1 @@ -829,7 +829,7 @@ - 0.7071067 -0.6123726 -0.3535533 3.93073e-4 6.32868e-8 0.4999999 -0.8660254 -0.2065513 0.7071068 0.6123723 0.3535534 0.170607 0 0 0 1 0.7071067 -0.6123726 -0.3535533 3.93073e-4 6.32868e-8 0.4999999 -0.8660254 -0.2065513 0.7071068 0.6123723 0.3535534 0.170607 0 0 0 1 0.7071067 -0.6123726 -0.3535533 3.93073e-4 6.32868e-8 0.4999999 -0.8660254 -0.2065513 0.7071068 0.6123723 0.3535534 0.170607 0 0 0 1 + -2.8213e-7 0 -1 3.93073e-4 6.29212e-8 0.9999999 -2.13163e-14 -0.2065513 1 -6.29212e-8 -2.8213e-7 0.170607 0 0 0 1 -2.8213e-7 0 -1 3.93073e-4 6.29212e-8 0.9999999 -2.13163e-14 -0.2065513 1 -6.29212e-8 -2.8213e-7 0.170607 0 0 0 1 -2.8213e-7 0 -1 3.93073e-4 6.29212e-8 0.9999999 -2.13163e-14 -0.2065513 1 -6.29212e-8 -2.8213e-7 0.170607 0 0 0 1 @@ -861,7 +861,7 @@ - 1 1.53195e-7 3.34854e-7 7.45058e-9 -1.81413e-7 0.9999784 -0.00657317 0.2368225 -3.57902e-7 0.006573141 0.9999784 0 0 0 0 1 1 1.53195e-7 3.34854e-7 7.45058e-9 -1.81413e-7 0.9999784 -0.00657317 0.2368225 -3.57902e-7 0.006573141 0.9999784 0 0 0 0 1 1 1.53195e-7 3.34854e-7 7.45058e-9 -1.81413e-7 0.9999784 -0.00657317 0.2368225 -3.57902e-7 0.006573141 0.9999784 0 0 0 0 1 + 1 6.29212e-8 3.57628e-7 0 -6.29212e-8 1 -1.22899e-10 0.2368226 -3.57628e-7 1.22876e-10 1 0 0 0 0 1 1 6.29212e-8 3.57628e-7 0 -6.29212e-8 1 -1.22899e-10 0.2368226 -3.57628e-7 1.22876e-10 1 0 0 0 0 1 1 6.29212e-8 3.57628e-7 0 -6.29212e-8 1 -1.22899e-10 0.2368226 -3.57628e-7 1.22876e-10 1 0 0 0 0 1 @@ -893,7 +893,7 @@ - 1 1.72733e-7 -7.88033e-8 7.45058e-8 -1.25366e-7 0.9848199 -0.1735788 0.2368225 7.71099e-8 0.1735788 0.9848201 2.98023e-8 0 0 0 1 1 1.72733e-7 -7.88033e-8 7.45058e-8 -1.25366e-7 0.9848199 -0.1735788 0.2368225 7.71099e-8 0.1735788 0.9848201 2.98023e-8 0 0 0 1 1 1.72733e-7 -7.88033e-8 7.45058e-8 -1.25366e-7 0.9848199 -0.1735788 0.2368225 7.71099e-8 0.1735788 0.9848201 2.98023e-8 0 0 0 1 + 1 6.29212e-8 -6.29212e-8 0 -6.29212e-8 1 2.4578e-10 0.2368225 6.29212e-8 -2.45776e-10 1 0 0 0 0 1 1 6.29212e-8 -6.29212e-8 0 -6.29212e-8 1 2.4578e-10 0.2368225 6.29212e-8 -2.45776e-10 1 0 0 0 0 1 1 6.29212e-8 -6.29212e-8 0 -6.29212e-8 1 2.4578e-10 0.2368225 6.29212e-8 -2.45776e-10 1 0 0 0 0 1 @@ -925,7 +925,7 @@ - 0.9999999 -1.56903e-7 4.20833e-8 -3.72529e-8 1.45427e-7 0.8966584 0.4427233 0.2368228 -4.69387e-8 -0.4427233 0.8966583 0 0 0 0 1 0.9999999 -1.56903e-7 4.20833e-8 -3.72529e-8 1.45427e-7 0.8966584 0.4427233 0.2368228 -4.69387e-8 -0.4427233 0.8966583 0 0 0 0 1 0.9999999 -1.56903e-7 4.20833e-8 -3.72529e-8 1.45427e-7 0.8966584 0.4427233 0.2368228 -4.69387e-8 -0.4427233 0.8966583 0 0 0 0 1 + 1 -5.96046e-8 6.29212e-8 0 6.29211e-8 1 -1.22883e-10 0.2368227 -6.29212e-8 1.16416e-10 1 0 0 0 0 1 1 -5.96046e-8 6.29212e-8 0 6.29211e-8 1 -1.22883e-10 0.2368227 -6.29212e-8 1.16416e-10 1 0 0 0 0 1 1 -5.96046e-8 6.29212e-8 0 6.29211e-8 1 -1.22883e-10 0.2368227 -6.29212e-8 1.16416e-10 1 0 0 0 0 1 @@ -957,7 +957,7 @@ - 0.9999999 -1.94812e-7 -2.71521e-7 -1.49012e-8 1.11171e-7 0.9731113 -0.2303354 0.2368227 2.49915e-7 0.2303354 0.9731113 -5.96046e-8 0 0 0 1 0.9999999 -1.94812e-7 -2.71521e-7 -1.49012e-8 1.11171e-7 0.9731113 -0.2303354 0.2368227 2.49915e-7 0.2303354 0.9731113 -5.96046e-8 0 0 0 1 0.9999999 -1.94812e-7 -2.71521e-7 -1.49012e-8 1.11171e-7 0.9731113 -0.2303354 0.2368227 2.49915e-7 0.2303354 0.9731113 -5.96046e-8 0 0 0 1 + 1 -1.49011e-8 -2.38419e-7 -2.98023e-8 0 1 0 0.2368227 2.38419e-7 1.13798e-15 1 0 0 0 0 1 1 -1.49011e-8 -2.38419e-7 -2.98023e-8 0 1 0 0.2368227 2.38419e-7 1.13798e-15 1 0 0 0 0 1 1 -1.49011e-8 -2.38419e-7 -2.98023e-8 0 1 0 0.2368227 2.38419e-7 1.13798e-15 1 0 0 0 0 1 @@ -989,7 +989,7 @@ - 1 -5.3316e-8 -8.35065e-8 -1.04308e-7 2.97814e-8 0.9998958 -0.0144403 0.1475569 -3.36056e-8 0.01444033 0.9998957 2.98023e-8 0 0 0 1 1 -5.3316e-8 -8.35065e-8 -1.04308e-7 2.97814e-8 0.9998958 -0.0144403 0.1475569 -3.36056e-8 0.01444033 0.9998957 2.98023e-8 0 0 0 1 1 -5.3316e-8 -8.35065e-8 -1.04308e-7 2.97814e-8 0.9998958 -0.0144403 0.1475569 -3.36056e-8 0.01444033 0.9998957 2.98023e-8 0 0 0 1 + 1 2.84325e-14 0 0 0 1 0 0.1475569 0 1.13798e-15 1 2.91038e-11 0 0 0 1 1 2.84325e-14 0 0 0 1 0 0.1475569 0 1.13798e-15 1 2.91038e-11 0 0 0 1 1 2.84325e-14 0 0 0 1 0 0.1475569 0 1.13798e-15 1 2.91038e-11 0 0 0 1 diff --git a/include/Game/ProjectileSystem.h b/include/Game/ProjectileSystem.h index cf60ec7..690b76a 100644 --- a/include/Game/ProjectileSystem.h +++ b/include/Game/ProjectileSystem.h @@ -61,7 +61,7 @@ private: int m_Shots = 0; float m_InkBlasterSpeed = 5; EntityID m_InkBlastTemplate; - EntityID m_AttachedSquid; + EntityID m_AttachedSquid = 0; dd::EventRelay m_EContact; dd::EventRelay m_EPause; diff --git a/src/game/Game/BallSystem.cpp b/src/game/Game/BallSystem.cpp index 25d7272..b669b45 100644 --- a/src/game/Game/BallSystem.cpp +++ b/src/game/Game/BallSystem.cpp @@ -133,7 +133,8 @@ void dd::Systems::BallSystem::UpdateEntity(double dt, EntityID entity, EntityID auto cAnim = m_World->GetComponent(entity); cAnim->Speed = 0.f; - //cAnim->Time = 0.f; //Maybe not the best but it works; + cAnim->Time = 0.f; + cAnim->Loop = false; if (!ballComponent->Sticky) { auto transform = m_World->GetComponent(entity); @@ -157,6 +158,12 @@ void dd::Systems::BallSystem::UpdateEntity(double dt, EntityID entity, EntityID if (m_StickyCounter > 0) { m_Sticky = true; } + + auto cAnim = m_World->GetComponent(entity); + cAnim->Speed = 2.f; + cAnim->Time = 0.f; + cAnim->Loop = false; + ballComponent->Sticky = false; } } @@ -364,6 +371,14 @@ bool dd::Systems::BallSystem::Contact(const Events::Contact &event) ballTransform->Velocity *= -1; Events::StickyAttachedToPad e; EventBroker->Publish(e); + + + auto cModel = m_World->GetComponent(ballEntity); + cModel->ModelFile = "Models/Sid/Sid_Jump.dae"; + auto cAnim = m_World->GetComponent(ballEntity); + cAnim->Loop = false; + cAnim->Speed = 0.f; + cAnim->Time = 0.f; return true; } } diff --git a/src/game/Game/PadSystem.cpp b/src/game/Game/PadSystem.cpp index fb6390f..415b5e0 100755 --- a/src/game/Game/PadSystem.cpp +++ b/src/game/Game/PadSystem.cpp @@ -123,7 +123,7 @@ void dd::Systems::PadSystem::UpdateEntity(double dt, EntityID entity, EntityID p if (ball->Waiting || ball->Sticky) { if (m_ResetBall && ball->Waiting) { ball->StickyPlacement = glm::vec3(0.f, 0.f, 0.f); - ball->StickyPlacement.y += 0.45f; + ball->StickyPlacement.y += 0.25f; m_ResetBall = false; } auto ballTransform = m_World->GetComponent(entity); diff --git a/src/game/Game/ProjectileSystem.cpp b/src/game/Game/ProjectileSystem.cpp index 0cbdfaa..3cd9f64 100644 --- a/src/game/Game/ProjectileSystem.cpp +++ b/src/game/Game/ProjectileSystem.cpp @@ -108,18 +108,20 @@ bool dd::Systems::ProjectileSystem::OnInkBlaster(const dd::Events::InkBlaster &e bool dd::Systems::ProjectileSystem::OnHitPad(const dd::Events::HitPad &event) { - if (m_InkBlaster) { + if (m_InkBlaster && m_AttachedSquid == 0) { auto ball = m_World->GetComponent(event.Ball); ball->Loaded = true; m_SquidLoaded = true; m_AttachedSquid = event.Ball; + auto model = m_World->GetComponent(m_AttachedSquid); model->ModelFile = "Models/Sid/Sid_Shoot.dae"; auto anim = m_World->GetComponent(m_AttachedSquid); anim->Loop = false; anim->Speed = 0.f; + anim->Time = 0.f; } return true; } @@ -151,7 +153,7 @@ bool dd::Systems::ProjectileSystem::OnActionButton(const dd::Events::ActionButto auto anim = m_World->GetComponent(m_AttachedSquid); anim->Loop = false; - anim->Speed = 1.f; + anim->Speed = 2.f; anim->Time = 0.f; if (m_Shots <= 0) { @@ -166,6 +168,7 @@ bool dd::Systems::ProjectileSystem::OnActionButton(const dd::Events::ActionButto { Events::InkBlasterOver e; e.Ball = m_AttachedSquid; + EventBroker->Publish(e); auto model = m_World->GetComponent(m_AttachedSquid); @@ -174,6 +177,7 @@ bool dd::Systems::ProjectileSystem::OnActionButton(const dd::Events::ActionButto auto anim = m_World->GetComponent(m_AttachedSquid); anim->Loop = true; anim->Speed = 1.f; + m_AttachedSquid = 0; } { Events::ActionButton e; From 037adf3299ac1e2d17410b72d8a0fed6d0b9e079 Mon Sep 17 00:00:00 2001 From: viktorljung Date: Fri, 23 Oct 2015 15:45:03 +0200 Subject: [PATCH 4/4] =?UTF-8?q?Bigger=20more=20beautiful=20eyes!=20(?= =?UTF-8?q?=E3=81=A5=EF=BD=A1=E2=97=95=E2=80=BF=E2=80=BF=E2=97=95=EF=BD=A1?= =?UTF-8?q?)=E3=81=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Models/Sid/SquidTexture.png | Bin 30847 -> 31398 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/Models/Sid/SquidTexture.png b/assets/Models/Sid/SquidTexture.png index 4f2bb464120564cd09282ece76b555c69660b4a5..f43720e6909608a7ab1b9c9793fc64039ffd0470 100644 GIT binary patch literal 31398 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̸PMCbaO_-L1 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 KXcVYfKlndle+-KN literal 30847 zcmYg%1yoc2`~MUL1ra|2B4yDbNKRToYBXaTjYv0)ZUF&FB?i(UQlpU?jYy3Wq#MWR zkkS3Wd_KSLIsbFyaG3Y*KJR*-S3EaNT~(f(l#Ubx0+A~!ywL=KuGaxS8@GsoPwsG1 z?E=4UJ1XcngFs}IS3lQ4$*B)PAW}6e85wnTO9vMRXG;giCyFvMPaKgB=2o_5Adtso z8q`7yy81xkaCT2x>Eru&B?nFFTTe8lBi>WRuyQ`VeGl^SY1Ra_M(aPavN!0vGCvYU zN57Ax*5JMqPC8Dq`1EUZQ1-`g?CFAcw#{h6;Zom4)tKaR(QexJ0g{$mcM=o?G=$#Y zDUg2j&wNnl&yIyfo>u{+%#NUYx4xS`bv|dh20HQ+7w3A`Led1f=JA{C7N|ufrR4=f z=q1IPbdvtH_aCmcxWv3vy7it4^vWw*Iv4ax?%MmbFRV~d<_*x>9+P)Ckot4bTQ>it z-=OztM@in-Kzi{{sjp?mfSypAeS8D56ay6vz{6!h+Aly<=1MnSH@rb_yO@|fKp&DoRB{A__zqXey=6{drjjbeG0Y;e0eZKd zJCPs|JdfD>6=}GrgpIEoC%@wP;h99sA0S9EzuOA}WyVkgquo9C=)YUi-!B|peb?yu zS~KzGvv==s7x;lf$5$ZGf{Wka1vl?^y7ywl@9i$WvTWV3G$hM(J&Z7~pm^fe}jcnFu%)|tKad8~-Q(Dg$i}1a$_+iw7IJZ6a6F)oLpKtoZ9Kdf7Ab;a%{zvbg zat^~l?ClTlrk6g+pVg3Eo-zJ@_EYg4Mw^ogr*YpY`b~1=E`QFmFzHy1c9x+_(?4_E zr$mx-LZC8h$!p#*&+`pThz^w4?rFQU{5b@H2=xxF!|b<+-dhGO47guzOP$MSvVh*3 zE5c;>(*2Q21jtP8{+ zcoxzi&lew1p&>DRr%DEs52pJd_m%9IsS987rw5rSzmS!55|P4L%fAXODJDNj%5=VH zS$Rkz@YD7MPe+?{`AhEGaV9imi==B(!Qp^m|lq97<%6g?-eRslK} zJ&PuT?ZSGrJ{1^3eM{tE0#IDR?csz%7&=XT9ZCV_#)@f62 zQ6cQ@$3<~C^?Eqs}6k}GtREVt|Ob3nDr^ElFFLORKZK82@t0a>`iBT+Lfu4_)r+{OVdW#fnAUT%E1z2K!)L5uF@un6ANhx#F~9 zmeKm+`n-SgFsgB?h3TUfZDl*v-PHv(v}O2l;;E8qyJ}x!i+3~@HSHyBTXBtXzIDD) z=Mp63p%Zrt8Fd-`oGX!3qHxjKwnC>fdId8$ z(scx!f3hO=tJXe8p#7mWCl(W zCk~$FpVcwy1-I06)%2*fIiwo}&&l{RU7B8cT@Hfs-m_e@APNh39iVsp^vKKSX>+uc z=#<$(#l+_8$V|*@>ertFiv#hk#ZN7}Ha-_WJzW0MAJcDjH(1?oW%L(`@se>wo8KL_ z;Lu=1h*Y%WM{T-6zCn6b%J$L9X#eb zy(8Lb+KRSH3?e+7CBpW$O><|PyP<#5{*d9kX}<7w88~`o_5aul&U;Y6bDvu@;g#}7 z)tB*qU*F@*e-Oz+pmb-6CiVQm_`~8E@1XGD$8i~b&PS>Q1x^*O*o~M5Ay4LZfgEl; z<^x;7=LThR<(U-G^asgqPwe<5L>u{nVq-o#Nu!^t#8q3YSuB~m^%R)}S6sB)N7V2> zLXmXaeE(c@Q|CEpwRG-^mM;4kCrO2c8N$4|FAOV^P?*lux7qt0JM|fyx}9;kdH=`# zh1lwx5GBNOM(w4>B5RQfaVO6yQXKV7t`InJk$7!*HK*N(THz)lvBa;D)l0=Dz_1k? z*jjbXW}OU1iVyZ(pB~#ZP}AnsnX58B2}z@uqz(%&p_-yer1l?YpZ37hhdN-JlcwV< z3krW?Ob5(|%vYCYpQr2HO+Y6uCEm3spO~y9pMzI!?jOib@h0}MPt^xi%V4sb#cLbP z^1A!`#H6&oY3*s9XbEo(%~TnW9oY|V(R()>2yTo_=`|dlOLjL+!LGqnM$AXdP8CnT zA4-*kp;wO*PVEeeRqdQMJBfyf&PkZ=R*zwZM;M1Bv@}1Ba;?kX?R?yHk+$vroLrb3 z7M0rZhsp7c=i=(&?YYB8 zX1&hjryf(J3X1D^LUy&fttM9kf5%x61|ri?X}*3u$J1}8zE*oLoAl3FQ#fqb-E&zO zlD&*r7Hbge*C*7v5Gtndl!#hHa;d11-I~jq_(j}rwa)s~`s5Ofz71x}tFg-4{BV^% z9o#>&*XX(P;Bs^%T|{E0ao5Y?u>EjlXLS-N9-3L*n3|fs2^^PZTmYKP7$Y2_X+zPk$*XBJxKHdA@p4*5AlDZl(ArxNNc0N`MB@-^)Gh}C*`XERyw>uV+&D*+nT-WxcwUShbk?t{ zcx}J`KyphyF!QiPTa~2%Qfyt2vpVYX;azV~y7}y~nV}e~`Ma-7=AvKObgir8vJ=o+ zrm&cspKmM#>}{QRH%yrKwP6&lGvDvJasSnv;MM~lupj!r@aoQp75s0$^ zZ<@Dk(BS85*Fe%VAh+n*vOJpE6IAldgP?1m4?Lg^hVzA2r3QXV2zUucpXUE}FLnuS z*i1_x&LZVwll|_73QY%eA-5D-@?EcuZnd1BTOP;`KlOKKAJ! z!9hIArmoTlric|a`1iulvQf0y%4$@PgVn?DeGftR>Of^dd&ClrM+Zu4cfIZq|NDva z9XXjsx7Fvx)uTFjWd8-1)K@t>`wNdR-1y%oqq_SczG?M-8rjU|uR!mA-F%;B@{(?C z(`I@2@xlKBdl=c#c@11|M@;l@Od>!`BO~j&b|oC&X^F1?`_*^0H}bsgHi=2(L7*%$ zkeHIg_*f2}D;)Eb{NH;N<#rTk5_xQ>K0W+zv=+fzQ)4`i(scg@`~90v?)tit^})F3 zwSTYI$Vx$vtXno#wf2+!J74|$56L_9BF%tF{&&2QvD#x}iKzSk&8F)8&T@Eip)DWr zztM0jCRU6%2EY*el-@S3BNh8)a20mfgiJw@)=rhUvcv z$OCT_f>*kAd;agggR0|^9{?dsR)W{ncy7}MQDE`)( zd9CL1UzFLV!cd2Clc@jxYLf={RGYip{%;jYXtx_)XqpTBZ&LYFoNm1McWeUf-5+zv zKxGjgcdoskY0)iwsd&raEn8zrXu(ilR&2jQ$3suNy1me6@ueMLD~+2CakIDtq&eZy zi*jo8&4!x(1;yN|rp!q#P^Y!a;q>J|STYG9=GOW$LqxK)*7<{Lt#YFeK zvIQr>8is#&%o&Vij==2IR9>^hr|hB*DEE2nEcb(Z(B$_~sw&-Y#5=@JR(~l8YOi)Z zC+6HJ?7nSamc0k2k!@2pY(*IRtIYJ!)0MbTZ?avj+W10Ik$xwNPx;ucuxyoitpSs3 zTvJL2<3L5LVtM6}&x|HsX!xngu1ht4-8V8qjI*;(>%}rW!ZDuuJj}tKgiWXNg1s(3 zlqW4x`(Og{iZWhU)-#+sfX0P<<}B`2CwXL-ZlTC;Mg?L!^QijbO~vJ{{Fz1MFzw-- zY% z_>(sYP9{hP+-l%tWa->ldRyk=qp z?~T-#m0Y}&Jtl%#y)~ocs-fc8?6ht!N4M%CP(gA0*8~p4(rx0UCV#m|{_5Z@MSEL8 zXUNuLnQ@|=y;@pgV!RIg@9IT>%;QF45=qc7yqi^Dd_?I9Q&YCu%(2n+-$4&)e4SR- zVRZqH4*c*eM7NZOqgS4Dt3dHlR=wC-JNvZJ=$`WH)s9z+-pnGgi0H*pX&#TO<7=Sb z348jdBi_zE;Jzs5BU|>(4r>G5-6$0*`%R$JRX16 zovM6vZQWTw?4r;0TQRgUa-e9gKi}ZbgAY9KXD-Z_y~4G#>m@|w44Go}?#53+;lj!& zHxo};BUKRw2j2bHeRLKOz4F+lS8e<06&kF~44kPvT^uLKXP?xsU**Ln{Z5S)XOe?z zGiJ({{I8#|eJ8999^I&uy-c2zy;k&K9vwnv5ailYn#`zNuB^g{hx8h#Ei)&3YtkBT-e%*0o?zn9`wetc;F ze}Q;=o2cw}Nd)b6Q2ihDEWXYUp;%0;WJfOSg?%0m6W2~Ox|`DrtVIPJJAi;mNxG*6V7&b*H4Qck6O-^@z?Gv_@JS6fw^ITzaT8G56t9IZ|BSex=(Z+BQ{@ zHoID)KIt5Sk^l~ z?Ys2{x*~jl#Gq*N1ox13EJmfGc-+-AQe%jLlb#tX6uwbdufp8pTioOU>wcoKxo{Kp zNevt2L#w#@Vz7g3Z1`-Sytvr|Mwv0i1%2Y`CSW)Ma+6=FOD|%!(P^#`d*qnySn;G& zXsxL#x3wxEwSkvyxw|&H0hw7Vq`r${VcCrNv3ftN{yFCu+T9bH9hJ_RmkW~+U;;1q zm?u?m$Hg5Edzfmp2T`sW+E`Z(ne_e}ek5Ob+?QW7vVlo~oSnHswS$8l1EuJ5LhPTu zCfnG8(}OzrmQ@~Bp7DSIl<->_QpZ;fw)MoOkNGk-KCGt4m#4CyJtE83KS+_&&b zrNdoNf0G}`#=FN?;bYnRY76}k5=$a#IZSbysRgc92Iu&aKsiI5RQC0s*jVM@?tgP~ zLeSJ~2F+t=Du-Qkyo)@4M;BKpj!0~p;;}z{9`>ZX0m%4=7i^Og$^^2e=@!_i1?K)$ zj(+MD8E>8hjKJ(MGDJc5e&ACp2VyW@qtJf5TpjeWWTX^WM5NP->AuPXr;hZZ2Q|Y7b z;t$~uuoYIUVhZ>->B_UH9qrP;1!Y6?K2R=yXAQ;6b2rGt&h0&c#|_ZHltU_E!dm0> z(7dkFf|g%{O~)wVCQhs(47QDgPCU^V?-Dq;dP3lUjtxpj+TGm{AL(xVA{{&{U$gQl z?)Uz4r)c`;6I_=um4N(!%GV&Wm}B|qPVjvTf^xzES|u|7gA8x za6L#3K*Kzij3)6Dwhf7#Zo8BLE$72rhX!IS(^7?NNl820w#nTPuscNIG^}oU3}(2> z(TlRjm``Rr&-ZgPwDEUW3)YTm0`b}}7ViA|_o$pApHAj)(Hw)6TA56S$ zKs#0@&?Zkiq`^7$3BTkcGI(kc+Q(eF(nBt8cK$}V>hT$5Kk^3=bzkp;c-uRuYI*+X zMffw!h&t=rO(7uO`j5DmNCwHXzt{K+i!!WTva|bxUCF^GNCtU0Jh&ZA>TQFxc}k)* zy(*i#+;tVjY-FNSI^I?g@rlnt`PYBc%J3@p*)*7nOqZn!tPovjDY$@iz9#1KqRo~WC+9z42 z?xivlw_bC@+*C7`D4pecPF~{QqIx?q85>d%7}k&~mK4Kc{~D-e`wng;Tm!D{nlp?K zYZY^g7;PM@id&I-ZBgm*iiRSZPDUyVTCeT#K@=a#&fhfFjE(r%$PP*?;&D(yctD`F zp_6y!7RFV`s3~hd!)S0=fCMO$#20SI(WKsJ>*mJXKAMuAo|~KuRt@fXAB+qU>s7^R z_gTrf|G5SnEB6O=={}#t%G~uAbK%|CSH)wABaLM|al1e{jNhk>5+y3W*oY0^g`u`n zVi5KFeTv;3>YKak1o{}Xg?YSD5hPkeRDoKRic0I*gy8QbUi*B1OwPOVr{y0O4)ols zGfyT&iqB`viqGENRPqhk2jji+DwaMbb060PbYIpNvzT7 zNhr#?*qGQYg){`>>MXE2!h9W7S-mpEjs*%AAP6V-d~CU=>~~xcOGWEZ;eKTzmMa86 z0r}@kb#*jjC@FQ6%*w3fSiYmJw4vnNf1l=9b6mnZ$Kv7+$LmHV)UD~yXf3GA0PBRO zzD{e=AQouU&B2b3ze8Cys|zzWQfbxSahKtYi@i{Q!;M+!wlNHO%@gl>>2jPnOJn1V z?h5JBcd>4C`Yg8_Q*BxN_lU8Zewi&44?i;gyer^ZDrhEg1?d8HRdr%Hlr%Zw78P1e zRojVN_e+I@^w+Q%y_fdtBC$^T6T?_+w1c2h?-5niPP1b4GCN~5fKAi4qiX2d(gYqm z<$ZVwon+uxjW&&pLEPeFA``x2|Y2kvE5D1 z_X1+#b#sE=_zA_*ABCq7arkB=X?J#U9mS%&Xuz;(qqvkq6uIWa%eXLc+A)nwYrX8H zSM3v=dXc_oH2BTu8eK(y=q2o$D!;W_>#efK#F$=J!%MiL29$d^NVwer68QEIzz;Ex zIrlJ7Kl!RyT$fX1g~myWhnIV&X!LYTT!r$eIgW+A=GIrsrlK!}b+BTLWmAlJhTZ(c$!FQy;*9u=cP?jT+FV@%a~BUm=}r_>ftT3crUoxL_OW3jh`I8bWc--lha*@~ix#zCyye zL`FJpXlt>O(K( zR+*1-Cb$@~xMd^WyxPsSZQ}M`~un20*UGTk4 zE!EbyW_P=!;FvHP^-gX2IO?5! zEA&@a;o(~B$(SA~t20ihuKTD`^k0B*s0p2T0ecy<+;Y3&(wj&I^maMaUIXu=2=Jsf zslkq(JBzeQU5udvYz!FTs_mH}Td+crSE4XAuoKeL;rQXo>8`jwels0b@OI(O%GdBy z`ZdFeVaqD1*_$}kBOv=*BV~+IfQ3KobM59sG8q}pCOSn4`#TwIj=`x^sPJk_n19H( zBWMjkVhz3w)Vs1Mg6!RhmYF!6oW7VLd+ro-h|Xsh;){>_Amm;O+`-LzM)siZyF+f8ok^nk#}E)qX`?x){#vu7~GF07qEg4(*=9 z0VW;xurzL;WO zQ&y7wLtmweWNA_8Swh~`LW)s4%c{WG;whZ(5KC6ue$MwVFX&5jU|+q9nnFPBD>A=P za;-)UH%<;)W|xM^A9iI-BpKz=55(Z=!$Zq$E2^w^w%@FYfy2#^K8M*xre1Oj7vbjS zq!8gy$P^Q;Jd!JB+PbSw|B8Rq$YF9ZVLHLrIxqj=lmNWsvs%ZWQn2&$5%pcwE(ie` zJ!JoNOV38vdjT!%=cz)O`*5DV#sUL76ozsV2 zKT9!>jTtiLE~VmV)`p!H3y~x0NSDL;Tl)(u-j-yZ_1re-vHBbaTHUwE=tqId`+57bxUb1U_68 z!^*9~7wyk?lVYL-L`2k7=h-)-+?FCsm@#tglyL;oEMddC6JW}zm#u;1$6NXj|0yY; zsz}~$*MBXr&w<*Nb<-aYwzWpNzH^<`hAsaH*yjdElJmK$^4o$5f~d4Fr?ZW^$vi4 z^S}9FX}@L*Wbxxp#t2A?OqHRo<|#Jh4EgOXYw5JDqLcSGfS?H*Hs#hzXl-U;rs}ME z-;@OE8W#7^1JnfZGA5DUGZv_d&v0Vl^+W(F#(skjx+r!`EzoEKXNRlH--2+GJMuG*R)|LN*iE`$-KM; zyQ9ev=Nc(!gFxV+$@G&1o%S*BNr01*!^I%-VUf&~UYy$ng+5-osv>W1-vAQrQQvaO zplMas#7Vq<^u>&8h2htOU{{Q%+K9k!EH4}t#cyWCi4y^iIN?Uo&UqsU=-3uZ)ev~{p|uN4;|P@ocj2X7uaV{6a$uRa)oo`a{8kz>(z&7tt$r+ zI|?#`$~wY*roUaL;ZC_fJHpK&z`rZKswi<9zJe7XrGX^x9Ts@|shp#BZd*m$EZ%J5 z3}uCh4u3{`GWAJ!f6QvQX0_j52$2h0`^1BGvDE~G0tE2Wtrz)=yga89BO52s!mfijUfVhSz=xI^6Y$ZMtCMlfLkT=&Zw{FuuLceOsWkPUFT3*cw9(dasCG1 zMlK@KG=DbCtKcgiy^XyKHS2yp8uju@#f?*D{cEaS{a)-R7kx{#z|@z~^7b}P8tsgF zZ>2HzNhqvQATJ70Vsq|Ln(u3GP_hjfwXU6nPSO^5`RKOl$Iy3564}op)O!k!J1U6B zrbt2ozkzo=>{IJqYuPZwU%wkZK2of=r}c8^vr*Wv zkFV@bREbG*tam9pEA-iM>@a2I|AnVUgynzUF#X-eoTTe4epGvq(U< z7dC3hJyK9;G>6m{VbUT2 zTx>3#p>KYvW*DsZ)4-Y?;5NL5g9Lx^yfcietia6)<^Ppi8uY>6z|_Ej_W?lts~_nR zVoaYa4dXvueg|Z!NLTz~<4$P$NT*mgnfngpXTAqg)9~qVhY|uHfLU7@A;nlg$?YH0 zk`MzjFTvyLOL~Gj9zIv@U;X>zH9lLMD9~L(#QuV!)nx$nQNyL|YZB(a^vR8b7_!7d z$#oI|ofX8~?JlvIVmN$})JW>nv~;8Tckst}Rr}U|re|~Fl>m?Ks*VfXNH1mDC2@5bczW|u&jS!(UcG00 zSIw7A@@cvh({U&C4d}{n5(`?d6)ivfxFzMGdHh-C*?-r4{lc}f^2c~HN%!-5?VVfy zec?u$;jg4~HXsC@YQTvF_UE0Z<<(zj*BGaq6*TVgKLG*8WlR4HDZV`U=ybD*>;K;7 z>`{{U`!srehmxXDx9G+HU8D|-&$ZwAo_;ymCTm$?-;HkF$9S<4x#EUGpPZ`*dM#h`Q+H@=|Se}i&S3ANa?%!vjCu;A@`eSZnKbr_7 z!ve3&h>OR|TF`(#}w+-qAzH^ulYNBc)d2>{qn zZe1cLEoOr~2GQMJDoa4eC@(_9e;$2E@3azwUrIxZ!3osvBtT)~21wp(j=U2hvhafh zv+MS5EI`$Ssz;KZOm~OwkMEGcJ`(P9L~xm%%|xh3C-mwm|asHbIp7K z(oNOy>1WNtR&%u(@MtArj7BhN6Iz)ue)V|DrHAsT7KdwDOcp{qX>WxOqb0|SZQrrf z3%#~x_FRfiBw?nPaWyo6ZF@nT?)MCkR1g(7=j4s*aiP;vp*tQjs;!svN#laQ=cSbj zrRuraw%Ps5(3U0KIviFMBO=WuQAS2_d~)q3O`SUzY3`5FoIqA9%MO_(P1sC%T zNM{z2*G~Z9<}*83XJ}202Yrks_pDO5c*88RboYYMt$~59Jl4WAwRkM0^Yj5A!fa>j zv#$ahX?0`aH#WE^t$wDZkGNoHKY+MUB5Kr&KRO0MN;SGmY94{ZU#p?Stjkmx8EPKN z=@~K&EiQ;0k2FL&QPq%4p0&e@n_XZXaisFq?+zbas#t+FPB(>U$MSvN>9#XbB7N0Z zUE;|FWCd94&Nk4(Mom1W4D2-L9pBH#t7JW^Mjr`WD8!T}1_@)t;zmw`_4V+4qYB97V^059>9HSYX z;kIS%Aap_9;P_mKb^vBBVAl7hWSO&B9X9j`-8?+xSdeX5{buD)iDG@ZTya1HGXG3k z2cVG^PC1jx5HTjqO(P8E>j@25P=B4>Ki^AFN^Je-mH2)zWdo^`;aFD8);ixW>0R&P z+$bn?yDS25{)sb?*gDp7lG9%vf9z*?+1-Sx;aF#0Yi`Wy11Bs#xDJaR;7I1={H{3^ zG2&;ZvtBy$SzkVflJaT+kLIfsa{(P|)Rjt=hFXQ%?6>mjlbFcGMITuKGyH*Y<#C}6 zVBapP;pZ-)tZ}h@0TqHMshBwW<5<25Csvbh+$xLOYJL)Ir3_YOgHVy~j&-lwMAJ6` z(l5|&CH=zEBrDR`Sn%M z`g2zv`+QG7SO?w6qhu6xsWB2rv+Fn0OQENqR(B623WB>uMwe!DzX@rbp4Ck^lun+1 z$8Hw))Z$zNI}|jsGf~ZTnM>?J1h@FmOgK)ZSbuINJldt9?@LkSI+nE{(&C#kmY5?ZqP`O{s$kgv zyG%fR@{!_xgK1GbZMP7A0IktfY@xV?OEw(%Gy}epHX$J=5fxeii4$& ziwa{I z4I?#$P<#qUci(CF6ww4TY?77(jDX|!B9&Lr{>2<(3ZCLul86q^$Gxs{lD+APJfU_~ zvKrp2ReMB9L0g3>~O%p9R5VqoAIiMuv-Av_ET_9{vQ3&0Fui58JvP0u^<5mqIez#QSc~ z)aG}LJ7K?3U{<>OE>xsRAf2zO+rck{$t+u0$J(?gW=Km|k>$AN7Lhy#Q{gqHXWiKJ zEi(pTU(HUblT`e8#?wS)CW4;STI4wD$5H(E!&99SjTb0{=jDe{qsFYN=EkByFGO%7 zEGb%Wk|E#M4+^O6)YM48aN>Uo{<>h_gi%lxQ9sY}EWX%_O)f0~E-^6nZ2%uyX7idv zLQdJ@=MX5umfg8Jp!AezBz(j1KIQk`O(DfWgcb4BzO-Xq%($@?wrAgQ28^-F1h>Of z)-1C5bXX**7hx~k>u7}tE039(sCHrnkhCi$Ez^WDk~BT_EYwzQQ4|@GHKdU{Xl-;H zyms_^Mw`~g^v6z9x>I4P3snzq2r^sGpZVdOhM*CAK@QgE%%yul;ZOh+08ByP(CeZL zhBeeV-H4H`G z3e&h}*eniE37)shtQm}Jo%T_iZNAY-;FN;F?MuEovhvnYP0zyL%8_CL+yHMFOvJsc z2q?7utWYB0C-JbrzdXm~3p?1rW6nTPa;x2OR4u+*9wJ&ESp^9V`#SM;8u`TT9DF4r z&^kwE3y`R-*?bZ&CHn5|j(2bfGLsd#-qlyn`8ZkqLLE2iJzpnh zoc%<~am33+_BB)K*+nv7eeE#lD4zGI0L+TBr-(FSgrc!*LM-yFH} zv>c*7IrSdpmb^x9jR4B5H#Q^;7-WNp`sGlru)nK8kc}O+MIk3+2E)L8|E?EeS%sE$ z`9JhwtW`kbe9fWhS64*Xu>!PIjGj^7tg7jkUnm4=e9H3zkIbw;P057QHPU4WvZr+> zW9RzpvL`ze&{-3A1?pH`YE=2_<1z&N`Y-{d2PrmmC4ehlX#1thBN`CpMm&9GXUI}G zH?7#4YmkSkXW!vEyc)X*CF`bY=5^iR-#4i#1OeBH>QHXYU_!lN5?Z1WALqP%r1f+2 z>~F<=x)uo*p#Lx^uQ|v6V8;KONkpjI%%pybDV@QV~_9KZSGLkZILW4n@G77 z8M})<7FV7ko3({T>|^^#rv39k40Yi-wnBJTJ7Gv!b-s(-hvnSEhWwpO4la&>UU)t> ze6i&}KYFRnvF>0;WG*DRw1@jpa9*s&_ExOPFSMYpwAc!Vr-$I)`0;5am?I_R6)nCI z78Fsc%678*GnmgkCt)FpQ@Y3XJp?YGrz96P4n^Ta_|vm%g?_E6@fI8&gjjc)Yl%v* zs1C56_D>J;U3`!XpA|Vfg|L8A z`zRGL#E5pbS6Oh;P+e@=7M0FhEO0T`#k7alIXGC>PR8soQs-g`^q#WLvKW-u$LW-R zMAJ8sr0zRAPwmTzzWjnMSjre@XD;Zq;r9nIYeRVF9a^km!b`wAG3B3dpg5} z6}5cdW)PgIF*&bvyqW1g)u`HtSLRnfF7!2qVH&A#2G2O%;k(LMnj8uH`|=rM*`1HI zo?^F~u9d;7GpqqP_5!93s9!*t3kd@{E##29(LV~leod+nEiDBaLDRM>TNVe!hOBxVxYP*ldgLP zM>V9jz$!$B#qvyEX60o*;z;JP-u05VlA?X=*+2#-2Kw5z(!k7Pzkgdi8avFm$TeSs z*1HVoXWM>Zr_Uud4=40w0WO(29f_6jg}OkKz-&~DGioo6!stV_khja&=#A?~e-X|v zc@#TOZ#efrCSJt3GGOrPs`G%e)`A@sHAyi8P`Ocew+GI(t^Q`=*|ll<$G18xxAy}5 z&Nkeu{LMe@%;9I|<| zmpcpzGYj&br@RBV^7#_Mn2QzdKH5*1q^K88pseNZ;N0xMO_&^l*~qbzJ9iwU;1#Zu znTT;wJ4di`=HK4yj=Z>ly(SJ zB#peyDO}=p$oH?xAzXwYckw%YmhL76^5$kZ<)EJD#pfFp#9WL~y1qH*+Kua1DPAF4 z+4wmxW$jNMHwiJUX=N2rcRg;$&4?aeajq2<@!YP-#bA@n1}hgPHxm$IBT>a$#I@c* z3c=_(Tw8gFDJdL17HX&W^+Yu^G)P?#cRk$iFD=|(3l9O;p&zAbzJM|~NY#?P$R?W? zK=jk>&kXpg_~0zhzk|^0`8J^#yEIL8jGIgB5AN?V6V&=N26GSd@{!UVOq@^=sFL=#8NLIFi{Ge+-xhUjtRGW(b3)_*Q!i!TXi`?IMr zz{BTc4-WTcVkr*z6BPpqWuxXvz%RM0T>z&@5?X>=1DNUhl$wvql@_9xT2ZU3RYI zew+Qg#1SuC$Qk6@S-{#6Rpr!$yY_@Jrw$YFS`YoMeD59H?-=3GD^6E7tTD~Vu@x1c z!p#nb!e1JUi?SZJWkdp9H5H=jyE*G?&#TPz<&*f$&b2nV);as(uttB?3$3jn6YzJ) zC@~h&2OyPM}RezeMtacv&JxY<4xv)SuuwdOR?D8yRTA#g{D&NlfzUU!0!44f#HNB1) zw3WqY6Or3j3hJ-2*Jw9w{;F!z+OakYT4&r(NCrFD_dM6q5+DDpM?SuGC*xL%Zb1h6 zd@{U_1{{A!4jB<(Ydz99ss%8)a5ABh$6o+tT=M7#S2^AD!^-0b8#?=gcquKYeeSnR z297Nj>*ngB{(Tje^EXhn%{V;@hw}!vNT6*mO85l(*ec(}MY9785i4I*uo468NW}hd zWJsZeYpD=w$_Qoex>vK!E~-5;Y^!1A{IbbOsNa;dDYXklx!F{;4@hqVJd2UpY-$qd zya92ZIo#%o`$NU_7`@vtb`o5vUfNEwxk%lqyoWh1Wg6)BN#W|b&0wY|I_ujiRN;iS zjmMULKt{xb6koi2V!tf!ZbDw_I_zU2n{93c2t1T^;VHiRMs+2lQ#Q#y9vTbj1h$F+ zb~g<3?WBSB?fyet!RY;aa*Lf)C7*_xA!EIr$PQs$d#PTk3tt0JQhvN)a8r zPAO)jtOSBmR_uYgTfFa)x6Lel>2lx3%Zg&R%^Fsp3eZt+?{MB;wnbC%>LgXrj&Z9^ zr1Ia}{+c3k9jGFHptrjsx`Y16ezUv4>8)4*o4g#IdBsGi|H>qQ;gN`xQf@9K=*U)v zhM-=IQIsiV;ek!hm0t+IJP6OtJ||cZ+z*G@H|z^wb$sflYawTHmHTI0J-oyauX3Pk zH9n=#a^xkj*I|MPxa4v-rX5Ue1%@wACkJ||UX6Ik#|&T*6@ZjOEe=!dwX7V1F8`?` zkgOpI7pI}Qw2xEl7@2Sis*Co)TlGe#Kx3TQbwFabw-fM4SvcueCh+))I8EG{|L(cV z7yU?V=QEJSbptw|5+C;B?t9_r2kMx*odGTDQy6!g-d*67k&m80L}hN`SK27hpX00K z03{`>Hy2$-E~zm~`&l!v5tjlC@pFof?mN%eAWwpXNU2E1n{1^RNvdbU-*(10MP5mpjX+aOo#ziafG{7H z=@y`Qr!V7KIrj~`u1_|0-Y5wS`zk&MJ&b|@DYg4Hqeu*(vvfbqUhp#71S42z@ej~Q zvd4Zgu?HsP;8P@7Q+Vhae^d6i$34;fIWsXuMM!V!a8|N4-YV4o{kyp>GYx3?^dpX_ zVnDI5pXa2{0b9t~nFDm|hn%7P3ZN-|TYNC5^^nP?xMCQ))3}o%7HjIzkvBv7j?D#M zTe87^{+=dn5g~o^SiO;b)0%$wne4IXnRYFu9)FcA86qMz$;uL~V)uJ@QLba2c+E|X%=aGj) z=l2vHz6pk*3K5IcKXzCTx<{}7v_0c>Qwjjg^#x6bh6l8@DaG_J`I|HzSny{72zF8z z#6>%Y>MI&zjuVPquhSFwelnBvyEpnU4>giMff!Xa>-;Trn?&6J- z2INt|KU?tYK%cQC-h!rzfLMlM9N>N;u{3qzdPJ@R4rq5P=y7)i^1E5L$vZ&xcU0>M z6_N1!V+^=2SZ7cAx;$Ml5+*L3CHURC$xVh{su?|6TA~z_R|JlY$^M}%i;DY=RH`Wt zEg2czX{Q_T%PEKy0+aoC$Ychec!ENq=<6!1y!4cwy`Q2Ub;cU13F@wQo5rqtLr!)^ z`LA(tapft1kCo?_MGNRozE(o96jI0^J}#ct1CZ`STP1ZCbU4Gj-JQa z&o-~6CN{0-aN0<3J~y&-PBu1F3Xi2@cJal20t3*;W~BKd2Jupl&VPQkpWH+asRVFe zpf19uqXE_Mn_m%kc|`}%3$bQsYh62(NMB3fdO8)kuqBZp!34ajp#5=JtR`zqS#i)- z(NBVIdzIU&Y#P3fGD}j%K8JURJ(&J;yg}uQx~pRScT571GQJKm!vGaG5)}oln$?G0 zLiFrcJ~fjcmu((Kno7&Jo4DSrQV7ba{&VoQfwks7Cs-#I90MGBQ*n4I@KVv173Rs% zvZ}<_a{=!O&5iWuK~5XQ#u}~4ukiu`I6QH*>2-@UV{ekDYYEbL)(C4OZNzdFHSiKd zGXu6FV`xcq>Zd9$~ULB0bX2V|mQBTzN7^0~6)vXujXgb%Tz( z3TR-4Z(Bo0vVRlkMOKNbYX#D?0h_FYC_>kNAw1!7tOlRxOdvG<*?PsA5Qwz*k)HH% z5*PCk^O0|r*0|8RXtWuYkeLVKu8wFUBXK?WMGGS}BgPqS8w_BMIgDo~GB22J&_ z66G&g@KOWXy?*BlsQXoOgZJV)3IIY2bj`x;(cjLRunrdnEi+y`p(V&uY_h_^mEK=` zzHfFM{K|@|+jfl~==8QL%Ks^g8<~Bl@yNEnpz6ZK{w;vO{W}?pWZaig+~wctr?3OJBIwgkc?X z?>zlWC!fa2J4qT~1M{sim2QpXWYy*tj_yPLXzY zWpL$-qT(1$V{2SVbr$V675m2S1NGbh-`g7Jbi&oS9uDkrSbCESp$QtwJaW&eE2bYb;*4k96fK}DW zC&gC?7MY^Uzx@Y#+Bjf_(ny|G)OWJ1VN|TN4AKBI-{?K#~eb z5-^bk6cvOfM~MYW&XnXR+CqzjCTEbGDM1jBs7NY6lnjz2=Ujw>s(SlkuQfftarL}; z^Uus$&jsDrE1YxgKKq`t&$qvCS7Wyz({3n}DDhAK@`FDUXbUHHO*dyCST%?2)_^Xe zQ!_AK5mO9i@>XixVp8WdvgX}S-Q8n|k;uYG;43%V7eeOkq;KrsJv31lpD02oQ&^Pv zV)gR}pT-Y5%b`3sUN6K^?k5HrA|$nvYDhAWr~6!8{xdJQy7KMazQOe39*_LhYjn2a zth=J;J$C4JhT^Y8BcVJfmt8?Th2qpmCOY}^U#Y;l;aPIeFW1a`$9g^`=dMf zVbzhZPa2t3E@5x}Of8-SO=(bK)$&vP)Du*Xk>m5l&tzmt!oiow-~`xxWh1b$CXa=Z zg4#v=&~tZ{9+_|f3Sb(?e~r+2HF56ttH8U6`f@mUz6_kI4ml(aKJ#@CWi*+quFim{ z_uQ7WiV0g|Qws&0c{F}Jx_9NV{7%*SvsbTA0V=mdDkbjL1Oy`am}T0Q@1E?{I9W6f1-E#G?hv;YX#CcLJ!(9_j? z#Fypb6dUuoeJ=TeF)(ppkI3?_$}YPZO7BwCkmF{BV0ObstoCG7OJu5iWa5$U{1oQn zf<3jmAHV!qE5<&5#R77NHD}DnnmyOB$wfly=QE4!GeGgt5atd+l67@qUf$W8W=S#= z85i`eEqD0ZE!RufI31|v&Kq(07zJn$r&3~TJ|sI>3+eZe4PG&EIN)IfY`u1g?Yxt1 z%ckwRgJB@^vG-2H&YJH;DD`uA+8zy7fwT1F6c(7znnl8DN@FHi#Zq*79<}AVW^Z^# zwuR~RIiASLBZ-x=X~Qoa9fyIP9jH#%p0&9RhZa{6FunNQ23oPL+D`oDS(LhPJC#|P zG`&T%tj5~$k36Oa149O%^C5eh;a73%Z1v@_j3aTL5KXGjeh#mc%EjQlF+Gna?-TOamlldF=`wJQ%^ zc&k8DN@A)#O;)DYK>NTeOFBs6Eq;VJQ{%s>z;i9`wR^1Uikg^6dISxxC613TYjr}O zy!&BjNQnk8gEdHVDIIrH20U+~{qx!hE43w%sm5z+1IDe?L2uDThkbnzHobHL)lMgQ z`Q+%PSE8j6YkI1hlvIzE`iA?kdzzKy_v?bp4^J+O!a_Irpn5u6xnMrKGq{n2+aeZ< zy?5bgPb@Fn!hA{lw0exH*A3iRbq|Bmv`M}!SW^8KUuvCWd0ELf_iiU3g< zUFuc&bhYuu98neU1Ec(u?90JtA;xu9a4H)F44PO_FIe38FFg()uH%(VpEHzz(?1vH*A zrmT(5-Bo4TJ-_vq5a%rc4nRv=G86AHrmn4WIu=-&t<&@ZKM9hzfDVLhL8{53x+rgH zQXb?WuwN@E)FtT77j=-=@)Z28r}#9G4)CC}__?}vBn@t=T5@chwp#GBQ{FAk`OmvJ^ez@v z<$1*P3~kKSW=hZIkUf<&P)fK4GK3(~MCoZ->2wd}U?%rF-YbKrHd5T4KtSJEiJ0i_w2oI4NqaOudVsyNN1`G_4Jkhb}m%q%98{p*!1v49!rYN|PvuQ)Yw>D4T zPMfRa!l7Zq0i$s>i85O8G7U{aQ$anQA|c%5L2J_U9UQ6-wGVk6ktc0b`(sVSeWuuJ zW5F58T9yb2^No!29CTry0JJ^F(MEkoOkMtVxu%!!0G=%uUW8n4`@8wC=a0{mQ@1ND zH}y+nE@0btfWgK&%+Q3nFS}bPH-o)0UdDK}6b?I_SEn1;%7N|%z5+|Ts`PhXQWPv#5R!bs;S!V9PA+II_jnRiHb+i@6x*efs7rwdf<@U6KaJCI{A~gm5kP`I@jhR1P3pQR z1M_e5)X#Nnu;u|1=RG*zVUIKiF`8yhz~mh~U1U)~O}Y=u=SFC-WrwKsKWi7||mF*gP3 z%apv1=!X1#1lF&_eERs|NR$p5oe1m0F}4msY)4&0M$M|=6z8ZW)_m;Qr$J!^mD$^*omF6Id9J^JlOJ&X?L zJo|;A8IE~2>@9tYgb~$JkmPB1-liU3cIw>9U zloj-kX;LRNiyfzTMP#j;mfS@>SRpBWUZurqa%x4nB5|CCiYSrC&SsdyMJL!co>PxG zYiF(q->WU_S2$5|Bc{87yH_2&3ZR+2=0R(c9KNil;Xbla%u#V4mH@sIxFR!l9mW8OL(OC|EHi^Mmcv7Cfj^3iGB;!r2>dr?x z6USAi_<$n|Uz-xLZf$f+S7+6b(wXN!S3f!KAs$|MlWrs=?BOEiJOnkzGyOsH6EOcU z=$l=6Za2w8+1@e>|4Qq@E>~-%S4RlFsXxZK1i#)Q>)Y%SxG|gqbqb90)dv}KoDKC7 zmpP-GM%FfpAwne7=N`{|ZE^d9v_2<8d&+J>(cP4{AyILsx@wBEzqz5(4>`s>OJ{NE zeR=I3*}~gg&BkuTD4yHGgytx(JjB6t4~SMefIMY5M;G?d0S`x+Sq_bzi2y8n=0wyz zwxLJ$byWL#16z#QqNXOI;#=UUS`L;Kpzs&H7ZIe`gprc<8>gpwr_4piIa}|a@f#p) zILv#YZJld5X+-<5gm@efN^dC~CVOrHj4OxPL z6>{B7q^_)m7fX+8Imx7_hCy)$4dU8!0hE46m!vX&QA>}z|5jMu#P8J|LJ@(Ts~v~e z3u@R~fECqDo1Q9{NKJF|B9!cCxE^GYo>RT|bsCq6BCx<#-6+TFq_==h?Gvk&O)W_b zc%s&a3JY6@;tkCKscPBbGLV6>Bus1aTL4u$M(ztC!N7^qC%_WCD=>;XO+%nW$9?NU zxv-+Wdsdq01(NH;su1#IgA|q5WAg+yBK(p%nZ>sbF(yh}Y@eJA9NK=oZ3a4!g!|@C z-&jRskLi_1n0c(xeA@s;BiB;>I3w?xPZ8_xPz^hyVugqgH(QLA#fWoOl?AH=Gw5Kl zKXylcnhgyQ9FA=bYVdo$fq4%@$re(L)EOIN`knXfxY}`J&)MYm`SzMsc9H5Wju6U0 zn=q=IjwqDsdIY`yZfe|ah1<>@z&=27`*!fh7fdB}_&uNsL0OM)4tHlc2yIM_CY5I! z?5Z$VWvGAmY2`Voep6Tzw>w?35%yG@)K3l6O3qjwPWmh8_38mk0YDZ-43=uQZ(llV zH_8pK7=>pdEp_U1^;q)_k|osaibx- z8z`@J<{1dD&z9F(Yr?V7^#MH}O4CbGy%Tjits~^vq)7|p)wl#v2tRSDB*UX!^O~v= zU0p)4&5SH$iqr=7t{2W*B=fo$5s2;Zwt_F5H^*sQnfYV>3 zpZ5{1={1vkO-FfhqBvzIH2(Jd+tun`*;0{f|EjIJy5f;A;H^sK#kIV7THr zn^*P9eR7SW&0JDb-_Yhbjl_Sd@33C<-2E~hmbW=MMOgiyKN6zKYG-dLM}8Q6 zJ0;Ry1&KU_(&Mnq(>G-jDw7+1yB{qR)3n`T4-+B$zhDs@bZ?oVXItpELpy4yJAWi0P=5xOmqNng?Hf<+hy?_ zFXa1Id0&b67lmU^Le;`p?!%>f`kl1RJliUWg!{-I%jbgLKPJw5PM%Z?w>sJAolh(K zrDyF(PZub@S8Tdf9*lUd&Eu;~t5YSzP4B#&9}G-5BPT?}mEHVcO#2-;n5nA*T9=rk zn9H3@8wT2~120jCjH-SXXQ&lW;SArX1ImZQ?i@30+BYutMeIWl+B^LZv^2p5RTe|Y zBZB0bOf(QD#CunBh(459nRbbIs4uRx{3&Cs?c?$wZuxM5Zwn)U=M$3$UHKJgE8Qns zPLFoh6;Rd+{0r|>y*U%L!RNi#USevY->_otGo(@OY@2y_ToipK+tW~Qb?Oe_3;G|K znU&{hsiG>h3GFo0rM@{y(dxw*$v2)yf(4(Pl%(ln3)w~Jt|a0qq9vo=ZPvyW;}cFv zd2wd{nRpTvN3xlf_2S9Qqs|5G4&iki&N=;rAxh>q(M~DYo1c-zXpXvfJx&rqI>0x z#7l}EF6+j*D&WLwMy0g^-B~UzhpYsQVjk4PnnK62{?^HhtgyGIu zR~NCeFXwKKRv!18153)QzEphxm<`>N;?)*Qi<%E9bJOQp{j~H3nW`zsmr7{T?Qf|k zbV(5LBb`VH-*l?q@W7t{u&D%?{t!$`y`168DmHX--5EX6Aj8Z}DS zjV01xPMve6;9^WvGPITNzo;%CXLK_+jXxX}q$V!R#>brH?zn!hH0aRqQ=it;WLuFc z)o+-^cC863F}9#GI9*;V8lWa5p8P{wG5@utKM6OF{e5LAuL3cFTMyH4w1e)X=SE&>Hl$J|&E*{*FeQYzDPXrDoJ*;!CW8M5 z!)_C6*$SQ5mhy_SE!3W|H@?XoXCynWhTVvJ9WEDY8D8J-!c#IGP#OkD3j=poQ_P_E zW`acL$9~WIyekI^TNI9oPJRskvmkHZ!9|5F8;rg_ShEiQI%48mh=HJ^KtW_jD@H!%%qldr$aiCAH_o}caC_hW^os`;y zSz{p1o>QO(na~ZX#okCnJL!tL_rv3rYKL8B@8`#blq+lSeEri$g|a)GwWh%S{DO_r8;brrRTAO3Nt2=JWcQ%NhOluy%IY; z5?vCcC5aBu89yWIt11+ggA5?77XH1vpdw4jPT70RVSAaK9WCJ^Ao#8*Rc_Tn(dJ8( zhqS^B_Au}Kd*|!bEac)W$;>k?r@ZfyM!CK3On}TEj$Rp@vUqn0i^;AlaIe^Iz`L)lG))YyKAC^Zs zBe}_Hr9-sXay|LItJ1!dWK>r2Jz*_9z(F?%9Bms-8bR^f+a2(GH)^vw^orl-r< zw-`HX_Esf&n>`oal6g!t%(BYH9fIsQj5+^4`ZyCxb@{xLhlkyCAV0zx7*VAgX%f)- zbG!nIfB{03+=Gbdt&Khy(hPIo%&CJ4$-4^-(u|(G2^5S3LY*>>C_H(-1;R%FaiI>)T^@E( zxo!_*tpvdyH7}P)%49uXa_-v9&sz;4yETL#65oO)NO~{DZ&KDuzd{g<4s1Iw_JhjK zcDP0G)hq`iNr89To~cY42IDcHMgVo}5$nvF8himLWvR~gw^na$ z;;r^F%_TzeB4~ETuzrwWjRJX?=XxREd<}jx$=vI4C>dvbT!&W{E_PgLUZL1L8+2N;W$no*1Ovk0-{f)G3a=c%M3Alx|m$ z_4XW8rSkvO{5+*UbWc_R>If|c-YOf`*jnUw4Z(a$%n6X5LGq6Nx~FGDQcZCv55n^7 z=V6u;M_24Ct}ra8opzQg-8(X1qB1}y6BKfG?O&yx!Vge^e&gPTAmvsIVj2VAq0NB*fY4T)*?clwMljsS{WHP?I8`J&pv3|JID zZd?4py0I{M(&}YMAn1b74D@J(I?SFAtikIij@m^Dkt=qms%pFbC_>PN3yMqXN`b6& zT9*8e=FD&yUM@z~oFPG$%!hpo{ykKBJ<9Ss zERJPuryh@+EqA35XUdspb`?EUgMN4^jxJHd4*I{{MJA5y4sCR;FapZ1R?u{^bM;14 zYxR0VD;dJB^p!2llMa^1;*0mxR<7;MsMR|a`;RCC`o;in)#*^Lcad?m^`eTDE!W7H zQNpMWnlIw%q^X~~e(f`|Bvx+Ygh&4)lt_*bZI|PH78m`Ee5rx58Rvi=xlZWsCH~Pw zE>0zdmaTq%X5Q|=;04N~KEb<}Zv<`1^Udi5dusu7ic}m$LKk0ja+>KfDW15!!<-$> zjY#z%LfF)7rADN1Gg}fQF@CHg)E$KkSs(FsZ|86}x##4M>5b3L(zK@$!JfhH%?3n> zEkWGdLSFMW$lbxRFM3ZH)m10mK1XSqq>`@m_zt2T^jYLv@mP%O&js{K3V4DBf8A}T zO+~0C;w#0~TN8p4?p6<|kPPJl86?eFq?x}ii|y*YKXYh*#7BDV0dxJ+YrD17;qmgn zU}(?W8Ad7&GCQ!DG3+E}>PB}C&pz-ZHQUYr;?v@&dxTnf{uA6tym z>M9hI-q?QSxAFOvpE_SJE$h!``J6vr=Koyj9nPFlODOBCd+^-M*d+w=7E`5+%~3$F z(;;HXw_;^MxnEBKJE8cRaOO=4g_&fQt@*w&Lmq{;T;&1~Aksady^6FrIt+@tg88g) zK6Asz8qzeU=39wp;n?~|5D!z&r-^t;34=HLmT?chE+r)u1SPr{TnpISacZs9YJBQY zM^^b1gLvvYzb|GZttlq+H@PM$(I@Cb_HDfN@T-Uk!@KI~mMxFTy7=SD`hbf=+6{2Q zun6C&3pbJcxO>L=TdGMaRl2H|uxCs6r`MFZL`o`go@?dMORp?+b(Te8PPWB8)e@Pu zt_=8Djr>Q-oG7)DN6PR8*X2qo6Vii9@Cgu5_Da-{9-r*L^ZY`3EXafqBphVd=dYM_ zbM&h5b*piAcfkc`I4Cy-|2%*=!j{Hh^}Dl@oT#q*FDERd@kty-nlZS_P7Hp9Wey3GW-!5Dn_WeL{5ek$s^ zRP}uJpWJ3e9bX|!jLcTuIz@@CN$?cA3I9kmjQx_;&juxIMzkWYLA8RAmoLEdSz!7O z(A#Rq$M&i@O72{f9z2M6$d-7oJ+(_USA7v;xsv5FCUG|n_D!a5@PJpi&ko)O102<} zI<>rDtJ69O6o6b7N0rly$W zsw+KpDhGhzGAOqEwSIG4qyQ!>pL9X4wE9|{!hfYn&!UkZwO!#LDwXfFCP>0#M>{%=qvI5LHo0bU3*4N z@L;fcwg9AXM2|H34;`Roc8m2iWh9sE1keL5ko z4Y314T1#{vs@S5q1EQYW{Z9H1X@F35G+5_N|9XW;P?W>U*w!G~H-x ztj_Zb8b(48gP&uXg|rF0_p{RN9y%i~3oYPwnxi`>zy&Tk6p9Hqe7m2XOc5Oat(Tb) zT8(dd3a5-~P}v$W`lLvK34JFXTZj6(mAL1NJegGams)5SYypiR9xTXA^7kUGk95AO zlAb8PJ+c3r0_Vw-gRU}kAt?1+Mn*gb>B5%*jrMHY=r|=L7`WTjh2*w(h|%7dB*K} zW@I1*ywh=wyjF@-hD?((sxDA+s2z<7`t-hp49Ba4<9iO5cawgW&rg}toW)m76?QCik7DY3Xs#Ylp3pg5F zSQJU4w>L7pKVXz_VmmSO-qT$iq6wO29{r5``gcP-X$rd=X&HKD?j-(0k()ee$&_^0 zdus}_fu9t_4NR6s{~(+LE>2Y^C7!_Nf%0BUAL;zdL00S~w-{sEx)zEZTqk4oMM(a{ zwh^LxmDjAi-lGqB!*3N=yq+_Ro7p^;8gXBvM~sYkp^*|etWBpM(}4wAX;}XzC1oh4 zH)p%5pWwU8H8;j|_+}$sW9DgWYtl3@_g01%xlcdo%Id=H9crI}d`)RlLc~?d6w!oU+B+^pg-tc(+Vs5p&+; zbS-Fn11${th!(K-+N;CX`o|iaYv*S^T}r62m*GQs$k%x68do{u;^DD!w5tR@?*8kg z*BcO2&g&?8JUGQz9^3?zw|#WU1x5hnD$}y@snwB!nvP5O2ZXjpt=)LwC5I z?sYc;R>y6A&Q(vVDg$oy#{oT%LB5yW(ZC6l=)IyvSedo89N9==X#7D3pY3Fa0X{R> z(eSoPMenz@sT^Kjy`JyAU*@}iv$ZgPqSf0I>0mz_Dnb}8IErc%f&~L4reCd|XsdS1 zBn-OCnVw4MnLX5~&ev@e@S`90Av=uUQiZXAYCP+OfFs(r`;E{<70i^h*v`$(Ipz!W z78e&HHPgXlw*sWUi+BWHU(-_z>pli`PGX1g1ZW#s_941#>&ir8iB{^eRaheoDtwnJ zz}_a=QZjiT?cM|`sOGlu>*-V^b947P7|w=93icL%8}4#*SEWyo&*$&$W~N$d?(Bye z$mf2y2%pc1$jOOhVlZI5nM#@8rDyk`l%}v)rvqrpk60eUo!@21k?sG{~(f_Juo5U_L`bHrSj9o z@MSlEy@L!1JY;0G1;>WA!usX3A~|JL14BcOr263Nd#=b!@mhUtVxfB7E5uOCFMP zQB541tC5!#&zGxx6~MAA6^`6^zM(;s5RKHD7%FkR**-wGaWV!%oE6TBX`0_f8bZcJ z)^rt>Pv^w*$y{hB2C?*UH8=b#j`bBxgyHRzgUYvq1`Tfy93OsU9?7L}Mk~-X*f`%P zAfVyyTzMjt10JP-2~K8i+JYeSP3=0h%lL?UA_TS*71a!lO;&^xkr&~WJpFwKN z`$>^dk`BqX(!KnX=*{;%L=(C?(VD$4n4!Ix8#)p?f-i7W%eY|)2<6F=cVq6a*f!?Q zsKTu2y%bG>dk|;Bf1y~)|9T0h9JmX~e)#EMUP8VW{y?P(WHi6J1a2U*0m91*`|kgI z`O6;vHjZES__w>i?(uJT|Gme*jpM&NhspS*5&mZ2Utj*s!2f>vHv|9r@|QjSZ5+Su z@o#tky~n@#-miQ7+ui@}{J%2i|L}6}PsZO2{OimAW3!7NgQ7%awM$0%RXdFhv_}pj zE%eKR6!&&Xf!xNQ*po&Syldvi`Q^e<7qI44A#nNJ(#ghmlj#$-X1zwDmr7H zT9y6LENdU3P;Z@_6yZH|7+FZH+MD!-A9c6ud*7At9*-I@v(1U-oAbGsiJMua;MYlt zoDQW#3{Wf3x#YOP?7gFjUnWM8GW9>KHCnQkk#YAmmD#VEk=Ei(FN zi5_&75WOE9mWr^!}sp;rCnKQ;}@>jccSgy8?t%dh1Hn1^Ks4xPg{2b_COpFZPJ!F^GE%ACE#-A>g0~U<|OFy|pa!sS;|ulnKfx z9~v`zwEl?em?eUYB(|J?^7Cm`Im2-X)wk&su2a*i0Afq*PAHRzTTP(|ZPjSMerngb!j(9$}o7OC=2hUdB7*G42FR_Y@Y+;kuP7F4Db$??h zK-y?;WYi~0vp;S+1}FrqmGO*mBi;l)%<#WD^ZT3GKdd4@7nJ{}c8=}C@ZmG?`IZtr z+HB@r+}tcIy^a&KQ%Hh{?3uMy_-E~bM-YMX!YA}3OBTEVmCP*wSUjS`uKV5v4i_2O zd(=d=+o~f$f>;NE!urUbJCAi92lM2{MhyGLRw5~cNqF;_Z29Fvq^cU36?2bvzE#0o z4M~xdO0*>{)oAASMwVzSdP$QoHQOYPHWhiOj9<7MeX!lM)=u$BG60Tc@Ci$Lx*zgL zD`P15K%{2v-Nd8Bc0NL&e))zkzV5&a^1qsv&DWQ1vzZqQ*$q_g2UaGx$fb!l4?#CB(