From 6a81751e56a44b797fddb5e83df4578dd79bb566 Mon Sep 17 00:00:00 2001 From: PlatinumSkink Date: Thu, 10 Sep 2015 20:28:48 +0200 Subject: [PATCH] WIP Level System + Pad --- include/Core/Engine.h | 3 + include/Game/LevelSystem.h | 6 +- include/Game/PadSystem.h | 15 ++++- include/Transform/TransformSystem.h | 2 +- src/game/Game/LevelSystem.cpp | 7 +- src/game/Game/PadSystem.cpp | 88 ++++++++++++++++++++++---- src/game/Transform/TransformSystem.cpp | 6 ++ 7 files changed, 108 insertions(+), 19 deletions(-) diff --git a/include/Core/Engine.h b/include/Core/Engine.h index ab4cf4e..96a28ef 100644 --- a/include/Core/Engine.h +++ b/include/Core/Engine.h @@ -35,6 +35,7 @@ #include "CTemplate.h" #include "Transform/TransformSystem.h" #include "Game/LevelSystem.h" +#include "Game/PadSystem.h" namespace dd { @@ -61,6 +62,8 @@ public: m_World->AddSystem(); m_World->SystemFactory.Register([this]() { return new Systems::LevelSystem(m_World.get(), m_EventBroker); }); m_World->AddSystem(); + m_World->SystemFactory.Register([this]() { return new Systems::PadSystem(m_World.get(), m_EventBroker); }); + m_World->AddSystem(); m_World->ComponentFactory.Register(); m_World->ComponentFactory.Register(); m_World->ComponentFactory.Register(); diff --git a/include/Game/LevelSystem.h b/include/Game/LevelSystem.h index 770a7c3..4147a0e 100644 --- a/include/Game/LevelSystem.h +++ b/include/Game/LevelSystem.h @@ -7,7 +7,7 @@ #include "Core/System.h" #include "Core/CTransform.h" -//#include "Rendering/CSprite.h" +#include "Rendering/CSprite.h" #include "Core/EventBroker.h" #include "Game/CBrick.h" #include "Core/World.h" @@ -56,8 +56,8 @@ private: int numberOfBricks; int tRows = 8; int tLines = 8; - int tSpaceBetweenBricks = 30; - int tSpaceToEdge = 30; + int tSpaceBetweenBricks = 2; + int tSpaceToEdge = 0; }; } diff --git a/include/Game/PadSystem.h b/include/Game/PadSystem.h index 986ffda..8364c8b 100644 --- a/include/Game/PadSystem.h +++ b/include/Game/PadSystem.h @@ -9,7 +9,11 @@ #include "Core/System.h" #include "Core/EventBroker.h" #include "Core/EKeyDown.h" +#include "Core/EKeyUp.h" #include "Input/EBindKey.h" +#include "Core/CTransform.h" +#include "Rendering/CSprite.h" +#include "Core/Component.h" namespace dd { @@ -24,14 +28,23 @@ public: : System(world, eventBroker) { } - void Initialize() override ; + void Initialize() override; + void Update(double dt) override; private: dd::EventRelay m_EKeyDown; + dd::EventRelay m_EKeyUp; class PadSteeringInputController; std::array, 4> m_PadInputControllers; bool OnKeyDown(const dd::Events::KeyDown &event); + bool OnKeyUp(const dd::Events::KeyUp &event); + + EntityID ent; + std::shared_ptr transform; + std::shared_ptr sprite; + glm::vec3 acceleration = glm::vec3(0.f, 0.f, 0.f); + bool left = false, right = false; }; class PadSystem::PadSteeringInputController : InputController diff --git a/include/Transform/TransformSystem.h b/include/Transform/TransformSystem.h index 433a6cf..7583fc3 100644 --- a/include/Transform/TransformSystem.h +++ b/include/Transform/TransformSystem.h @@ -39,7 +39,7 @@ public: TransformSystem(World* world, std::shared_ptr eventBroker) : System(world, eventBroker) { } - //void Update(double dt) override; + void Update(double dt) override; Components::Transform AbsoluteTransform(EntityID entity); glm::vec3 AbsolutePosition(EntityID entity); diff --git a/src/game/Game/LevelSystem.cpp b/src/game/Game/LevelSystem.cpp index 57e5ebd..6cbee59 100644 --- a/src/game/Game/LevelSystem.cpp +++ b/src/game/Game/LevelSystem.cpp @@ -34,10 +34,11 @@ void dd::Systems::LevelSystem::CreateBrick(int row, int line, int spacesBetweenB { auto brick = m_World->CreateEntity(); std::shared_ptr transform = m_World->AddComponent(brick); - //std::shared_ptr sprite = m_World->AddComponent(brick); + std::shared_ptr sprite = m_World->AddComponent(brick); + sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; float x = spaceToEdge + line * spacesBetweenBricks; - float y = spaceToEdge + line * spacesBetweenBricks; - transform->Position = glm::vec3(x, y, 0.f); + float y = spaceToEdge + row * spacesBetweenBricks; + transform->Position = glm::vec3(x-5, y-5, -10.f); //sprite->Color = glm::vec4(1.f, 1.f, 1.f, 1.f); return; } diff --git a/src/game/Game/PadSystem.cpp b/src/game/Game/PadSystem.cpp index 648dbef..b90c873 100644 --- a/src/game/Game/PadSystem.cpp +++ b/src/game/Game/PadSystem.cpp @@ -5,6 +5,7 @@ #include "PrecompiledHeader.h" #include "Game/PadSystem.h" #include "Core/World.h" +#include void dd::Systems::PadSystem::Initialize() @@ -16,47 +17,112 @@ void dd::Systems::PadSystem::Initialize() Events::BindKey l; l.KeyCode = GLFW_KEY_LEFT; - l.Command = "right"; + l.Command = "left"; EventBroker->Publish(l); + ent = m_World->CreateEntity(); + transform = m_World->AddComponent(ent); + transform->Position = glm::vec3(0.f, -5.f, -10.f); + sprite = m_World->AddComponent(ent); + sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; + EVENT_SUBSCRIBE_MEMBER(m_EKeyDown, PadSystem::OnKeyDown); + EVENT_SUBSCRIBE_MEMBER(m_EKeyUp, PadSystem::OnKeyUp); + + return; +} + +void dd::Systems::PadSystem::Update(double dt) +{ + if (transform->Velocity.x < -400.f) + { + transform->Velocity.x = -400.f; + } + else if (transform->Velocity.x > 400.f) + { + transform->Velocity.x = 400.f; + } + transform->Position += transform->Velocity * (float)dt; + transform->Velocity += acceleration * (float)dt; + transform->Velocity -= transform->Velocity * (0.9f * (float)dt); + + if (left) + { + acceleration.x = -20.f; + } + else if (right) + { + acceleration.x = 20.f; + } + else + { + acceleration.x = 0.f; + } return; } bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) { - + int val = event.KeyCode; + if (val == 265) + { + //std::cout << "Up!" << std::endl; + } + else if (val == 264) + { + //std::cout << "Down!" << std::endl; + } + else if (val == 263) + { + //std::cout << "Left!" << std::endl; + //acceleration.x = -0.01f; + left = true; + } + else if (val = 262) + { + //std::cout << "Right!" << std::endl; + //acceleration.x = 0.01f; + right = true; + } return true; } -/*bool dd::Systems::PadSteeringInputController::OnCommand(const Events::InputCommand &event) +bool dd::Systems::PadSystem::OnKeyUp(const dd::Events::KeyUp &event) { - std::string command = event.Command; - - if (command == "right") + int val = event.KeyCode; + if (val == 265) { } - else if (command == "left") + else if (val == 264) { } - + else if (val == 263) + { + left = false; + } + else if (val = 262) + { + right = false; + } return true; -}*/ +} bool dd::Systems::PadSystem::PadSteeringInputController::OnCommand(const Events::InputCommand &event) { std::string command = event.Command; + std::cout << "Command!" << std::endl; + if (command == "right") { - + std::cout << "Right!" << std::endl; } else if (command == "left") { - + std::cout << "Left!" << std::endl; } return true; diff --git a/src/game/Transform/TransformSystem.cpp b/src/game/Transform/TransformSystem.cpp index c015df4..d154ab3 100644 --- a/src/game/Transform/TransformSystem.cpp +++ b/src/game/Transform/TransformSystem.cpp @@ -20,6 +20,12 @@ #include "Transform/TransformSystem.h" #include "Core/World.h" +void dd::Systems::TransformSystem::Update(double dt) +{ + + return; +} + glm::vec3 dd::Systems::TransformSystem::AbsolutePosition(EntityID entity) { glm::vec3 absPosition;