From 428c401f9c1053f7e13ffe641758dfb72791d8dc Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Fri, 26 Jun 2015 19:59:28 -0400 Subject: Player now moves --- src/game.cpp | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/game.cpp (limited to 'src/game.cpp') diff --git a/src/game.cpp b/src/game.cpp new file mode 100644 index 0000000..b3fa9a8 --- /dev/null +++ b/src/game.cpp @@ -0,0 +1,75 @@ +#include "game.h" +#include "components/animatable.h" +#include "components/transformable.h" +#include "components/controllable.h" +#include "components/droppable.h" +#include "components/ponderable.h" +#include "systems/rendering.h" +#include "systems/controlling.h" +#include "systems/pondering.h" + +void key_callback(GLFWwindow* window, int key, int, int action, int) +{ + Game& game = *((Game*) glfwGetWindowUserPointer(window)); + + if ((action == GLFW_PRESS) && (key == GLFW_KEY_ESCAPE)) + { + game.shouldQuit = true; + + return; + } + + game.systemManager.getSystem().input(key, action); +} + +Game::Game(GLFWwindow* window) : window(window) +{ + systemManager.emplaceSystem(*this); + systemManager.emplaceSystem(*this); + systemManager.emplaceSystem(*this); + + int player = entityManager.emplaceEntity(); + entityManager.emplaceComponent(player, "res/Starla.png", 10, 12, 6); + entityManager.emplaceComponent(player, 203, 44, 10, 12); + entityManager.emplaceComponent(player); + entityManager.emplaceComponent(player); + entityManager.emplaceComponent(player); + + glfwSwapInterval(1); + glfwSetWindowUserPointer(window, this); + glfwSetKeyCallback(window, key_callback); +} + +void Game::execute() +{ + double lastTime = glfwGetTime(); + const double dt = 0.01; + double accumulator = 0.0; + + while (!(shouldQuit || glfwWindowShouldClose(window))) + { + double currentTime = glfwGetTime(); + double frameTime = currentTime - lastTime; + lastTime = currentTime; + + glfwPollEvents(); + + accumulator += frameTime; + while (accumulator >= dt) + { + systemManager.getSystem().tick(dt); + systemManager.getSystem().tick(dt); + + accumulator -= dt; + } + + systemManager.getSystem().tick(frameTime); + } +} + +EntityManager& Game::getEntityManager() +{ + return entityManager; +} + + -- cgit 1.4.1