diff options
Diffstat (limited to 'src/game.cpp')
| -rw-r--r-- | src/game.cpp | 73 |
1 files changed, 43 insertions, 30 deletions
| diff --git a/src/game.cpp b/src/game.cpp index 5d1ec18..492e4d0 100644 --- a/src/game.cpp +++ b/src/game.cpp | |||
| @@ -4,40 +4,59 @@ | |||
| 4 | #include "components/controllable.h" | 4 | #include "components/controllable.h" |
| 5 | #include "components/droppable.h" | 5 | #include "components/droppable.h" |
| 6 | #include "components/ponderable.h" | 6 | #include "components/ponderable.h" |
| 7 | #include "components/orientable.h" | ||
| 7 | #include "systems/rendering.h" | 8 | #include "systems/rendering.h" |
| 8 | #include "systems/controlling.h" | 9 | #include "systems/controlling.h" |
| 9 | #include "systems/pondering.h" | 10 | #include "systems/pondering.h" |
| 11 | #include "systems/animating.h" | ||
| 12 | #include "animation.h" | ||
| 10 | 13 | ||
| 11 | void key_callback(GLFWwindow* window, int key, int, int action, int) | 14 | void key_callback(GLFWwindow* window, int key, int, int action, int) |
| 12 | { | 15 | { |
| 13 | Game& game = *((Game*) glfwGetWindowUserPointer(window)); | 16 | Game& game = *((Game*) glfwGetWindowUserPointer(window)); |
| 14 | 17 | ||
| 15 | if ((action == GLFW_PRESS) && (key == GLFW_KEY_ESCAPE)) | 18 | if ((action == GLFW_PRESS) && (key == GLFW_KEY_ESCAPE)) |
| 16 | { | 19 | { |
| 17 | game.shouldQuit = true; | 20 | game.shouldQuit_ = true; |
| 18 | 21 | ||
| 19 | return; | 22 | return; |
| 20 | } | 23 | } |
| 21 | 24 | ||
| 22 | game.systemManager.getSystem<ControllingSystem>().input(key, action); | 25 | game.systemManager_.getSystem<ControllingSystem>().input(key, action); |
| 23 | } | 26 | } |
| 24 | 27 | ||
| 25 | Game::Game(GLFWwindow* window) : window(window) | 28 | Game::Game(GLFWwindow* window) : window_(window) |
| 26 | { | 29 | { |
| 27 | systemManager.emplaceSystem<ControllingSystem>(*this); | 30 | systemManager_.emplaceSystem<ControllingSystem>(*this); |
| 28 | systemManager.emplaceSystem<RenderingSystem>(*this); | 31 | systemManager_.emplaceSystem<PonderingSystem>(*this); |
| 29 | systemManager.emplaceSystem<PonderingSystem>(*this); | 32 | systemManager_.emplaceSystem<RenderingSystem>(*this); |
| 30 | 33 | systemManager_.emplaceSystem<AnimatingSystem>(*this); | |
| 31 | int player = entityManager.emplaceEntity(); | 34 | |
| 32 | entityManager.emplaceComponent<AnimatableComponent>(player, "res/Starla.png", 10, 12, 6); | 35 | int player = entityManager_.emplaceEntity(); |
| 33 | entityManager.emplaceComponent<TransformableComponent>(player, 203, 44, 10, 12); | 36 | |
| 34 | entityManager.emplaceComponent<DroppableComponent>(player); | 37 | AnimationSet playerGraphics {"res/Starla2.bmp", 10, 12, 6}; |
| 35 | entityManager.emplaceComponent<PonderableComponent>(player); | 38 | playerGraphics.emplaceAnimation("stillLeft", 3, 1, 1); |
| 36 | entityManager.emplaceComponent<ControllableComponent>(player); | 39 | playerGraphics.emplaceAnimation("stillRight", 0, 1, 1); |
| 37 | 40 | playerGraphics.emplaceAnimation("walkingLeft", 4, 2, 10); | |
| 41 | playerGraphics.emplaceAnimation("walkingRight", 1, 2, 10); | ||
| 42 | |||
| 43 | entityManager_.emplaceComponent<AnimatableComponent>( | ||
| 44 | player, | ||
| 45 | std::move(playerGraphics), | ||
| 46 | "stillLeft"); | ||
| 47 | |||
| 48 | entityManager_.emplaceComponent<TransformableComponent>( | ||
| 49 | player, | ||
| 50 | 203, 44, 10, 12); | ||
| 51 | |||
| 52 | entityManager_.emplaceComponent<DroppableComponent>(player); | ||
| 53 | entityManager_.emplaceComponent<PonderableComponent>(player); | ||
| 54 | entityManager_.emplaceComponent<ControllableComponent>(player); | ||
| 55 | entityManager_.emplaceComponent<OrientableComponent>(player); | ||
| 56 | |||
| 38 | glfwSwapInterval(1); | 57 | glfwSwapInterval(1); |
| 39 | glfwSetWindowUserPointer(window, this); | 58 | glfwSetWindowUserPointer(window_, this); |
| 40 | glfwSetKeyCallback(window, key_callback); | 59 | glfwSetKeyCallback(window_, key_callback); |
| 41 | } | 60 | } |
| 42 | 61 | ||
| 43 | void Game::execute() | 62 | void Game::execute() |
| @@ -46,7 +65,7 @@ void Game::execute() | |||
| 46 | const double dt = 0.01; | 65 | const double dt = 0.01; |
| 47 | double accumulator = 0.0; | 66 | double accumulator = 0.0; |
| 48 | 67 | ||
| 49 | while (!(shouldQuit || glfwWindowShouldClose(window))) | 68 | while (!(shouldQuit_ || glfwWindowShouldClose(window_))) |
| 50 | { | 69 | { |
| 51 | double currentTime = glfwGetTime(); | 70 | double currentTime = glfwGetTime(); |
| 52 | double frameTime = currentTime - lastTime; | 71 | double frameTime = currentTime - lastTime; |
| @@ -57,19 +76,13 @@ void Game::execute() | |||
| 57 | accumulator += frameTime; | 76 | accumulator += frameTime; |
| 58 | while (accumulator >= dt) | 77 | while (accumulator >= dt) |
| 59 | { | 78 | { |
| 60 | systemManager.getSystem<ControllingSystem>().tick(dt); | 79 | systemManager_.getSystem<ControllingSystem>().tick(dt); |
| 61 | systemManager.getSystem<PonderingSystem>().tick(dt); | 80 | systemManager_.getSystem<PonderingSystem>().tick(dt); |
| 81 | systemManager_.getSystem<AnimatingSystem>().tick(dt); | ||
| 62 | 82 | ||
| 63 | accumulator -= dt; | 83 | accumulator -= dt; |
| 64 | } | 84 | } |
| 65 | 85 | ||
| 66 | systemManager.getSystem<RenderingSystem>().tick(frameTime); | 86 | systemManager_.getSystem<RenderingSystem>().tick(frameTime); |
| 67 | } | 87 | } |
| 68 | } | 88 | } |
| 69 | |||
| 70 | EntityManager& Game::getEntityManager() | ||
| 71 | { | ||
| 72 | return entityManager; | ||
| 73 | } | ||
| 74 | |||
| 75 | |||
