diff --git a/crumpet-engine/Game.cpp b/crumpet-engine/Game.cpp index 79eba24..75f7deb 100644 --- a/crumpet-engine/Game.cpp +++ b/crumpet-engine/Game.cpp @@ -1,7 +1,8 @@ #include "game.h" -Game::Game(std::string title, int width, int height, int targetFramerate, int targetUpdaterate) - : Renderer(title, width, height, targetFramerate) { +Game::Game(std::string title, int width, int height, int targetFramerate, int targetUpdaterate) { + Renderer* temp = new Renderer(title, width, height, targetFramerate); + this->renderer = temp; this->TargetMsPerFrame = targetFramerate; this->TargetMsPerUpdate = targetUpdaterate; @@ -12,7 +13,7 @@ Game::Game(std::string title, int width, int height, int targetFramerate, int ta void Game::PollEvents() { while (SDL_PollEvent(&m_event) != 0) if (m_event.type == SDL_QUIT) - this->CloseDisplay(); + this->renderer->CloseDisplay(); } Game::~Game() { diff --git a/crumpet-engine/entity.cpp b/crumpet-engine/entity.cpp index 4e8e265..9febee1 100644 --- a/crumpet-engine/entity.cpp +++ b/crumpet-engine/entity.cpp @@ -1,26 +1,14 @@ #include "entity.h" -Entity::Entity(std::string name, SDL_Renderer* SDLRenderer) - : m_rectPos(0, 0) - , m_rectSize(0, 0) - , m_col(0, 0, 0, 0) - , Pos(0, 0) - , Size(0, 0) { +Entity::Entity(std::string name) { this->m_name = name; - this->m_SDLRenderer = SDLRenderer; this->Rendertype = RenderType::MODE_TEXTURE; } -Entity::Entity(std::string name, SDL_Renderer* SDLRenderer, PolyDrawType drawType) - : m_rectPos(0, 0) - , m_rectSize(0, 0) - , m_col(0, 0, 0, 0) - , Pos(0, 0) - , Size(0, 0) { +Entity::Entity(std::string name, PolyDrawType drawType) { this->m_name = name; - this->m_SDLRenderer = SDLRenderer; this->Drawtype = drawType; this->Rendertype = RenderType::MODE_POLYGON; } @@ -60,21 +48,18 @@ bool Entity::LoadTexture(SDL_Surface* image) { } void Entity::SetDrawColour(Vec4 col) { - this->m_col = col; - SDL_SetRenderDrawColor(m_SDLRenderer, col.x, col.y, col.z, col.w); + } -void Entity::SetRect(Vec2 pos, Vec2 size) { - m_rectPos = pos; - m_rectSize = size; - m_rect = { pos.x, pos.y, size.x, size.y }; +void Entity::SetRect(Rect* rect) { + this->m_rect = rect; } -void Entity::SetVecPoints(std::vector points) { +void Entity::SetVecPoints(std::vector points) { this->m_linePoints = points; } -void Entity::AddVecPoint(Vec4 point) { +void Entity::AddVecPoint(Vec4* point) { this->m_linePoints.push_back(point); } diff --git a/crumpet-engine/entity.h b/crumpet-engine/entity.h index f09b658..38f27d7 100644 --- a/crumpet-engine/entity.h +++ b/crumpet-engine/entity.h @@ -5,6 +5,7 @@ #include #include #include +#include "rect.h" #include "mathHelper.h" enum struct RenderType { @@ -22,8 +23,8 @@ enum struct PolyDrawType { class Entity { public: - Entity(std::string name, SDL_Renderer* SDLRenderer); // Texture overload - Entity(std::string name, SDL_Renderer* SDLRenderer, PolyDrawType drawType); // Polygon overload + Entity(std::string name); // Texture overload + Entity(std::string name, PolyDrawType drawType); // Polygon overload RenderType Rendertype = RenderType::MODE_DEFAULT; PolyDrawType Drawtype = PolyDrawType::DRAW_DEFAULT; @@ -33,16 +34,16 @@ public: void SetDrawColour(Vec4 col); - void SetRect(Vec2 pos, Vec2 size); + void SetRect(Rect* rect); - void SetVecPoints(std::vector points); - void AddVecPoint(Vec4 point); + void SetVecPoints(std::vector points); + void AddVecPoint(Vec4* point); void Render(); - Vec2 Pos; - Vec2 Size; - + Vec2* Pos; + Vec2* Size; + virtual ~Entity(); protected: std::string PATH = "C:/Users/Ben/Desktop/crumpet-engine"; @@ -50,17 +51,11 @@ protected: private: std::string m_name; - Vec2 m_rectPos; - Vec2 m_rectSize; - SDL_Rect m_rect; + Rect* m_rect; + Vec4* m_col; - Vec4 m_col; - - std::vector m_linePoints; + std::vector m_linePoints; SDL_Texture* m_texture; int m_textureW; - int m_textureH; - - SDL_Renderer* m_SDLRenderer; + int m_textureH }; - diff --git a/crumpet-engine/game.h b/crumpet-engine/game.h index 7de18d8..2f99411 100644 --- a/crumpet-engine/game.h +++ b/crumpet-engine/game.h @@ -3,14 +3,18 @@ #include #include #include "renderer.h" +#include "camera.h" #include "timer.h" #include "entity.h" #include "sprite.h" -class Game : public Renderer { +class Game { public: Game(std::string title, int width, int height, int targetFramerate, int targetUpdaterate); + Renderer* renderer; + Camera* camera; + void PollEvents(); int TargetMsPerFrame; // If 0, the engine will try as many as possibe, if 1, it will use vsync diff --git a/crumpet-engine/main.cpp b/crumpet-engine/main.cpp index c3abfc3..ea2ad7d 100644 --- a/crumpet-engine/main.cpp +++ b/crumpet-engine/main.cpp @@ -9,19 +9,19 @@ int main(int argc, char** argv) { Game game("Crumpet engine", SCREEN_WIDTH, SCREEN_HEIGHT, 0, 1000 / 60); // 1000 / 60); Timer timer; - Sprite sans("sans", game.SDLRenderer, SpriteType::SPRITE_ANIMATED); + Sprite sans("sans", SpriteType::SPRITE_ANIMATED); sans.LoadSpriteTextures("/resources/sans-undertale-spritesheet.png"); sans.UseSpriteSheet(SpriteState::STATE_FRONT, 30, 9, 230, 300, 10, 4); sans.UseSpriteSheet(SpriteState::STATE_RIGHT, 30, 320, 170, 300, 10, 4); sans.UseSpriteSheet(SpriteState::STATE_LEFT, 40, 640, 170, 300, 10, 4); - sans.Pos = Vec2(100, 100); + sans.Pos = &Vec2(100, 100); - Sprite explosion("explosion", game.SDLRenderer, SpriteType::SPRITE_ANIMATED); + Sprite explosion("explosion", SpriteType::SPRITE_ANIMATED); explosion.LoadSpriteTextures("/resources/explosion.png"); explosion.UseSpriteSheet(SpriteState::STATE_DEFAULT, 1, 260, 64, 63, 0, 16); explosion.ResizeSpriteStateByFactor(SpriteState::STATE_DEFAULT, 4); - while (!game.IsDisplayClosed()) { + while (!game.renderer->IsDisplayClosed()) { game.PollEvents(); if (timer.GetTimeElapsed() >= game.TargetMsPerUpdate) { // Constant update rate, despite framerate @@ -29,10 +29,10 @@ int main(int argc, char** argv) { const Uint8 *state = SDL_GetKeyboardState(NULL); if (state[SDL_SCANCODE_D]) { sans.Spritestate = SpriteState::STATE_RIGHT; - sans.Pos.x += 10; + sans.Pos->x += 10; } else if (state[SDL_SCANCODE_A]) { sans.Spritestate = SpriteState::STATE_LEFT; - sans.Pos.x -= 10; + sans.Pos->x -= 10; } else sans.Spritestate = SpriteState::STATE_FRONT; if (timer.ticks % 5 == 0) { @@ -43,10 +43,10 @@ int main(int argc, char** argv) { timer.Tick(); } - game.RenderClear(); - game.RenderSprite(&sans); - game.RenderSprite(&explosion); - game.RenderUpdate(); + game.renderer->RenderClear(); + game.renderer->RenderSprite(&sans); + game.renderer->RenderSprite(&explosion); + game.renderer->RenderUpdate(); } return 0; diff --git a/crumpet-engine/sprite.cpp b/crumpet-engine/sprite.cpp index e7f2643..dc8f0ec 100644 --- a/crumpet-engine/sprite.cpp +++ b/crumpet-engine/sprite.cpp @@ -1,10 +1,8 @@ #include "sprite.h" Sprite::Sprite(std::string name, SDL_Renderer* SDLRenderer, SpriteType mode) - : Entity(name, SDLRenderer) - , Pos(0, 0) { + : Entity(name) { - this->m_SDLRenderer = SDLRenderer; this->Spritetype = mode; } diff --git a/crumpet-engine/sprite.h b/crumpet-engine/sprite.h index b9f3c5f..8e68a12 100644 --- a/crumpet-engine/sprite.h +++ b/crumpet-engine/sprite.h @@ -42,7 +42,7 @@ enum struct SpriteState { class Sprite : public Entity { public: - Sprite(std::string name, SDL_Renderer* SDLRenderer, SpriteType mode); + Sprite(std::string name, SpriteType mode); SpriteType Spritetype = SpriteType::SPRITE_DEFAULT; SpriteState Spritestate = SpriteState::STATE_DEFAULT; @@ -61,7 +61,7 @@ public: void MoveX(int offest); void MoveY(int offest); - Vec2 Pos; + Vec2* Pos; void Render(); virtual ~Sprite(); @@ -69,7 +69,6 @@ private: std::map > m_spriteMaps; std::map m_spriteSize; - SDL_Renderer* m_SDLRenderer; SDL_Texture* m_spriteSheetTexture; SpriteState m_lastSpritestate = SpriteState::STATE_DEFAULT;