@@ -6,7 +6,7 @@ noinst_LIBRARIES = libcommon.a | |||||
libcommon_a_SOURCES = \ | libcommon_a_SOURCES = \ | ||||
game.cpp game.h tiler.cpp tiler.h tileset.cpp tileset.h \ | game.cpp game.h tiler.cpp tiler.h tileset.cpp tileset.h \ | ||||
scene.cpp scene.h font.cpp font.h layer.cpp layer.h map.cpp map.h \ | scene.cpp scene.h font.cpp font.h layer.cpp layer.h map.cpp map.h \ | ||||
joystick.cpp joystick.h asset.cpp asset.h ticker.cpp ticker.h \ | |||||
joystick.cpp joystick.h entity.cpp entity.h ticker.cpp ticker.h \ | |||||
forge.cpp forge.h video.cpp video.h timer.cpp timer.h \ | forge.cpp forge.h video.cpp video.h timer.cpp timer.h \ | ||||
profiler.cpp profiler.h \ | profiler.cpp profiler.h \ | ||||
debugfps.cpp debugfps.h debugsprite.cpp debugsprite.h \ | debugfps.cpp debugfps.h debugsprite.cpp debugsprite.h \ | ||||
@@ -38,14 +38,14 @@ DebugFps::DebugFps() | |||||
data->frame = 0; | data->frame = 0; | ||||
} | } | ||||
Asset::Group DebugFps::GetGroup() | |||||
Entity::Group DebugFps::GetGroup() | |||||
{ | { | ||||
return GROUP_AFTER; | return GROUP_AFTER; | ||||
} | } | ||||
void DebugFps::TickRender(float delta_time) | void DebugFps::TickRender(float delta_time) | ||||
{ | { | ||||
Asset::TickRender(delta_time); | |||||
Entity::TickRender(delta_time); | |||||
data->frame++; | data->frame++; | ||||
@@ -11,11 +11,11 @@ | |||||
#if !defined __DH_DEBUGFPS_H__ | #if !defined __DH_DEBUGFPS_H__ | ||||
#define __DH_DEBUGFPS_H__ | #define __DH_DEBUGFPS_H__ | ||||
#include "asset.h" | |||||
#include "entity.h" | |||||
class DebugFpsData; | class DebugFpsData; | ||||
class DebugFps : public Asset | |||||
class DebugFps : public Entity | |||||
{ | { | ||||
public: | public: | ||||
DebugFps(); | DebugFps(); | ||||
@@ -42,19 +42,19 @@ DebugRecord::DebugRecord(char const *path) | |||||
data->sequence = NULL; | data->sequence = NULL; | ||||
} | } | ||||
Asset::Group DebugRecord::GetGroup() | |||||
Entity::Group DebugRecord::GetGroup() | |||||
{ | { | ||||
return GROUP_RENDER_CAPTURE; | return GROUP_RENDER_CAPTURE; | ||||
} | } | ||||
void DebugRecord::TickGame(float delta_time) | void DebugRecord::TickGame(float delta_time) | ||||
{ | { | ||||
Asset::TickGame(delta_time); | |||||
Entity::TickGame(delta_time); | |||||
} | } | ||||
void DebugRecord::TickRender(float delta_time) | void DebugRecord::TickRender(float delta_time) | ||||
{ | { | ||||
Asset::TickRender(delta_time); | |||||
Entity::TickRender(delta_time); | |||||
int width = Video::GetWidth(); | int width = Video::GetWidth(); | ||||
int height = Video::GetHeight(); | int height = Video::GetHeight(); | ||||
@@ -11,11 +11,11 @@ | |||||
#if !defined __DH_DEBUGRECORD_H__ | #if !defined __DH_DEBUGRECORD_H__ | ||||
#define __DH_DEBUGRECORD_H__ | #define __DH_DEBUGRECORD_H__ | ||||
#include "asset.h" | |||||
#include "entity.h" | |||||
class DebugRecordData; | class DebugRecordData; | ||||
class DebugRecord : public Asset | |||||
class DebugRecord : public Entity | |||||
{ | { | ||||
public: | public: | ||||
DebugRecord(char const *path); | DebugRecord(char const *path); | ||||
@@ -38,19 +38,19 @@ DebugSprite::DebugSprite(Game *game) | |||||
data->tiler = Tiler::Register("art/test/character-dress.png"); | data->tiler = Tiler::Register("art/test/character-dress.png"); | ||||
} | } | ||||
Asset::Group DebugSprite::GetGroup() | |||||
Entity::Group DebugSprite::GetGroup() | |||||
{ | { | ||||
return GROUP_DEFAULT; | return GROUP_DEFAULT; | ||||
} | } | ||||
void DebugSprite::TickGame(float delta_time) | void DebugSprite::TickGame(float delta_time) | ||||
{ | { | ||||
Asset::TickGame(delta_time); | |||||
Entity::TickGame(delta_time); | |||||
} | } | ||||
void DebugSprite::TickRender(float delta_time) | void DebugSprite::TickRender(float delta_time) | ||||
{ | { | ||||
Asset::TickRender(delta_time); | |||||
Entity::TickRender(delta_time); | |||||
data->game->GetScene()->AddTile((data->tiler << 16) | 15, 320, 240, 32, 1); | data->game->GetScene()->AddTile((data->tiler << 16) | 15, 320, 240, 32, 1); | ||||
data->game->GetScene()->AddTile((data->tiler << 16) | 31, 320, 240, 0, 1); | data->game->GetScene()->AddTile((data->tiler << 16) | 31, 320, 240, 0, 1); | ||||
@@ -11,12 +11,12 @@ | |||||
#if !defined __DH_DEBUGSPRITE_H__ | #if !defined __DH_DEBUGSPRITE_H__ | ||||
#define __DH_DEBUGSPRITE_H__ | #define __DH_DEBUGSPRITE_H__ | ||||
#include "asset.h" | |||||
#include "entity.h" | |||||
#include "game.h" | #include "game.h" | ||||
class DebugSpriteData; | class DebugSpriteData; | ||||
class DebugSprite : public Asset | |||||
class DebugSprite : public Entity | |||||
{ | { | ||||
public: | public: | ||||
DebugSprite(Game *game); | DebugSprite(Game *game); | ||||
@@ -10,14 +10,14 @@ | |||||
#include <cstdlib> | #include <cstdlib> | ||||
#include <cstdio> | #include <cstdio> | ||||
#include "asset.h" | |||||
#include "entity.h" | |||||
#include "ticker.h" | #include "ticker.h" | ||||
/* | /* | ||||
* Public Asset class | |||||
* Public Entity class | |||||
*/ | */ | ||||
Asset::Asset() : | |||||
Entity::Entity() : | |||||
next(0), | next(0), | ||||
ref(0), | ref(0), | ||||
destroy(0) | destroy(0) | ||||
@@ -28,43 +28,43 @@ Asset::Asset() : | |||||
Ticker::Register(this); | Ticker::Register(this); | ||||
} | } | ||||
Asset::~Asset() | |||||
Entity::~Entity() | |||||
{ | { | ||||
#if !FINAL_RELEASE | #if !FINAL_RELEASE | ||||
if (!destroy) | if (!destroy) | ||||
fprintf(stderr, "ERROR: asset destructor called directly\n"); | |||||
fprintf(stderr, "ERROR: entity destructor called directly\n"); | |||||
#endif | #endif | ||||
} | } | ||||
Asset::Group Asset::GetGroup() | |||||
Entity::Group Entity::GetGroup() | |||||
{ | { | ||||
return GROUP_DEFAULT; | return GROUP_DEFAULT; | ||||
} | } | ||||
void Asset::TickGame(float delta_time) | |||||
void Entity::TickGame(float delta_time) | |||||
{ | { | ||||
#if !FINAL_RELEASE | #if !FINAL_RELEASE | ||||
if (state != STATE_PRETICK_GAME) | if (state != STATE_PRETICK_GAME) | ||||
fprintf(stderr, "ERROR: invalid asset game tick\n"); | |||||
fprintf(stderr, "ERROR: invalid entity game tick\n"); | |||||
state = STATE_POSTTICK_GAME; | state = STATE_POSTTICK_GAME; | ||||
#endif | #endif | ||||
} | } | ||||
void Asset::TickRender(float delta_time) | |||||
void Entity::TickRender(float delta_time) | |||||
{ | { | ||||
#if !FINAL_RELEASE | #if !FINAL_RELEASE | ||||
if (state != STATE_PRETICK_RENDER) | if (state != STATE_PRETICK_RENDER) | ||||
fprintf(stderr, "ERROR: invalid asset render tick\n"); | |||||
fprintf(stderr, "ERROR: invalid entity render tick\n"); | |||||
state = STATE_POSTTICK_RENDER; | state = STATE_POSTTICK_RENDER; | ||||
#endif | #endif | ||||
} | } | ||||
void Asset::Ref() | |||||
void Entity::Ref() | |||||
{ | { | ||||
ref++; | ref++; | ||||
} | } | ||||
int Asset::Unref() | |||||
int Entity::Unref() | |||||
{ | { | ||||
return --ref; | return --ref; | ||||
} | } |
@@ -4,19 +4,19 @@ | |||||
// | // | ||||
// | // | ||||
// The Asset class | |||||
// The Entity class | |||||
// --------------- | // --------------- | ||||
// Assets are objects that can be ticked by the game loop and/or the render | |||||
// loop. Assets are implemented as one or several linked lists. See the | |||||
// Entities are objects that can be ticked by the game loop and/or the render | |||||
// loop. Entities are implemented as one or several linked lists. See the | |||||
// Ticker class for the ticking logic and the linked list implementation. | // Ticker class for the ticking logic and the linked list implementation. | ||||
// | // | ||||
#if !defined __DH_ASSET_H__ | |||||
#define __DH_ASSET_H__ | |||||
#if !defined __DH_ENTITY_H__ | |||||
#define __DH_ENTITY_H__ | |||||
#include <stdint.h> | #include <stdint.h> | ||||
class Asset | |||||
class Entity | |||||
{ | { | ||||
friend class Ticker; | friend class Ticker; | ||||
friend class TickerData; | friend class TickerData; | ||||
@@ -37,15 +37,15 @@ protected: | |||||
} | } | ||||
Group; | Group; | ||||
Asset(); | |||||
virtual ~Asset(); | |||||
Entity(); | |||||
virtual ~Entity(); | |||||
virtual Group GetGroup(); | virtual Group GetGroup(); | ||||
virtual void TickGame(float delta_time); | virtual void TickGame(float delta_time); | ||||
virtual void TickRender(float delta_time); | virtual void TickRender(float delta_time); | ||||
Asset *next; | |||||
Entity *next; | |||||
int ref, destroy; | int ref, destroy; | ||||
#if !FINAL_RELEASE | #if !FINAL_RELEASE | ||||
@@ -61,5 +61,5 @@ protected: | |||||
#endif | #endif | ||||
}; | }; | ||||
#endif // __DH_ASSET_H__ | |||||
#endif // __DH_ENTITY_H__ | |||||
@@ -76,14 +76,14 @@ Font::~Font() | |||||
delete data; | delete data; | ||||
} | } | ||||
Asset::Group Font::GetGroup() | |||||
Entity::Group Font::GetGroup() | |||||
{ | { | ||||
return GROUP_BEFORE; | return GROUP_BEFORE; | ||||
} | } | ||||
void Font::TickRender(float delta_time) | void Font::TickRender(float delta_time) | ||||
{ | { | ||||
Asset::TickRender(delta_time); | |||||
Entity::TickRender(delta_time); | |||||
} | } | ||||
char const *Font::GetName() | char const *Font::GetName() | ||||
@@ -11,18 +11,18 @@ | |||||
#if !defined __DH_FONT_H__ | #if !defined __DH_FONT_H__ | ||||
#define __DH_FONT_H__ | #define __DH_FONT_H__ | ||||
#include "asset.h" | |||||
#include "entity.h" | |||||
class FontData; | class FontData; | ||||
class Font : public Asset | |||||
class Font : public Entity | |||||
{ | { | ||||
public: | public: | ||||
Font(char const *path); | Font(char const *path); | ||||
~Font(); | ~Font(); | ||||
protected: | protected: | ||||
/* Inherited from Asset */ | |||||
/* Inherited from Entity */ | |||||
virtual Group GetGroup(); | virtual Group GetGroup(); | ||||
virtual void TickRender(float delta_time); | virtual void TickRender(float delta_time); | ||||
@@ -48,19 +48,19 @@ Game::~Game() | |||||
delete data; | delete data; | ||||
} | } | ||||
Asset::Group Game::GetGroup() | |||||
Entity::Group Game::GetGroup() | |||||
{ | { | ||||
return Asset::GetGroup(); | |||||
return Entity::GetGroup(); | |||||
} | } | ||||
void Game::TickGame(float delta_time) | void Game::TickGame(float delta_time) | ||||
{ | { | ||||
Asset::TickGame(delta_time); | |||||
Entity::TickGame(delta_time); | |||||
} | } | ||||
void Game::TickRender(float delta_time) | void Game::TickRender(float delta_time) | ||||
{ | { | ||||
Asset::TickRender(delta_time); | |||||
Entity::TickRender(delta_time); | |||||
GetScene(); | GetScene(); | ||||
@@ -11,19 +11,19 @@ | |||||
#if !defined __DH_GAME_H__ | #if !defined __DH_GAME_H__ | ||||
#define __DH_GAME_H__ | #define __DH_GAME_H__ | ||||
#include "asset.h" | |||||
#include "entity.h" | |||||
#include "scene.h" | #include "scene.h" | ||||
class GameData; | class GameData; | ||||
class Game : public Asset | |||||
class Game : public Entity | |||||
{ | { | ||||
public: | public: | ||||
Game(char const *mapname); | Game(char const *mapname); | ||||
~Game(); | ~Game(); | ||||
protected: | protected: | ||||
/* Inherited from Asset */ | |||||
/* Inherited from Entity */ | |||||
virtual Group GetGroup(); | virtual Group GetGroup(); | ||||
virtual void TickGame(float delta_time); | virtual void TickGame(float delta_time); | ||||
virtual void TickRender(float delta_time); | virtual void TickRender(float delta_time); | ||||
@@ -38,7 +38,7 @@ static gboolean tick(void *widget) | |||||
{ | { | ||||
// FIXME: do not do anything if the previous tick was too recent? | // FIXME: do not do anything if the previous tick was too recent? | ||||
// FIXME: only quit if all assets have been cleaned | |||||
// FIXME: only quit if all entities have been cleaned | |||||
if (quit) | if (quit) | ||||
return FALSE; | return FALSE; | ||||
@@ -83,6 +83,16 @@ void Scene::AddTile(uint32_t code, int x, int y, int z, int o) | |||||
void Scene::Render() // XXX: rename to Blit() | void Scene::Render() // XXX: rename to Blit() | ||||
{ | { | ||||
#if 0 | |||||
// Randomise, then sort. | |||||
for (int i = 0; i < data->ntiles; i++) | |||||
{ | |||||
Tile tmp = data->tiles[i]; | |||||
int j = rand() % data->ntiles; | |||||
data->tiles[i] = data->tiles[j]; | |||||
data->tiles[j] = tmp; | |||||
} | |||||
#endif | |||||
qsort(data->tiles, data->ntiles, sizeof(Tile), SceneData::Compare); | qsort(data->tiles, data->ntiles, sizeof(Tile), SceneData::Compare); | ||||
// XXX: debug stuff | // XXX: debug stuff | ||||
@@ -91,9 +101,10 @@ void Scene::Render() // XXX: rename to Blit() | |||||
f += 0.05f; | f += 0.05f; | ||||
glTranslatef(320.0f, 240.0f, 0.0f); | glTranslatef(320.0f, 240.0f, 0.0f); | ||||
glRotatef(45.0f, 1.0f, 0.0f, 0.0f); | glRotatef(45.0f, 1.0f, 0.0f, 0.0f); | ||||
//glRotatef(5.0f + 3.0f * sinf(f), 1.0f, 0.0f, 0.0f); | |||||
//glRotatef(20.0f * cosf(f), 0.0f, 0.0f, 1.0f); | |||||
//glRotatef(30.0f, 0.0f, 0.0f, 1.0f); | |||||
#if 0 | |||||
glRotatef(3.0f * sinf(f), 1.0f, 0.0f, 0.0f); | |||||
glRotatef(8.0f * cosf(f), 0.0f, 0.0f, 1.0f); | |||||
#endif | |||||
glTranslatef(-320.0f, -240.0f, 0.0f); | glTranslatef(-320.0f, -240.0f, 0.0f); | ||||
for (int i = 0; i < data->ntiles; i++) | for (int i = 0; i < data->ntiles; i++) | ||||
@@ -35,14 +35,14 @@ SdlInput::SdlInput(Game *game) | |||||
data->game = game; | data->game = game; | ||||
} | } | ||||
Asset::Group SdlInput::GetGroup() | |||||
Entity::Group SdlInput::GetGroup() | |||||
{ | { | ||||
return GROUP_BEFORE; | return GROUP_BEFORE; | ||||
} | } | ||||
void SdlInput::TickGame(float delta_time) | void SdlInput::TickGame(float delta_time) | ||||
{ | { | ||||
Asset::TickGame(delta_time); | |||||
Entity::TickGame(delta_time); | |||||
if (data->game->Finished()) | if (data->game->Finished()) | ||||
destroy = 1; | destroy = 1; | ||||
@@ -11,12 +11,12 @@ | |||||
#if !defined __DH_SDLINPUT_H__ | #if !defined __DH_SDLINPUT_H__ | ||||
#define __DH_SDLINPUT_H__ | #define __DH_SDLINPUT_H__ | ||||
#include "asset.h" | |||||
#include "entity.h" | |||||
#include "game.h" | #include "game.h" | ||||
class SdlInputData; | class SdlInputData; | ||||
class SdlInput : public Asset | |||||
class SdlInput : public Entity | |||||
{ | { | ||||
public: | public: | ||||
SdlInput(Game *game); | SdlInput(Game *game); | ||||
@@ -13,7 +13,7 @@ | |||||
#include "profiler.h" | #include "profiler.h" | ||||
#include "ticker.h" | #include "ticker.h" | ||||
#include "asset.h" | |||||
#include "entity.h" | |||||
#include "timer.h" | #include "timer.h" | ||||
/* | /* | ||||
@@ -27,9 +27,9 @@ static class TickerData | |||||
public: | public: | ||||
TickerData() : | TickerData() : | ||||
todo(0), | todo(0), | ||||
nassets(0) | |||||
nentities(0) | |||||
{ | { | ||||
for (int i = 0; i < Asset::GROUP_COUNT; i++) | |||||
for (int i = 0; i < Entity::GROUP_COUNT; i++) | |||||
list[i] = NULL; | list[i] = NULL; | ||||
bias = 0.0f; | bias = 0.0f; | ||||
} | } | ||||
@@ -37,16 +37,16 @@ public: | |||||
~TickerData() | ~TickerData() | ||||
{ | { | ||||
#if !FINAL_RELEASE | #if !FINAL_RELEASE | ||||
if (nassets) | |||||
fprintf(stderr, "ERROR: still %i assets in ticker\n", nassets); | |||||
if (nentities) | |||||
fprintf(stderr, "ERROR: still %i entities in ticker\n", nentities); | |||||
#endif | #endif | ||||
} | } | ||||
private: | private: | ||||
/* Asset management */ | |||||
Asset *todo; | |||||
Asset *list[Asset::GROUP_COUNT]; | |||||
int nassets; | |||||
/* Entity management */ | |||||
Entity *todo; | |||||
Entity *list[Entity::GROUP_COUNT]; | |||||
int nentities; | |||||
/* Fixed framerate management */ | /* Fixed framerate management */ | ||||
Timer timer; | Timer timer; | ||||
@@ -60,13 +60,13 @@ static TickerData * const data = &tickerdata; | |||||
* Ticker public class | * Ticker public class | ||||
*/ | */ | ||||
void Ticker::Register(Asset *asset) | |||||
void Ticker::Register(Entity *entity) | |||||
{ | { | ||||
/* If we are called from its constructor, the object's vtable is not | /* If we are called from its constructor, the object's vtable is not | ||||
* ready yet, so we do not know which group this asset belongs to. Wait | |||||
* ready yet, so we do not know which group this entity belongs to. Wait | |||||
* until the first tick. */ | * until the first tick. */ | ||||
asset->next = data->todo; | |||||
data->todo = asset; | |||||
entity->next = data->todo; | |||||
data->todo = entity; | |||||
} | } | ||||
void Ticker::TickGame() | void Ticker::TickGame() | ||||
@@ -82,8 +82,8 @@ void Ticker::TickGame() | |||||
/* Garbage collect objects that can be destroyed. We can do this | /* Garbage collect objects that can be destroyed. We can do this | ||||
* before inserting awaiting objects, because there is no way these | * before inserting awaiting objects, because there is no way these | ||||
* are already marked for destruction. */ | * are already marked for destruction. */ | ||||
for (int i = 0; i < Asset::GROUP_COUNT; i++) | |||||
for (Asset *a = data->list[i], *prev = NULL; a; prev = a, a = a->next) | |||||
for (int i = 0; i < Entity::GROUP_COUNT; i++) | |||||
for (Entity *a = data->list[i], *prev = NULL; a; prev = a, a = a->next) | |||||
if (a->destroy) | if (a->destroy) | ||||
{ | { | ||||
if (prev) | if (prev) | ||||
@@ -91,37 +91,37 @@ void Ticker::TickGame() | |||||
else | else | ||||
data->list[i] = a->next; | data->list[i] = a->next; | ||||
data->nassets--; | |||||
data->nentities--; | |||||
delete a; | delete a; | ||||
} | } | ||||
/* Insert waiting objects into the appropriate lists */ | /* Insert waiting objects into the appropriate lists */ | ||||
while (data->todo) | while (data->todo) | ||||
{ | { | ||||
Asset *a = data->todo; | |||||
Entity *a = data->todo; | |||||
data->todo = a->next; | data->todo = a->next; | ||||
int i = a->GetGroup(); | int i = a->GetGroup(); | ||||
a->next = data->list[i]; | a->next = data->list[i]; | ||||
data->list[i] = a; | data->list[i] = a; | ||||
data->nassets++; | |||||
data->nentities++; | |||||
} | } | ||||
/* Tick objects for the game loop */ | /* Tick objects for the game loop */ | ||||
for (int i = 0; i < Asset::GROUP_COUNT; i++) | |||||
for (Asset *a = data->list[i]; a; a = a->next) | |||||
for (int i = 0; i < Entity::GROUP_COUNT; i++) | |||||
for (Entity *a = data->list[i]; a; a = a->next) | |||||
if (!a->destroy) | if (!a->destroy) | ||||
{ | { | ||||
#if !FINAL_RELEASE | #if !FINAL_RELEASE | ||||
if (a->state != Asset::STATE_IDLE) | |||||
fprintf(stderr, "ERROR: asset not idle for game tick\n"); | |||||
a->state = Asset::STATE_PRETICK_GAME; | |||||
if (a->state != Entity::STATE_IDLE) | |||||
fprintf(stderr, "ERROR: entity not idle for game tick\n"); | |||||
a->state = Entity::STATE_PRETICK_GAME; | |||||
#endif | #endif | ||||
a->TickGame(data->delta_time); | a->TickGame(data->delta_time); | ||||
#if !FINAL_RELEASE | #if !FINAL_RELEASE | ||||
if (a->state != Asset::STATE_POSTTICK_GAME) | |||||
fprintf(stderr, "ERROR: asset missed super game tick\n"); | |||||
a->state = Asset::STATE_IDLE; | |||||
if (a->state != Entity::STATE_POSTTICK_GAME) | |||||
fprintf(stderr, "ERROR: entity missed super game tick\n"); | |||||
a->state = Entity::STATE_IDLE; | |||||
#endif | #endif | ||||
} | } | ||||
@@ -133,20 +133,20 @@ void Ticker::TickRender() | |||||
Profiler::Start(Profiler::STAT_TICK_RENDER); | Profiler::Start(Profiler::STAT_TICK_RENDER); | ||||
/* Tick objects for the render loop */ | /* Tick objects for the render loop */ | ||||
for (int i = 0; i < Asset::GROUP_COUNT; i++) | |||||
for (Asset *a = data->list[i]; a; a = a->next) | |||||
for (int i = 0; i < Entity::GROUP_COUNT; i++) | |||||
for (Entity *a = data->list[i]; a; a = a->next) | |||||
if (!a->destroy) | if (!a->destroy) | ||||
{ | { | ||||
#if !FINAL_RELEASE | #if !FINAL_RELEASE | ||||
if (a->state != Asset::STATE_IDLE) | |||||
fprintf(stderr, "ERROR: asset not idle for render tick\n"); | |||||
a->state = Asset::STATE_PRETICK_RENDER; | |||||
if (a->state != Entity::STATE_IDLE) | |||||
fprintf(stderr, "ERROR: entity not idle for render tick\n"); | |||||
a->state = Entity::STATE_PRETICK_RENDER; | |||||
#endif | #endif | ||||
a->TickRender(data->delta_time); | a->TickRender(data->delta_time); | ||||
#if !FINAL_RELEASE | #if !FINAL_RELEASE | ||||
if (a->state != Asset::STATE_POSTTICK_RENDER) | |||||
fprintf(stderr, "ERROR: asset missed super render tick\n"); | |||||
a->state = Asset::STATE_IDLE; | |||||
if (a->state != Entity::STATE_POSTTICK_RENDER) | |||||
fprintf(stderr, "ERROR: entity missed super render tick\n"); | |||||
a->state = Entity::STATE_IDLE; | |||||
#endif | #endif | ||||
} | } | ||||
@@ -6,7 +6,7 @@ | |||||
// | // | ||||
// The Ticker class | // The Ticker class | ||||
// ---------------- | // ---------------- | ||||
// The Ticker is a static class that registers assets and ticks them. | |||||
// The Ticker is a static class that registers entities and ticks them. | |||||
// | // | ||||
#if !defined __DH_TICKER_H__ | #if !defined __DH_TICKER_H__ | ||||
@@ -14,12 +14,12 @@ | |||||
#include <stdint.h> | #include <stdint.h> | ||||
#include "asset.h" | |||||
#include "entity.h" | |||||
class Ticker | class Ticker | ||||
{ | { | ||||
public: | public: | ||||
static void Register(Asset *asset); | |||||
static void Register(Entity *entity); | |||||
static void TickGame(); | static void TickGame(); | ||||
static void TickRender(); | static void TickRender(); | ||||
@@ -74,14 +74,14 @@ TileSet::~TileSet() | |||||
delete data; | delete data; | ||||
} | } | ||||
Asset::Group TileSet::GetGroup() | |||||
Entity::Group TileSet::GetGroup() | |||||
{ | { | ||||
return GROUP_BEFORE; | return GROUP_BEFORE; | ||||
} | } | ||||
void TileSet::TickRender(float delta_time) | void TileSet::TickRender(float delta_time) | ||||
{ | { | ||||
Asset::TickRender(delta_time); | |||||
Entity::TickRender(delta_time); | |||||
if (data->img) | if (data->img) | ||||
{ | { | ||||
@@ -16,18 +16,18 @@ | |||||
#include <stdint.h> | #include <stdint.h> | ||||
#include "asset.h" | |||||
#include "entity.h" | |||||
class TileSetData; | class TileSetData; | ||||
class TileSet : public Asset | |||||
class TileSet : public Entity | |||||
{ | { | ||||
public: | public: | ||||
TileSet(char const *path); | TileSet(char const *path); | ||||
virtual ~TileSet(); | virtual ~TileSet(); | ||||
protected: | protected: | ||||
/* Inherited from Asset */ | |||||
/* Inherited from Entity */ | |||||
virtual Group GetGroup(); | virtual Group GetGroup(); | ||||
virtual void TickRender(float delta_time); | virtual void TickRender(float delta_time); | ||||