| @@ -8,6 +8,7 @@ | |||||
| #endif | #endif | ||||
| #include <cstdlib> | #include <cstdlib> | ||||
| #include <cstdio> | |||||
| #include "asset.h" | #include "asset.h" | ||||
| #include "ticker.h" | #include "ticker.h" | ||||
| @@ -26,6 +27,10 @@ Asset::Asset() : | |||||
| Asset::~Asset() | Asset::~Asset() | ||||
| { | { | ||||
| #if !defined FINAL_RELEASE | |||||
| if (!destroy) | |||||
| fprintf(stderr, "ERROR: asset destructor called directly\n"); | |||||
| #endif | |||||
| } | } | ||||
| Asset::Group Asset::GetGroup() | Asset::Group Asset::GetGroup() | ||||
| @@ -22,9 +22,6 @@ class Asset | |||||
| friend class TickerData; | friend class TickerData; | ||||
| public: | public: | ||||
| Asset(); | |||||
| virtual ~Asset(); | |||||
| virtual void Ref(); | virtual void Ref(); | ||||
| virtual int Unref(); | virtual int Unref(); | ||||
| @@ -38,6 +35,9 @@ protected: | |||||
| } | } | ||||
| Group; | Group; | ||||
| Asset(); | |||||
| virtual ~Asset(); | |||||
| virtual Group GetGroup(); | virtual Group GetGroup(); | ||||
| virtual void TickGame(float delta_time); | virtual void TickGame(float delta_time); | ||||
| @@ -52,14 +52,20 @@ Game::~Game() | |||||
| delete data; | delete data; | ||||
| } | } | ||||
| void Game::SetMouse(int x, int y) | |||||
| Asset::Group Game::GetGroup() | |||||
| { | { | ||||
| data->mousex = x; | |||||
| data->mousey = y; | |||||
| return Asset::GetGroup(); | |||||
| } | } | ||||
| void Game::Render() | |||||
| void Game::TickGame(float delta_time) | |||||
| { | { | ||||
| Asset::TickGame(delta_time); | |||||
| } | |||||
| void Game::TickRender(float delta_time) | |||||
| { | |||||
| Asset::TickRender(delta_time); | |||||
| Scene *scene = new Scene(); | Scene *scene = new Scene(); | ||||
| data->map->Render(scene, data->mousex, data->mousey, 0); | data->map->Render(scene, data->mousex, data->mousey, 0); | ||||
| @@ -72,6 +78,12 @@ void Game::Render() | |||||
| data->font->Print(10, 10, buf); | data->font->Print(10, 10, buf); | ||||
| } | } | ||||
| void Game::SetMouse(int x, int y) | |||||
| { | |||||
| data->mousex = x; | |||||
| data->mousey = y; | |||||
| } | |||||
| void Game::Quit() | void Game::Quit() | ||||
| { | { | ||||
| data->done = 1; | data->done = 1; | ||||
| @@ -11,16 +11,25 @@ | |||||
| #if !defined __DH_GAME_H__ | #if !defined __DH_GAME_H__ | ||||
| #define __DH_GAME_H__ | #define __DH_GAME_H__ | ||||
| #include "asset.h" | |||||
| class GameData; | class GameData; | ||||
| class Game | |||||
| class Game : public Asset | |||||
| { | { | ||||
| public: | public: | ||||
| Game(char const *mapname); | Game(char const *mapname); | ||||
| ~Game(); | ~Game(); | ||||
| protected: | |||||
| /* Inherited from Asset */ | |||||
| virtual Group GetGroup(); | |||||
| virtual void TickGame(float delta_time); | |||||
| virtual void TickRender(float delta_time); | |||||
| public: | |||||
| /* New methods */ | |||||
| void SetMouse(int x, int y); | void SetMouse(int x, int y); | ||||
| void Render(); | |||||
| void Quit(); | void Quit(); | ||||
| int Finished(); | int Finished(); | ||||
| @@ -35,7 +35,7 @@ int main(int argc, char **argv) | |||||
| /* Create new top level window. */ | /* Create new top level window. */ | ||||
| window = gtk_window_new( GTK_WINDOW_TOPLEVEL); | window = gtk_window_new( GTK_WINDOW_TOPLEVEL); | ||||
| gtk_window_set_title(GTK_WINDOW(window), "Simple"); | gtk_window_set_title(GTK_WINDOW(window), "Simple"); | ||||
| gtk_container_set_border_width(GTK_CONTAINER(window), 10); | |||||
| gtk_container_set_border_width(GTK_CONTAINER(window), 5); | |||||
| /* Quit form main if got delete event */ | /* Quit form main if got delete event */ | ||||
| gtk_signal_connect(GTK_OBJECT(window), "delete_event", | gtk_signal_connect(GTK_OBJECT(window), "delete_event", | ||||
| @@ -77,12 +77,9 @@ int main(int argc, char **argv) | |||||
| video->PreRender(); | video->PreRender(); | ||||
| Ticker::TickRender(33.33333f); | Ticker::TickRender(33.33333f); | ||||
| game->Render(); | |||||
| video->PostRender(33.33333f); | video->PostRender(33.33333f); | ||||
| } | } | ||||
| delete game; | |||||
| delete video; | delete video; | ||||
| return 0; | return 0; | ||||
| @@ -31,11 +31,9 @@ int main(int argc, char **argv) | |||||
| video->PreRender(); | video->PreRender(); | ||||
| Ticker::TickRender(33.33333f); | Ticker::TickRender(33.33333f); | ||||
| game->Render(); | |||||
| video->PostRender(33.33333f); | video->PostRender(33.33333f); | ||||
| } | } | ||||
| delete game; | |||||
| delete video; | delete video; | ||||
| return EXIT_SUCCESS; | return EXIT_SUCCESS; | ||||
| @@ -32,7 +32,7 @@ protected: | |||||
| virtual void TickRender(float delta_time); | virtual void TickRender(float delta_time); | ||||
| public: | public: | ||||
| /* New implementations */ | |||||
| /* New methods */ | |||||
| char const *GetName(); | char const *GetName(); | ||||
| void BlitTile(uint32_t id, int x, int y); | void BlitTile(uint32_t id, int x, int y); | ||||