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