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;