diff --git a/crumpet-engine/Game.cpp b/crumpet-engine/Game.cpp index 75f7deb..fb283aa 100644 --- a/crumpet-engine/Game.cpp +++ b/crumpet-engine/Game.cpp @@ -1,8 +1,7 @@ #include "game.h" 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->renderer = new Renderer(title, width, height, targetFramerate); this->TargetMsPerFrame = targetFramerate; this->TargetMsPerUpdate = targetUpdaterate; diff --git a/crumpet-engine/crumpet-engine.h b/crumpet-engine/crumpet-engine.h new file mode 100644 index 0000000..318a159 --- /dev/null +++ b/crumpet-engine/crumpet-engine.h @@ -0,0 +1,5 @@ +#pragma once + +#include "game.h" +#include "timer.h" +#include "sprite.h" diff --git a/crumpet-engine/crumpet-engine.vcxproj b/crumpet-engine/crumpet-engine.vcxproj index 5aabf09..493cb23 100644 --- a/crumpet-engine/crumpet-engine.vcxproj +++ b/crumpet-engine/crumpet-engine.vcxproj @@ -137,6 +137,7 @@ + diff --git a/crumpet-engine/crumpet-engine.vcxproj.filters b/crumpet-engine/crumpet-engine.vcxproj.filters index 1e81b6d..5bc25b9 100644 --- a/crumpet-engine/crumpet-engine.vcxproj.filters +++ b/crumpet-engine/crumpet-engine.vcxproj.filters @@ -47,5 +47,8 @@ headers + + headers + \ No newline at end of file diff --git a/crumpet-engine/entity.cpp b/crumpet-engine/entity.cpp index 64f81f1..5e1fe74 100644 --- a/crumpet-engine/entity.cpp +++ b/crumpet-engine/entity.cpp @@ -1,7 +1,12 @@ #include "entity.h" -Entity::Entity(std::string name, Renderer* renderer) { +Entity::Entity(std::string name, Renderer* renderer) + : Pos(new Vec2(0, 0)) + , Size(new Vec2(0, 0)) + , m_col(new Vec4(0, 0, 0, 255)) + , m_rect(new Rect(0, 0, 0, 0)) { + this->m_renderer = renderer; this->m_name = name; this->Rendertype = RenderType::MODE_TEXTURE; } @@ -47,8 +52,8 @@ bool Entity::LoadTexture(SDL_Surface* image) { return true; } -void Entity::SetDrawColour(Vec4 col) { - +void Entity::SetDrawColour(Vec4* col) { + m_renderer->SetRendererColour(col); } void Entity::SetRect(Rect* rect) { diff --git a/crumpet-engine/entity.h b/crumpet-engine/entity.h index de683f9..35648ed 100644 --- a/crumpet-engine/entity.h +++ b/crumpet-engine/entity.h @@ -1,13 +1,12 @@ #pragma once -#include #include +#include #include #include #include -#include "renderer.h" #include "rect.h" -#include "mathHelper.h" +#include "game.h" enum struct RenderType { MODE_DEFAULT, @@ -33,7 +32,7 @@ public: bool LoadTexture(std::string path); bool LoadTexture(SDL_Surface* image); - void SetDrawColour(Vec4 col); + void SetDrawColour(Vec4* col); void SetRect(Rect* rect); diff --git a/crumpet-engine/game.h b/crumpet-engine/game.h index 2f99411..69579e0 100644 --- a/crumpet-engine/game.h +++ b/crumpet-engine/game.h @@ -4,9 +4,6 @@ #include #include "renderer.h" #include "camera.h" -#include "timer.h" -#include "entity.h" -#include "sprite.h" class Game { public: diff --git a/crumpet-engine/main.cpp b/crumpet-engine/main.cpp index eaf6b1b..c81b06a 100644 --- a/crumpet-engine/main.cpp +++ b/crumpet-engine/main.cpp @@ -1,4 +1,4 @@ -#include "game.h" +#include "crumpet-engine.h" #undef main @@ -7,16 +7,18 @@ int main(int argc, char** argv) { Game game("Crumpet engine", SCREEN_WIDTH, SCREEN_HEIGHT, 0, 1000 / 60); // 1000 / 60); + Camera camera(SCREEN_WIDTH, SCREEN_HEIGHT); + game.camera = &camera; Timer timer; - Sprite sans("sans", SpriteType::SPRITE_ANIMATED); + Sprite sans("sans", game.renderer, 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); - Sprite explosion("explosion", SpriteType::SPRITE_ANIMATED); + Sprite explosion("explosion", game.renderer ,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); @@ -35,8 +37,6 @@ int main(int argc, char** argv) { sans.Pos->x -= 10; } else sans.Spritestate = SpriteState::STATE_FRONT; - - if (timer.ticks % 5 == 0) { sans.TickAninmation(); explosion.TickAninmation(); @@ -46,8 +46,8 @@ int main(int argc, char** argv) { } game.renderer->RenderClear(); - game.renderer->RenderSprite(&sans); - game.renderer->RenderSprite(&explosion); + sans.Render(); + explosion.Render(); game.renderer->RenderUpdate(); } diff --git a/crumpet-engine/rect.cpp b/crumpet-engine/rect.cpp index d1a09f3..42fe968 100644 --- a/crumpet-engine/rect.cpp +++ b/crumpet-engine/rect.cpp @@ -1,10 +1,12 @@ #include "rect.h" -Rect::Rect() { +Rect::Rect() + : rect(new SDL_Rect{ 0, 0, 0, 0 }) { Clear(); } -Rect::Rect(int x, int y, int w, int h) { +Rect::Rect(int x, int y, int w, int h) + : rect(new SDL_Rect{ x, y, w, h }) { SetRect(x, y, w, h); } @@ -115,7 +117,15 @@ int Rect::Area() { } void Rect::SetRect(int x, int y, int w, int h) { + this->x = x; + this->y = y; + this->w = w; + this->h = h; + this->rect->x = x; + this->rect->y = y; + this->rect->w = w; + this->rect->h = h; } void Rect::SetSize(Vec2* size) { diff --git a/crumpet-engine/renderer.cpp b/crumpet-engine/renderer.cpp index 28105b1..983415a 100644 --- a/crumpet-engine/renderer.cpp +++ b/crumpet-engine/renderer.cpp @@ -21,29 +21,16 @@ Renderer::Renderer(std::string title, int width, int height, int targetFramerate isClosed = false; } -void Renderer::RenderEntity(Entity* entity) { - entity->Render(); -} - -void Renderer::RenderSprite(Sprite* sprite, SpriteState state) { - sprite->Spritestate = state; - sprite->Render(); -} - -void Renderer::RenderSprite(Sprite* sprite) { - sprite->Render(); -} - void Renderer::SetRendererColour(Vec4* col) { SDL_SetRenderDrawColor(SDLRenderer, col->x, col->y, col->z, col->w); } void Renderer::RenderEmptyRect(Rect* rect) { - SDL_RenderDrawRect(SDLRenderer, rect->ToSDLRect); + SDL_RenderDrawRect(SDLRenderer, rect->ToSDLRect()); } void Renderer::RenderFilledRect(Rect* rect) { - SDL_RenderFillRect(SDLRenderer, rect->ToSDLRect); + SDL_RenderFillRect(SDLRenderer, rect->ToSDLRect()); } void Renderer::RenderLines(std::vector points) { diff --git a/crumpet-engine/renderer.h b/crumpet-engine/renderer.h index 68ae1bb..ea149a8 100644 --- a/crumpet-engine/renderer.h +++ b/crumpet-engine/renderer.h @@ -4,8 +4,6 @@ #include #include #include -#include "entity.h" -#include "sprite.h" #include "rect.h" class Renderer { @@ -14,13 +12,7 @@ public: SDL_Renderer *SDLRenderer; - void RenderEntity(Entity* entity); - - void RenderSprite(Sprite* sprite, SpriteState state); - void RenderSprite(Sprite* sprite); - void SetRendererColour(Vec4* col); - void RenderEmptyRect(Rect* rect); void RenderFilledRect(Rect* rect); void RenderLines(std::vector points); diff --git a/crumpet-engine/sprite.cpp b/crumpet-engine/sprite.cpp index c0cfcde..81d3933 100644 --- a/crumpet-engine/sprite.cpp +++ b/crumpet-engine/sprite.cpp @@ -1,7 +1,8 @@ #include "sprite.h" Sprite::Sprite(std::string name, Renderer* renderer, SpriteType mode) - : Entity(name, renderer) { + : Entity(name, renderer) + , Pos(new Vec2(0, 0)) { this->Spritetype = mode; } diff --git a/crumpet-engine/sprite.h b/crumpet-engine/sprite.h index 98bd1ad..35c7db4 100644 --- a/crumpet-engine/sprite.h +++ b/crumpet-engine/sprite.h @@ -38,7 +38,7 @@ enum struct SpriteState { class Sprite : public Entity { public: Sprite(std::string name, Renderer* renderer, SpriteType mode); - + SpriteType Spritetype = SpriteType::SPRITE_DEFAULT; SpriteState Spritestate = SpriteState::STATE_DEFAULT; @@ -51,7 +51,7 @@ public: void ResizeSpritesByFactor(float factor); void ResizeSpriteState(SpriteState state, Vec2* newSize); void ResizeSpriteStateByFactor(SpriteState state, float factor); - + void Move(Vec2* offest); void MoveX(int offest); void MoveY(int offest); @@ -61,11 +61,11 @@ public: virtual ~Sprite(); private: - std::map > m_spriteMaps; - std::map m_spriteSize; + std::map> m_spriteMaps; + std::map m_spriteSize; SDL_Texture* m_spriteSheetTexture; - + SpriteState m_lastSpritestate = SpriteState::STATE_DEFAULT; int m_spriteSheetW; int m_spriteSheetH;