(BROKEN) started to refractor as stated in TODO

This commit is contained in:
Ben
2018-10-08 17:54:43 +01:00
parent 91cc2343e4
commit f6e42e5f72
7 changed files with 42 additions and 60 deletions

View File

@@ -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() {

View File

@@ -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<Vec4> points) {
void Entity::SetVecPoints(std::vector<Vec4*> points) {
this->m_linePoints = points;
}
void Entity::AddVecPoint(Vec4 point) {
void Entity::AddVecPoint(Vec4* point) {
this->m_linePoints.push_back(point);
}

View File

@@ -5,6 +5,7 @@
#include <vector>
#include <SDL.h>
#include <SDL_image.h>
#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<Vec4> points);
void AddVecPoint(Vec4 point);
void SetVecPoints(std::vector<Vec4*> 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<Vec4> m_linePoints;
std::vector<Vec4*> m_linePoints;
SDL_Texture* m_texture;
int m_textureW;
int m_textureH;
SDL_Renderer* m_SDLRenderer;
int m_textureH
};

View File

@@ -3,14 +3,18 @@
#include <string>
#include <SDL.h>
#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

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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 <SpriteState, std::map<int, SDL_Rect*>> m_spriteMaps;
std::map <SpriteState, Vec2*> m_spriteSize;
SDL_Renderer* m_SDLRenderer;
SDL_Texture* m_spriteSheetTexture;
SpriteState m_lastSpritestate = SpriteState::STATE_DEFAULT;