From 725536a4c31086d420fd378ba2a0e2d266429402 Mon Sep 17 00:00:00 2001 From: Ben Date: Tue, 9 Oct 2018 09:09:33 +0100 Subject: [PATCH] (BROKEN) finished refractor, weird compiler and intelisense bugs, not sure what's wrong --- crumpet-engine/entity.cpp | 27 ++++++++++++--------------- crumpet-engine/entity.h | 10 ++++++---- crumpet-engine/main.cpp | 4 +++- crumpet-engine/renderer.h | 1 - crumpet-engine/sprite.cpp | 24 ++++++++++++------------ crumpet-engine/sprite.h | 9 ++------- 6 files changed, 35 insertions(+), 40 deletions(-) diff --git a/crumpet-engine/entity.cpp b/crumpet-engine/entity.cpp index 9febee1..64f81f1 100644 --- a/crumpet-engine/entity.cpp +++ b/crumpet-engine/entity.cpp @@ -1,12 +1,12 @@ #include "entity.h" -Entity::Entity(std::string name) { +Entity::Entity(std::string name, Renderer* renderer) { this->m_name = name; this->Rendertype = RenderType::MODE_TEXTURE; } -Entity::Entity(std::string name, PolyDrawType drawType) { +Entity::Entity(std::string name, Renderer* renderer, PolyDrawType drawType) { this->m_name = name; this->Drawtype = drawType; @@ -20,7 +20,7 @@ bool Entity::LoadTexture(std::string path) { return false; } - m_texture = SDL_CreateTextureFromSurface(m_SDLRenderer, loadedSurface); + m_texture = SDL_CreateTextureFromSurface(m_renderer->SDLRenderer, loadedSurface); if (m_texture == NULL) { std::cout << "Unable to create texture from:" << (PATH + path).c_str() << " SDL ERROR: " << SDL_GetError() << std::endl; return false; @@ -29,15 +29,15 @@ bool Entity::LoadTexture(std::string path) { this->m_textureW = loadedSurface->w; this->m_textureH = loadedSurface->h; - this->Size.x = loadedSurface->w; - this->Size.y = loadedSurface->h; + this->Size->x = loadedSurface->w; + this->Size->y = loadedSurface->h; SDL_FreeSurface(loadedSurface); return true; } bool Entity::LoadTexture(SDL_Surface* image) { - m_texture = SDL_CreateTextureFromSurface(m_SDLRenderer, image); + m_texture = SDL_CreateTextureFromSurface(m_renderer->SDLRenderer, image); if (m_texture == NULL) { std::cout << "Unable to create texture SDL ERROR: " << SDL_GetError() << std::endl; return false; @@ -65,22 +65,19 @@ void Entity::AddVecPoint(Vec4* point) { void Entity::Render() { if (Rendertype == RenderType::MODE_TEXTURE) { - SDL_Rect renderQuad = { Pos.x, Pos.y, Size.x, Size.y }; - SDL_RenderCopy(m_SDLRenderer, m_texture, NULL, &renderQuad); + Rect renderQuad(Pos->x, Pos->y, Size->x, Size->y); + m_renderer->RenderTexture(m_rect, &renderQuad, m_texture); } - if (Rendertype == RenderType::MODE_POLYGON) { - SDL_SetRenderDrawColor(m_SDLRenderer, m_col.x, m_col.y, m_col.z, m_col.w); + m_renderer->SetRendererColour(m_col); if (Drawtype == PolyDrawType::DRAW_FILLED_RECT) - SDL_RenderFillRect(m_SDLRenderer, &m_rect); + m_renderer->RenderFilledRect(m_rect); if (Drawtype == PolyDrawType::DRAW_OUTLINE_RECT) - SDL_RenderDrawRect(m_SDLRenderer, &m_rect); + m_renderer->RenderEmptyRect(m_rect); if (Drawtype == PolyDrawType::DRAW_LINES) { - for (unsigned int i = 0; i < m_linePoints.size(); i++) { - SDL_RenderDrawLine(m_SDLRenderer, m_linePoints[i].x, m_linePoints[i].y, m_linePoints[i].z, m_linePoints[i].w); - } + m_renderer->RenderLines(m_linePoints); } } } diff --git a/crumpet-engine/entity.h b/crumpet-engine/entity.h index 38f27d7..de683f9 100644 --- a/crumpet-engine/entity.h +++ b/crumpet-engine/entity.h @@ -5,6 +5,7 @@ #include #include #include +#include "renderer.h" #include "rect.h" #include "mathHelper.h" @@ -22,9 +23,9 @@ enum struct PolyDrawType { }; class Entity { -public: - Entity(std::string name); // Texture overload - Entity(std::string name, PolyDrawType drawType); // Polygon overload +public: + Entity(std::string name, Renderer* renderer); // Texture overload + Entity(std::string name, Renderer* renderer, PolyDrawType drawType); // Polygon overload RenderType Rendertype = RenderType::MODE_DEFAULT; PolyDrawType Drawtype = PolyDrawType::DRAW_DEFAULT; @@ -46,6 +47,7 @@ public: virtual ~Entity(); protected: + Renderer* m_renderer; std::string PATH = "C:/Users/Ben/Desktop/crumpet-engine"; // std::string PATH = "E:/Games/crumpet-engine"; private: @@ -57,5 +59,5 @@ private: std::vector m_linePoints; SDL_Texture* m_texture; int m_textureW; - int m_textureH + int m_textureH; }; diff --git a/crumpet-engine/main.cpp b/crumpet-engine/main.cpp index ea2ad7d..eaf6b1b 100644 --- a/crumpet-engine/main.cpp +++ b/crumpet-engine/main.cpp @@ -34,7 +34,9 @@ int main(int argc, char** argv) { sans.Spritestate = SpriteState::STATE_LEFT; sans.Pos->x -= 10; } else sans.Spritestate = SpriteState::STATE_FRONT; - + + + if (timer.ticks % 5 == 0) { sans.TickAninmation(); explosion.TickAninmation(); diff --git a/crumpet-engine/renderer.h b/crumpet-engine/renderer.h index a02c3ab..68ae1bb 100644 --- a/crumpet-engine/renderer.h +++ b/crumpet-engine/renderer.h @@ -42,4 +42,3 @@ private: SDL_Window *m_window; bool isClosed; }; - diff --git a/crumpet-engine/sprite.cpp b/crumpet-engine/sprite.cpp index dc8f0ec..c0cfcde 100644 --- a/crumpet-engine/sprite.cpp +++ b/crumpet-engine/sprite.cpp @@ -1,7 +1,7 @@ #include "sprite.h" -Sprite::Sprite(std::string name, SDL_Renderer* SDLRenderer, SpriteType mode) - : Entity(name) { +Sprite::Sprite(std::string name, Renderer* renderer, SpriteType mode) + : Entity(name, renderer) { this->Spritetype = mode; } @@ -14,7 +14,7 @@ bool Sprite::LoadSpriteTextures(std::string path) { } this->m_spriteSheetW = loadedSurface->w; this->m_spriteSheetH = loadedSurface->h; - m_spriteSheetTexture = SDL_CreateTextureFromSurface(m_SDLRenderer, loadedSurface); + m_spriteSheetTexture = SDL_CreateTextureFromSurface(m_renderer->SDLRenderer, loadedSurface); SDL_FreeSurface(loadedSurface); return true; @@ -24,14 +24,14 @@ void Sprite::UseSpriteSheet(SpriteState state, int startX, int startY, int width for (int i = 1; i <= frames; i++) { if (i == 1) { std::cout << startX << " " << startY << " " << width << " " << i << std::endl; - SDL_Rect temp1 = { startX, startY, width, height }; - SDL_Rect* temp = new SDL_Rect(temp1); + Rect temp1 = { startX, startY, width, height }; + Rect* temp = new Rect(temp1); m_spriteMaps[state][i] = temp; } else { int x = (width * i) + startX + (separation * i - separation) - width; std::cout << x << " " << startY << " " << width << " " << i << std::endl; - SDL_Rect temp1 = { x, startY, width, height }; - SDL_Rect* temp = new SDL_Rect(temp1); + Rect temp1 = { x, startY, width, height }; + Rect* temp = new Rect(temp1); m_spriteMaps[state][i] = temp; } } @@ -84,16 +84,16 @@ void Sprite::ResizeSpriteStateByFactor(SpriteState state, float factor) { } void Sprite::Move(Vec2* offset) { - Pos.x += offset->x; - Pos.y += offset->y; + Pos->x += offset->x; + Pos->y += offset->y; } void Sprite::Render() { - SDL_Rect* currentFrameClip = m_spriteMaps[Spritestate][m_currentFrame]; + Rect* currentFrameClip = m_spriteMaps[Spritestate][m_currentFrame]; Vec2* currentRenderSize = m_spriteSize[Spritestate]; - SDL_Rect currentFrameDest = { Pos.x, Pos.y, currentRenderSize->x, currentRenderSize->y}; + Rect currentFrameDest(Pos->x, Pos->y, currentRenderSize->x, currentRenderSize->y); - SDL_RenderCopy(m_SDLRenderer, m_spriteSheetTexture, currentFrameClip, ¤tFrameDest); + m_renderer->RenderTexture(currentFrameClip, ¤tFrameDest, m_spriteSheetTexture); } Sprite::~Sprite() { diff --git a/crumpet-engine/sprite.h b/crumpet-engine/sprite.h index 8e68a12..98bd1ad 100644 --- a/crumpet-engine/sprite.h +++ b/crumpet-engine/sprite.h @@ -1,11 +1,6 @@ #pragma once -#include -#include -#include #include -#include -#include #include "entity.h" enum struct SpriteType { @@ -42,7 +37,7 @@ enum struct SpriteState { class Sprite : public Entity { public: - Sprite(std::string name, SpriteType mode); + Sprite(std::string name, Renderer* renderer, SpriteType mode); SpriteType Spritetype = SpriteType::SPRITE_DEFAULT; SpriteState Spritestate = SpriteState::STATE_DEFAULT; @@ -66,7 +61,7 @@ public: virtual ~Sprite(); private: - std::map > m_spriteMaps; + std::map > m_spriteMaps; std::map m_spriteSize; SDL_Texture* m_spriteSheetTexture;