From 08a93a09010a0c977a149b3e80860323efc57f39 Mon Sep 17 00:00:00 2001 From: Ben Date: Fri, 28 Sep 2018 16:56:36 +0100 Subject: [PATCH] Renderer and entity class --- crumpet-engine/entity.cpp | 26 ++++++++++++++++++++++++++ crumpet-engine/entity.h | 19 +++++++++++++++++++ crumpet-engine/renderer.cpp | 32 ++++++++++++++++++++++++++++++++ crumpet-engine/renderer.h | 26 ++++++++++++++++++++++++++ 4 files changed, 103 insertions(+) create mode 100644 crumpet-engine/entity.cpp create mode 100644 crumpet-engine/entity.h create mode 100644 crumpet-engine/renderer.cpp create mode 100644 crumpet-engine/renderer.h diff --git a/crumpet-engine/entity.cpp b/crumpet-engine/entity.cpp new file mode 100644 index 0000000..781b01e --- /dev/null +++ b/crumpet-engine/entity.cpp @@ -0,0 +1,26 @@ +#include "entity.h" + +Entity::Entity(std::string name, SDL_Renderer* SDLRenderer) { + this->m_name = name; + this->m_SDLRenderer = SDLRenderer; +} + +bool Entity::LoadTexture(std::string path) { + SDL_Surface* loadedSurface; // TODO: IMG_Load(path.c_str()); + if (loadedSurface == NULL) { + std::cout << "Unable to load image from:" << path << " IMG ERROR: "; // TODO: << IMG_GetError() << std::endl; + return false; + } + + m_texture = SDL_CreateTextureFromSurface(m_SDLRenderer, loadedSurface); + if (m_texture == NULL) { + std::cout << "Unable to create texture from:" << path << " SDL ERROR: " << SDL_GetError() << std::endl; + return false; + } + SDL_FreeSurface(loadedSurface); + return true; +} + +Entity::~Entity() { + +} diff --git a/crumpet-engine/entity.h b/crumpet-engine/entity.h new file mode 100644 index 0000000..8ff4152 --- /dev/null +++ b/crumpet-engine/entity.h @@ -0,0 +1,19 @@ +#pragma once + +#include "game.h" + +class Entity { +public: + Entity(std::string name, SDL_Renderer* SDLRenderer); // Texture overload + // Entity(); // Polygon overload + + bool LoadTexture(std::string path); + + virtual ~Entity(); +private: + std::string m_name; + + SDL_Renderer* m_SDLRenderer; + SDL_Texture* m_texture; +}; + diff --git a/crumpet-engine/renderer.cpp b/crumpet-engine/renderer.cpp new file mode 100644 index 0000000..aa4fa35 --- /dev/null +++ b/crumpet-engine/renderer.cpp @@ -0,0 +1,32 @@ +#include "renderer.h" + +Renderer::Renderer(std::string title, int width, int height) { + if (SDL_Init(SDL_INIT_EVERYTHING) < 0) { + std::cout << "SDL could not initialize, SDL ERROR: " << SDL_GetError() << std::endl; + } + + m_window = SDL_CreateWindow(title.c_str(), SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, SDL_WINDOW_SHOWN); + SDLRenderer = SDL_CreateRenderer(m_window, -1, SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_ACCELERATED); + SDL_SetRenderDrawColor(SDLRenderer, 66, 134, 244, 255); + + isClosed = false; +} + +void Renderer::Update() { + SDL_RenderClear(SDLRenderer); + SDL_RenderPresent(SDLRenderer); +} + +bool Renderer::IsClosed() { + return isClosed; +} + +void Renderer::Close() { + isClosed = true; +} + +Renderer::~Renderer() { + isClosed = true; + SDL_DestroyWindow(m_window); + SDL_Quit(); +} diff --git a/crumpet-engine/renderer.h b/crumpet-engine/renderer.h new file mode 100644 index 0000000..e782d93 --- /dev/null +++ b/crumpet-engine/renderer.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include +#include +#include "entity.h" + +#define PATH "C:/Users/Ben/Desktop/crumpet-engine" + +class Renderer { +public: + Renderer(std::string title, int width, int height); + + SDL_Renderer *SDLRenderer; + void RenderEntity(Entity* entity); + + void Update(); + + bool IsClosed(); + void Close(); + virtual ~Renderer(); +private: + SDL_Window *m_window; + bool isClosed; +}; +