diff --git a/include/Core/Engine.h b/include/Core/Engine.h index 6d13fba..13c957f 100755 --- a/include/Core/Engine.h +++ b/include/Core/Engine.h @@ -286,8 +286,8 @@ public: auto transform = m_World->AddComponent(BottomWall); transform->Position = glm::vec3(0.f, -6.f, -10.f); transform->Scale = glm::vec3(20.f, 0.5f, 1.f); - std::shared_ptr sprite = m_World->AddComponent(BottomWall); - sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; + //std::shared_ptr sprite = m_World->AddComponent(BottomWall); + //sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; std::shared_ptr rectangleShape = m_World->AddComponent(BottomWall); rectangleShape->Dimensions = glm::vec2(20.f, 0.5f); std::shared_ptr physics = m_World->AddComponent(BottomWall); @@ -304,8 +304,8 @@ public: transform->Position = glm::vec3(0.f, 6.f, -10.f); transform->Scale = glm::vec3(20.f, 0.5f, 1.f); - std::shared_ptr sprite = m_World->AddComponent(topWall); - sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; + //std::shared_ptr sprite = m_World->AddComponent(topWall); + //sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; std::shared_ptr rectangleShape = m_World->AddComponent(topWall); rectangleShape->Dimensions = glm::vec2(20.f, 0.5f); @@ -326,8 +326,8 @@ public: transform->Position = glm::vec3(-4.f, 1.f, -10.f); transform->Scale = glm::vec3(0.5f, 20.f, 1.f); - std::shared_ptr sprite = m_World->AddComponent(leftWall); - sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; + //std::shared_ptr sprite = m_World->AddComponent(leftWall); + //sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; std::shared_ptr rectangleShape = m_World->AddComponent(leftWall); rectangleShape->Dimensions = glm::vec2(0.5f, 20.f); @@ -348,8 +348,8 @@ public: transform->Position = glm::vec3(4.f, 1.f, -10.f); transform->Scale = glm::vec3(0.5f, 20.f, 1.f); - std::shared_ptr sprite = m_World->AddComponent(rightWall); - sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; + //std::shared_ptr sprite = m_World->AddComponent(rightWall); + //sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; std::shared_ptr rectangleShape = m_World->AddComponent(rightWall); rectangleShape->Dimensions = glm::vec2(0.5f, 20.f); @@ -568,28 +568,28 @@ public: if (m_ScreenShake) { m_ShakeTimer += dt; if (m_ShakeTimer >= m_ShakeEndTime) { - m_ShakeRepresentativeIntensity -= m_ShakeRepresentativeIntensity * 0.1 * dt; + std::cout << "Used: " << m_ShakeIntensity << " True: " << m_ShakeRepresentativeIntensity << std::endl; + m_ShakeRepresentativeIntensity -= m_ShakeRepresentativeIntensity * m_CoolerMultiplier * dt; m_ShakeIntensity = m_ShakeRepresentativeIntensity; - if (m_ShakeRepresentativeIntensity < 0.1) { + if (m_ShakeIntensity <= 0) { m_ScreenShake = false; m_Renderer->PlaceCamera(glm::vec3(0, 0, 0)); return; } } else { - std::cout << "Timer: " << m_ShakeTimer << " End: " << m_ShakeEndTime << std::endl; + //std::cout << "Timer: " << m_ShakeTimer << " End: " << m_ShakeEndTime << std::endl; } - //float randomX = (rand() % m_ShakeIntensity); - //float randomY = (rand() % m_ShakeIntensity); - - float randomX = 0; - float randomY = 0; - - std::cout << "X: " << randomX << " Y: " << randomY << std::endl; + float randomX = (rand() % m_ShakeIntensity); + float randomY = (rand() % m_ShakeIntensity); + float half = m_ShakeIntensity / 2; - //m_Renderer->PlaceCamera(glm::vec3(randomX - half, randomY - half, 0)); - } else { + randomX = (randomX - half) / 20; + randomY = (randomY - half) / 20; + //std::cout << "X: " << randomX << " Y: " << randomY << std::endl; + + m_Renderer->PlaceCamera(glm::vec3(randomX, randomY, 0)); } } @@ -632,13 +632,18 @@ private: float m_ShakeRepresentativeIntensity = 0; float m_ShakeTimer = 0; float m_ShakeEndTime = 0; + float m_TimeTakenToCoolDown = 0; + float m_CoolerMultiplier = 0; dd::EventRelay m_EScreenShake; bool OnScreenShake(const dd::Events::ScreenShake &event) { m_ScreenShake = true; m_ShakeIntensity = event.Intensity; + m_ShakeRepresentativeIntensity = event.Intensity; m_ShakeEndTime = event.Time; m_ShakeTimer = 0; + m_TimeTakenToCoolDown = event.TimeTakenToCoolDown; + m_CoolerMultiplier = m_ShakeIntensity / m_TimeTakenToCoolDown; return true; } double m_LastTime; diff --git a/include/Game/EScreenShake.h b/include/Game/EScreenShake.h index 7df1af3..a157dce 100644 --- a/include/Game/EScreenShake.h +++ b/include/Game/EScreenShake.h @@ -17,6 +17,7 @@ struct ScreenShake : Event { float Time; int Intensity; + float TimeTakenToCoolDown; }; } diff --git a/src/game/Game/PadSystem.cpp b/src/game/Game/PadSystem.cpp index c381d00..7431746 100755 --- a/src/game/Game/PadSystem.cpp +++ b/src/game/Game/PadSystem.cpp @@ -224,6 +224,7 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) { Events::ScreenShake e; e.Intensity = 20; e.Time = 3; + e.TimeTakenToCoolDown = 10; EventBroker->Publish(e); } else if (val == GLFW_KEY_Y) { Events::StickyPad e;