Added Screens

This commit is contained in:
Julian Nießner
2018-05-11 10:48:06 +02:00
parent c7426bf24b
commit d07c36a4f7
5 changed files with 66 additions and 35 deletions

View File

@@ -7,7 +7,7 @@
#include <GL/glew.h> #include <GL/glew.h>
#include <iostream> #include <iostream>
#include <entityx/entityx.h> #include "screens/GameScreen.h"
DarkRP2D::~DarkRP2D() { DarkRP2D::~DarkRP2D() {
std::cout << "Game got destroyed!" << std::endl; std::cout << "Game got destroyed!" << std::endl;
@@ -15,15 +15,14 @@ DarkRP2D::~DarkRP2D() {
ImGui_ImplSdlGL3_Shutdown(); ImGui_ImplSdlGL3_Shutdown();
ImGui::DestroyContext(); ImGui::DestroyContext();
#endif #endif
delete gameScreen;
delete assets; delete assets;
delete obj;
delete inputHandler; delete inputHandler;
delete camera;
delete renderer; delete renderer;
} }
void DarkRP2D::create () { void DarkRP2D::create () {
std::cout << "Hello World!" << std::endl; std::cout << "Game got created!" << std::endl;
assets = new Assets(); assets = new Assets();
assets->loadTexture("police_officer.png",true,"police_officer"); assets->loadTexture("police_officer.png",true,"police_officer");
assets->loadShader("vert.shader","frag.shader",nullptr,"defaultShader"); assets->loadShader("vert.shader","frag.shader",nullptr,"defaultShader");
@@ -31,26 +30,11 @@ void DarkRP2D::create () {
renderer = new Renderer(); renderer = new Renderer();
std::vector<Vertex2D> 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<unsigned int> indices({
0,1,3,
1,2,3
});
obj = new Mesh(vertices,indices,assets->getTexture("police_officer"));
inputHandler = new InputHandler(); inputHandler = new InputHandler();
font = new BitmapFont("arial.ttf"); font = new BitmapFont("arial.ttf");
camera = new OrtographicCamera(); gameScreen = new GameScreen(renderer,assets);
gameScreen->show();
entityx::EntityX ex;
entityx::Entity charakter = ex.entities.create();
charakter.assign<Position>();
#ifndef NDEBUG #ifndef NDEBUG
//Setup IMGUI debugging //Setup IMGUI debugging
@@ -89,8 +73,7 @@ void DarkRP2D::update(unsigned int delta) {
command->execute(); command->execute();
} }
} }
gameScreen->update();
//camera update
} }
#ifndef NDEBUG #ifndef NDEBUG
@@ -104,17 +87,12 @@ void DarkRP2D::render(unsigned int delta) {
#ifndef NDEBUG #ifndef NDEBUG
ImGui_ImplSdlGL3_NewFrame(gWindow); ImGui_ImplSdlGL3_NewFrame(gWindow);
#endif #endif
//Drawing
Shader defaultShader = assets->getShader("defaultShader");
defaultShader.SetMatrix4("MVP",camera->getCombinedMatrix(),true);
//Draw Mesh
renderer->draw(*obj,defaultShader);
//texttest //texttest
Shader bitmapShader = assets->getShader("bitmapShader"); 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)); font->drawText(bitmapShader, "Hallo du noob", 25.0f, 25.0f, 1.f, glm::vec3(0.5f,0.8f,0.2f));
gameScreen->render();
#ifndef NDEBUG #ifndef NDEBUG
// 1. Show a simple window. // 1. Show a simple window.
@@ -135,6 +113,7 @@ void DarkRP2D::render(unsigned int delta) {
ImGui::Render(); ImGui::Render();
ImGui_ImplSdlGL3_RenderDrawData(ImGui::GetDrawData()); ImGui_ImplSdlGL3_RenderDrawData(ImGui::GetDrawData());
#endif #endif
SDL_GL_SwapWindow(gWindow); SDL_GL_SwapWindow(gWindow);
} }

View File

@@ -8,20 +8,18 @@ class DarkRP2D;
#include "Assets.h" #include "Assets.h"
#include "Renderer.h" #include "Renderer.h"
#include "Mesh.h"
#include "input/InputHandler.h" #include "input/InputHandler.h"
#include "BitmapFont.h" #include "BitmapFont.h"
#include "Camera.h" #include "screens/Screen.h"
class DarkRP2D { class DarkRP2D {
private: private:
SDL_Window* gWindow; SDL_Window* gWindow;
Assets *assets; Assets *assets;
Renderer* renderer; Renderer* renderer;
Mesh *obj;
InputHandler *inputHandler; InputHandler *inputHandler;
BitmapFont *font; BitmapFont *font;
OrtographicCamera *camera; Screen *gameScreen;
public: public:

View File

@@ -1,7 +1,38 @@
#include "GameScreen.h" #include "GameScreen.h"
#include <entityx/entityx.h>
GameScreen::GameScreen() { #include <iostream>
GameScreen::GameScreen(Renderer* renderer, Assets* assets) {
std::cout << "GameScreen got created!" << std::endl;
this->renderer = renderer;
this->assets = assets;
std::vector<Vertex2D> 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<unsigned int> 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<Position>();
}
GameScreen::~GameScreen() {
delete camera;
delete obj;
} }
void GameScreen::hide() { void GameScreen::hide() {
@@ -13,6 +44,14 @@ void GameScreen::pause() {
} }
void GameScreen::render() { void GameScreen::render() {
//Drawing
Shader defaultShader = assets->getShader("defaultShader");
defaultShader.SetMatrix4("MVP",camera->getCombinedMatrix(),true);
//Draw Mesh
renderer->draw(*obj,defaultShader);
}
void GameScreen::update() {
} }

View File

@@ -2,16 +2,30 @@
#define GAMESCREEN_H #define GAMESCREEN_H
#include "Screen.h" #include "Screen.h"
#include "../Renderer.h"
#include "../Assets.h"
#include "../Mesh.h"
#include "../Camera.h"
class GameScreen : public Screen { class GameScreen : public Screen {
GameScreen() {} public:
GameScreen(Renderer* renderer, Assets* assets);
~GameScreen();
virtual void hide() override; virtual void hide() override;
virtual void pause() override; virtual void pause() override;
virtual void render() override; virtual void render() override;
virtual void update() override;
virtual void resize() override; virtual void resize() override;
virtual void resume() override; virtual void resume() override;
virtual void show() override; virtual void show() override;
private:
Renderer* renderer;
Assets* assets;
OrtographicCamera *camera;
Mesh *obj;
}; };
#endif #endif

View File

@@ -12,6 +12,7 @@ class Screen {
virtual void hide() = 0; virtual void hide() = 0;
virtual void pause() = 0; virtual void pause() = 0;
virtual void render() = 0; virtual void render() = 0;
virtual void update() = 0;
virtual void resize() = 0; virtual void resize() = 0;
virtual void resume() = 0; virtual void resume() = 0;
virtual void show() = 0; virtual void show() = 0;