From d07c36a4f77c1011f1f8dec0ca0e56daeb453b7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Nie=C3=9Fner?= Date: Fri, 11 May 2018 10:48:06 +0200 Subject: [PATCH] Added Screens --- src/DarkRP2D.cpp | 37 ++++++++-------------------------- src/DarkRP2D.h | 6 ++---- src/screens/GameScreen.cpp | 41 +++++++++++++++++++++++++++++++++++++- src/screens/GameScreen.h | 16 ++++++++++++++- src/screens/Screen.h | 1 + 5 files changed, 66 insertions(+), 35 deletions(-) diff --git a/src/DarkRP2D.cpp b/src/DarkRP2D.cpp index f28645c..5727a14 100644 --- a/src/DarkRP2D.cpp +++ b/src/DarkRP2D.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include "screens/GameScreen.h" DarkRP2D::~DarkRP2D() { std::cout << "Game got destroyed!" << std::endl; @@ -15,15 +15,14 @@ DarkRP2D::~DarkRP2D() { ImGui_ImplSdlGL3_Shutdown(); ImGui::DestroyContext(); #endif + delete gameScreen; delete assets; - delete obj; delete inputHandler; - delete camera; delete renderer; } void DarkRP2D::create () { - std::cout << "Hello World!" << std::endl; + std::cout << "Game got created!" << std::endl; assets = new Assets(); assets->loadTexture("police_officer.png",true,"police_officer"); assets->loadShader("vert.shader","frag.shader",nullptr,"defaultShader"); @@ -31,26 +30,11 @@ void DarkRP2D::create () { renderer = new Renderer(); - 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(); font = new BitmapFont("arial.ttf"); - camera = new OrtographicCamera(); - - entityx::EntityX ex; - entityx::Entity charakter = ex.entities.create(); - charakter.assign(); + gameScreen = new GameScreen(renderer,assets); + gameScreen->show(); #ifndef NDEBUG //Setup IMGUI debugging @@ -89,8 +73,7 @@ void DarkRP2D::update(unsigned int delta) { command->execute(); } } - - //camera update + gameScreen->update(); } #ifndef NDEBUG @@ -104,17 +87,12 @@ void DarkRP2D::render(unsigned int delta) { #ifndef NDEBUG ImGui_ImplSdlGL3_NewFrame(gWindow); #endif - - //Drawing - Shader defaultShader = assets->getShader("defaultShader"); - defaultShader.SetMatrix4("MVP",camera->getCombinedMatrix(),true); - //Draw Mesh - renderer->draw(*obj,defaultShader); //texttest Shader bitmapShader = assets->getShader("bitmapShader"); font->drawText(bitmapShader, "Hallo du noob", 25.0f, 25.0f, 1.f, glm::vec3(0.5f,0.8f,0.2f)); + gameScreen->render(); #ifndef NDEBUG // 1. Show a simple window. @@ -135,6 +113,7 @@ void DarkRP2D::render(unsigned int delta) { ImGui::Render(); ImGui_ImplSdlGL3_RenderDrawData(ImGui::GetDrawData()); #endif + SDL_GL_SwapWindow(gWindow); } diff --git a/src/DarkRP2D.h b/src/DarkRP2D.h index ee38fc2..800f140 100644 --- a/src/DarkRP2D.h +++ b/src/DarkRP2D.h @@ -8,20 +8,18 @@ class DarkRP2D; #include "Assets.h" #include "Renderer.h" -#include "Mesh.h" #include "input/InputHandler.h" #include "BitmapFont.h" -#include "Camera.h" +#include "screens/Screen.h" class DarkRP2D { private: SDL_Window* gWindow; Assets *assets; Renderer* renderer; - Mesh *obj; InputHandler *inputHandler; BitmapFont *font; - OrtographicCamera *camera; + Screen *gameScreen; public: diff --git a/src/screens/GameScreen.cpp b/src/screens/GameScreen.cpp index 4ab6f9d..815d300 100644 --- a/src/screens/GameScreen.cpp +++ b/src/screens/GameScreen.cpp @@ -1,7 +1,38 @@ #include "GameScreen.h" +#include -GameScreen::GameScreen() { +#include + +GameScreen::GameScreen(Renderer* renderer, Assets* assets) { + std::cout << "GameScreen got created!" << std::endl; + this->renderer = renderer; + this->assets = assets; + + 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")); + + camera = new OrtographicCamera(); + + //Create Entities + //entityx::EntityX ex; + //entityx::Entity charakter = ex.entities.create(); + //charakter.assign(); +} + +GameScreen::~GameScreen() { + delete camera; + delete obj; } void GameScreen::hide() { @@ -13,6 +44,14 @@ void GameScreen::pause() { } void GameScreen::render() { + //Drawing + Shader defaultShader = assets->getShader("defaultShader"); + defaultShader.SetMatrix4("MVP",camera->getCombinedMatrix(),true); + //Draw Mesh + renderer->draw(*obj,defaultShader); +} + +void GameScreen::update() { } diff --git a/src/screens/GameScreen.h b/src/screens/GameScreen.h index 0b78021..78735bf 100644 --- a/src/screens/GameScreen.h +++ b/src/screens/GameScreen.h @@ -2,16 +2,30 @@ #define GAMESCREEN_H #include "Screen.h" +#include "../Renderer.h" +#include "../Assets.h" +#include "../Mesh.h" +#include "../Camera.h" class GameScreen : public Screen { - GameScreen() {} + public: + GameScreen(Renderer* renderer, Assets* assets); + ~GameScreen(); virtual void hide() override; virtual void pause() override; virtual void render() override; + virtual void update() override; virtual void resize() override; virtual void resume() override; virtual void show() override; + + private: + Renderer* renderer; + Assets* assets; + + OrtographicCamera *camera; + Mesh *obj; }; #endif \ No newline at end of file diff --git a/src/screens/Screen.h b/src/screens/Screen.h index 846d70e..3ba7f39 100644 --- a/src/screens/Screen.h +++ b/src/screens/Screen.h @@ -12,6 +12,7 @@ class Screen { virtual void hide() = 0; virtual void pause() = 0; virtual void render() = 0; + virtual void update() = 0; virtual void resize() = 0; virtual void resume() = 0; virtual void show() = 0;