Kraken shows up on last stage. Created WaterSystem for possible future use.

This commit is contained in:
PlatinumSkink
2015-10-20 11:43:39 +02:00
parent 7aa7e7cbf0
commit fbdd3536f3
22 changed files with 576 additions and 38 deletions
+41 -14
View File
@@ -30,6 +30,7 @@ void dd::Systems::PadSystem::Initialize()
EVENT_SUBSCRIBE_MEMBER(m_EResetBall, &PadSystem::OnResetBall);
EVENT_SUBSCRIBE_MEMBER(m_EResetAll, &PadSystem::OnResetAll);
EVENT_SUBSCRIBE_MEMBER(m_ERaiseWater, &PadSystem::OnRaiseWater);
EVENT_SUBSCRIBE_MEMBER(m_ERaiseWaterWall, &PadSystem::OnRaiseWaterWall);
EVENT_SUBSCRIBE_MEMBER(m_EPause, &PadSystem::OnPause);
EVENT_SUBSCRIBE_MEMBER(m_EResume, &PadSystem::OnResume);
EVENT_SUBSCRIBE_MEMBER(m_EKrakenAttack, &PadSystem::OnKrakenAttack);
@@ -74,6 +75,17 @@ void dd::Systems::PadSystem::Initialize()
m_StickTransform = transform;
m_StickyAim = sticky;
/*{
auto entChild = m_World->CreateEntity(ent);
std::shared_ptr<Components::Transform> transform = m_World->AddComponent<Components::Transform>(entChild);
transform->Position = glm::vec3(0.f, 12.5f, 0.f);
transform->Scale = glm::vec3(0.1f, 25.f, 0.1f);
std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(entChild);
sprite->SpriteFile = "Models/Brick/White.png";
sprite->Color = glm::vec4(0.f, 0.5f, 0.f, 0.5f);
}*/
}
m_ResetBall = true;
@@ -219,8 +231,14 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) {
} else if (val == GLFW_KEY_W) {
Events::RaiseWater e;
e.Amount = 0.2;
e.Speed = 0.2;
EventBroker->Publish(e);
} else if (val == GLFW_KEY_A) {
} else if (val == GLFW_KEY_Q) {
Events::RaiseWaterWall e;
e.Amount = 0.2;
e.Speed = 0.2;
EventBroker->Publish(e);
} else if (val == GLFW_KEY_A) {
Events::ResetAll e;
EventBroker->Publish(e);
} else if (val == GLFW_KEY_M) {
@@ -267,6 +285,7 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) {
} else if (val == GLFW_KEY_I) {
Events::InkBlaster e;
e.Shots = 5;
e.Speed = 5;
EventBroker->Publish(e);
} else if (val == GLFW_KEY_K) {
Events::KrakenAttack e;
@@ -416,21 +435,29 @@ bool dd::Systems::PadSystem::OnResetAll(const dd::Events::ResetAll &event)
}
bool dd::Systems::PadSystem::OnRaiseWater(const dd::Events::RaiseWater &event)
{
RaisePad(event.Amount, event.Speed);
return true;
}
bool dd::Systems::PadSystem::OnRaiseWaterWall(const dd::Events::RaiseWaterWall &event)
{
RaisePad(event.Amount, event.Speed);
return true;
}
bool dd::Systems::PadSystem::RaisePad(float amount, float speed)
{
auto transform = Transform();
glm::vec3 raise = glm::vec3(0, event.Amount, 0);
transform->Position += raise;
{
auto t_waterBody = m_World->CreateEntity();
auto transform = m_World->AddComponent<Components::Transform>(t_waterBody);
transform->Position = glm::vec3(0.f, -3.5f, -10.f);
transform->Scale = glm::vec3(7.0f, event.Amount * 1.6f, 1.f);
auto water = m_World->AddComponent<Components::WaterVolume>(t_waterBody);
auto body = m_World->AddComponent<Components::RectangleShape>(t_waterBody);
m_World->CommitEntity(t_waterBody);
}
glm::vec3 raise = glm::vec3(0, amount, 0);
Events::Move e;
e.Entity = m_Entity;
e.GoalPosition = transform->Position + raise;
e.Speed = speed;
e.Queue = true;
EventBroker->Publish(e);
return true;
}