diff --git a/crumpet-engine/crumpet-engine.vcxproj b/crumpet-engine/crumpet-engine.vcxproj
index cb423f5..e5c8e8a 100644
--- a/crumpet-engine/crumpet-engine.vcxproj
+++ b/crumpet-engine/crumpet-engine.vcxproj
@@ -129,7 +129,6 @@
-
diff --git a/crumpet-engine/crumpet-engine.vcxproj.filters b/crumpet-engine/crumpet-engine.vcxproj.filters
index e2b78bf..e9c6468 100644
--- a/crumpet-engine/crumpet-engine.vcxproj.filters
+++ b/crumpet-engine/crumpet-engine.vcxproj.filters
@@ -5,7 +5,6 @@
-
@@ -33,6 +32,8 @@
headers
-
+
+ headers
+
\ No newline at end of file
diff --git a/crumpet-engine/entity.cpp b/crumpet-engine/entity.cpp
index 99fc063..505bbdf 100644
--- a/crumpet-engine/entity.cpp
+++ b/crumpet-engine/entity.cpp
@@ -3,7 +3,8 @@
Entity::Entity(std::string name, SDL_Renderer* SDLRenderer)
: m_rectPos(0, 0),
m_rectSize(0, 0),
- m_col(0, 0, 0, 0) {
+ m_col(0, 0, 0, 0),
+ Pos(0, 0) {
this->m_name = name;
this->m_SDLRenderer = SDLRenderer;
@@ -12,8 +13,9 @@ Entity::Entity(std::string name, SDL_Renderer* SDLRenderer)
Entity::Entity(std::string name, SDL_Renderer* SDLRenderer, PolyDrawType drawType)
: m_rectPos(0, 0),
- m_rectSize(0, 0),
- m_col(0, 0, 0, 0) {
+ m_rectSize(0, 0),
+ m_col(0, 0, 0, 0),
+ Pos(0, 0) {
this->m_name = name;
this->m_SDLRenderer = SDLRenderer;
@@ -34,6 +36,9 @@ bool Entity::LoadTexture(std::string path) {
return false;
}
+ this->m_textureW = loadedSurface->w;
+ this->m_textureH = loadedSurface->h;
+
SDL_FreeSurface(loadedSurface);
return true;
}
@@ -69,8 +74,12 @@ void Entity::AddVecPoint(Vec4 point) {
}
void Entity::Render() {
- if (Rendertype == RenderType::MODE_TEXTURE)
- SDL_RenderCopy(m_SDLRenderer, m_texture, NULL, NULL);
+ if (Rendertype == RenderType::MODE_TEXTURE) {
+ SDL_Rect renderQuad = { Pos.x, Pos.y, m_textureW, m_textureH };
+ SDL_RenderCopy(m_SDLRenderer, m_texture, NULL, &renderQuad);
+ }
+
+
if (Rendertype == RenderType::MODE_POLYGON) {
SDL_SetRenderDrawColor(m_SDLRenderer, m_col.x, m_col.y, m_col.z, m_col.w);
if (Drawtype == PolyDrawType::DRAW_FILLED_RECT)
@@ -87,5 +96,5 @@ void Entity::Render() {
}
Entity::~Entity() {
-
+ SDL_DestroyTexture(m_texture);
}
diff --git a/crumpet-engine/entity.h b/crumpet-engine/entity.h
index d14d0c6..334957f 100644
--- a/crumpet-engine/entity.h
+++ b/crumpet-engine/entity.h
@@ -40,6 +40,11 @@ public:
void Render();
+ Vec2 Pos;
+
+ std::string PATH = "C:/Users/Ben/Desktop/crumpet-engine";
+ // std::string PATH = "E:/Games/crumpet-engine";
+
virtual ~Entity();
private:
std::string m_name;
@@ -52,9 +57,8 @@ private:
std::vector m_linePoints;
SDL_Texture* m_texture;
-
- // std::string PATH = "C:/Users/Ben/Desktop/crumpet-engine";
- std::string PATH = "E:/Games/crumpet-engine";
+ int m_textureW;
+ int m_textureH;
SDL_Renderer* m_SDLRenderer;
};
diff --git a/crumpet-engine/main.cpp b/crumpet-engine/main.cpp
index 611c9b1..a866f9f 100644
--- a/crumpet-engine/main.cpp
+++ b/crumpet-engine/main.cpp
@@ -12,21 +12,22 @@ int main(int argc, char** argv) {
Entity mario("mario", game.SDLRenderer);
mario.LoadTexture("/resources/mario.png");
- Entity box("box", game.SDLRenderer, PolyDrawType::DRAW_FILLED_RECT);
- box.SetDrawColour(Vec4(144, 022, 111, 255));
- box.SetRect(Vec2(0, 0), Vec2(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2));
+// Entity box("box", game.SDLRenderer, PolyDrawType::DRAW_FILLED_RECT);
+// box.SetDrawColour(Vec4(144, 022, 111, 255));
+// box.SetRect(Vec2(0, 0), Vec2(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2));
- Entity boxOutline("box", game.SDLRenderer, PolyDrawType::DRAW_OUTLINE_RECT);
- boxOutline.SetDrawColour(Vec4(144, 111, 111, 255));
- boxOutline.SetRect(Vec2(100, 100), Vec2(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2));
+// Entity boxOutline("box", game.SDLRenderer, PolyDrawType::DRAW_OUTLINE_RECT);
+// boxOutline.SetDrawColour(Vec4(144, 111, 111, 255));
+// boxOutline.SetRect(Vec2(100, 100), Vec2(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2));
- Entity mesh("mesh", game.SDLRenderer, PolyDrawType::DRAW_LINES);
- mesh.SetDrawColour(Vec4(255, 244, 111, 255));
- mesh.AddVecPoint(Vec4(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT));
- mesh.AddVecPoint(Vec4(SCREEN_WIDTH, 0, 0, SCREEN_HEIGHT));
+// Entity mesh("mesh", game.SDLRenderer, PolyDrawType::DRAW_LINES);
+// mesh.SetDrawColour(Vec4(255, 244, 111, 255));
+// mesh.AddVecPoint(Vec4(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT));
+// mesh.AddVecPoint(Vec4(SCREEN_WIDTH, 0, 0, SCREEN_HEIGHT));
Sprite sans("sans", game.SDLRenderer, SpriteType::SPRITE_ANIMATED);
-
+ sans.LoadSpriteTextures("/resources/sans-undertale-spritesheet.png");
+ // sans.UseSpriteSheet
while (!game.IsDisplayClosed()) {
game.PollEvents();
@@ -39,10 +40,12 @@ int main(int argc, char** argv) {
}
game.RenderClear();
+
game.RenderEntity(&mario);
- game.RenderEntity(&box);
- game.RenderEntity(&mesh);
- game.RenderEntity(&boxOutline);
+// game.RenderEntity(&box);
+// game.RenderEntity(&mesh);
+// game.RenderEntity(&boxOutline);
+
game.RenderUpdate();
}
diff --git a/crumpet-engine/sprite.cpp b/crumpet-engine/sprite.cpp
index 1e3ad95..25d2511 100644
--- a/crumpet-engine/sprite.cpp
+++ b/crumpet-engine/sprite.cpp
@@ -3,8 +3,28 @@
Sprite::Sprite(std::string name, SDL_Renderer* SDLRenderer, SpriteType mode)
: Entity(name, SDLRenderer) {
+ this->m_SDLRenderer = SDLRenderer;
+ this->Spritetype = mode;
+}
+
+bool Sprite::LoadSpriteTextures(std::string path) {
+ SDL_Surface* loadedSurface = IMG_Load((PATH + path).c_str());
+ if (loadedSurface == NULL) {
+ std::cout << "Unable to load image from:" << (PATH + path).c_str() << " IMG ERROR: " << IMG_GetError() << std::endl;
+ return false;
+ }
+ this->m_spriteSheetW = loadedSurface->w;
+ this->m_spriteSheetH = loadedSurface->h;
+ m_spriteSheetTexture = SDL_CreateTextureFromSurface(m_SDLRenderer, loadedSurface);
+
+ SDL_FreeSurface(loadedSurface);
+ return true;
+}
+
+void Sprite::UseSpriteSheet(SpriteState state, int startx, int starty, int width, int height, int seperation, int frames) {
+ m_spriteMaps[state];
}
Sprite::~Sprite() {
-
+ SDL_DestroyTexture(m_spriteSheetTexture);
}
diff --git a/crumpet-engine/sprite.h b/crumpet-engine/sprite.h
index 3873c4b..99ef557 100644
--- a/crumpet-engine/sprite.h
+++ b/crumpet-engine/sprite.h
@@ -3,6 +3,7 @@
#include
#include
#include
+#include