diff --git a/source/game/game.cpp b/source/game/game.cpp index d9a7d5d3d..a618a1555 100644 --- a/source/game/game.cpp +++ b/source/game/game.cpp @@ -91,6 +91,7 @@ int s_globalLevelSelectThing=120; int CGameScene::s_readyToExit; int CGameScene::s_levelFinished; +SpriteBank *CGameScene::s_BackSprites; /*****************************************************************************/ @@ -117,7 +118,12 @@ void CGameScene::init() CFader::setFadingIn(); + s_BackSprites=new ("BackGfx Sprites") SpriteBank(); + s_BackSprites->load(LEVELS_LEVELBACKGFX_SPR); + initLevel(); + CFileIO::EnableASync(true); + } /*****************************************************************************/ @@ -140,11 +146,13 @@ int CGameScene::canPause() void CGameScene::shutdown() { + CFileIO::EnableASync(false); shutdownLevel(true); CSoundMediator::dumpSong(); m_pauseMenu->shutdown(); delete m_pauseMenu; s_genericFont->dump(); delete s_genericFont; + s_BackSprites->dump(); delete s_BackSprites; } /*****************************************************************************/ @@ -168,6 +176,7 @@ void CGameScene::think(int _frames) // } //#endif + CFileIO::LoadASyncFiles(); if(s_readyToExit) { @@ -274,12 +283,15 @@ void CGameScene::initLevel() // Init actors (needs moving and tidying int actorNum; - sThingActor **actorList = Level.getActorList(); + sThingActor **actorList = Level.getActorList(); + if (actorList) + { for ( actorNum = 0 ; actorNum < Level.getActorCount() ; actorNum++ ) { CNpcEnemy *enemy; enemy = new ("npc enemy") CNpcEnemy; + ASSERT(enemy); enemy->setTypeFromMapEdit( actorList[actorNum]->Type ); enemy->init(); enemy->setLayerCollision( Level.getCollisionLayer() ); @@ -312,7 +324,7 @@ void CGameScene::initLevel() enemy->postInit(); } - + } // Song is loaded/dumped by the level, and played from here. This just gives some // better timing over when it starts (pkg) CSoundMediator::playSong(); diff --git a/source/game/game.h b/source/game/game.h index f22b290d2..ead097bf4 100644 --- a/source/game/game.h +++ b/source/game/game.h @@ -14,7 +14,7 @@ /*****************************************************************************/ class FontBank; - +class SpriteBank; class CGameScene : public CScene { public: @@ -38,6 +38,8 @@ virtual int canPause(); static void setReadyToExit() {s_readyToExit=true;} static void levelFinished() {s_levelFinished=true;} +static SpriteBank *GetBackSprites() {return(s_BackSprites);} + protected: void initLevel(); @@ -52,6 +54,8 @@ protected: static int s_readyToExit; static int s_levelFinished; + static SpriteBank *s_BackSprites; + }; diff --git a/source/level/layerback.cpp b/source/level/layerback.cpp index 3e989a1f3..c8292a627 100644 --- a/source/level/layerback.cpp +++ b/source/level/layerback.cpp @@ -13,6 +13,7 @@ #include "LayerBack.h" #include +#include "Game\game.h" sBackRGBTable CLayerBack::BackRGBTable[]= { @@ -54,14 +55,12 @@ CLayerBack::CLayerBack(sLayerHdr *Hdr,sTile *TileBank) : CLayerTile(Hdr,TileBank ASSERT(Data->Count<=LAYER_SHADE_RGB_MAX); BandCount=Data->Count-1; - Sprites=new ("BackGfx Sprites") SpriteBank(); - Sprites->load(LEVELS_LEVELBACKGFX_SPR); + Sprites=CGameScene::GetBackSprites(); } /*****************************************************************************/ CLayerBack::~CLayerBack() { - Sprites->dump(); delete Sprites; } /*****************************************************************************/