diff --git a/src/game.cpp b/src/game.cpp index 85312f10..d8a019a4 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -26,7 +26,7 @@ private: int mousex, mousey; int done; - int frame; + Scene *scene; }; /* @@ -39,7 +39,7 @@ Game::Game(char const *mapname) data->map = new Map(mapname); data->x = data->y = 0; data->done = 0; - data->frame = 0; + data->scene = NULL; } Game::~Game() @@ -62,12 +62,20 @@ void Game::TickRender(float delta_time) { Asset::TickRender(delta_time); - Scene *scene = new Scene(); + GetScene(); - data->map->Render(scene, data->mousex, data->mousey, 0); + data->map->Render(data->scene, data->mousex, data->mousey, 0); + data->scene->Render(); - scene->Render(); - delete scene; + delete data->scene; + data->scene = NULL; +} + +Scene *Game::GetScene() +{ + if (!data->scene) + data->scene = new Scene(); + return data->scene; } void Game::SetMouse(int x, int y) diff --git a/src/game.h b/src/game.h index 46e8e6ec..22b4ef09 100644 --- a/src/game.h +++ b/src/game.h @@ -12,6 +12,7 @@ #define __DH_GAME_H__ #include "asset.h" +#include "scene.h" class GameData; @@ -29,6 +30,7 @@ protected: public: /* New methods */ + Scene *GetScene(); void SetMouse(int x, int y); void Quit(); int Finished();