#include "GameScreen.h" #include "../entities/components/Position.h" #include "../entities/components/Direction.h" #include "../entities/components/Renderable.h" #include "../entities/MovementSystem.h" #include "../entities/RenderSystem.h" #include #include GameScreen::GameScreen(Renderer *renderer, Assets *assets) { std::cout << "GameScreen got created!" << std::endl; this->renderer = renderer; this->assets = assets; //Vertex2D can be defined like this, because it an aggregate class. // see https://stackoverflow.com/questions/4178175/what-are-aggregates-and-pods-and-how-why-are-they-special std::vector vertices({Vertex2D{glm::vec2(-0.5f, -0.5f), glm::vec2(0.0f, 1.0f)}, Vertex2D{glm::vec2(0.5f, -0.5f), glm::vec2(1.0f, 1.0f)}, Vertex2D{glm::vec2(0.5f, 0.5f), glm::vec2(1.0f, 0.0f)}, Vertex2D{glm::vec2(-0.5f, 0.5f), glm::vec2(0.0f, 0.0f)}}); std::vector indices({0, 1, 3, 1, 2, 3}); obj = new Mesh(vertices, indices, assets->getTexture("police_officer")); inputHandler = new InputHandler(); camera = new OrtographicCamera(); //Create Entities entityx::Entity charakter = ex.entities.create(); charakter.assign(); charakter.assign(1.f,0.f); //apply speed right charakter.assign(obj, "defaultShader"); ex.systems.add(); ex.systems.add(renderer,camera,assets); ex.systems.configure(); } GameScreen::~GameScreen() { delete camera; delete obj; delete inputHandler; } void GameScreen::hide() { } void GameScreen::pause() { } void GameScreen::render(unsigned int delta) { double dt = ((double) delta) * 0.001; //(10^-3) milli ex.systems.update(dt); /*//Drawing Shader defaultShader = assets->getShader("defaultShader"); defaultShader.SetMatrix4("MVP", camera->getCombinedMatrix(), true); //Draw Mesh renderer->draw(*obj, defaultShader);*/ } void GameScreen::update(unsigned int delta) { SDL_Event event; while (SDL_PollEvent(&event) != 0) { Command *command = inputHandler->handleInput(&event); if (command) { command->execute(*camera); } } double dt = ((double) delta) * 0.001; //(10^-3) milli ex.systems.update(dt); } void GameScreen::resize() { } void GameScreen::resume() { } void GameScreen::show() { }