#pragma once #include #include "SGameScene.h" // fw decl class SGameManager; class KDeviceManager; class KTextureManager; class SSoundManager; class SGameMilesSoundMgr; class KNX3Manager; class KFileManager; class KViewportObject; namespace rp { class SGameSceneTimer { public: SGameSceneTimer() : mTime( 0 ), mTimeDiff( 0 ) {} ~SGameSceneTimer() {} void setTime( DWORD time ) { mTimeDiff = time - mTime; mTime = time; } DWORD getTime() const { return mTime; } DWORD getDiff() const { return mTimeDiff; } private: DWORD mTime; DWORD mTimeDiff; }; class SGameSceneManager { public: SGameSceneManager( SGameManager& gameMgr , KDeviceManager& graphics , KTextureManager& textureMgr , SSoundManager& soundMgr , SGameMilesSoundMgr& milesSoundMgr , KNX3Manager& nx3Mgr , KFileManager& fileMgr ) : mGameMgr ( gameMgr ) , mGraphics ( graphics ) , mTextureMgr ( textureMgr ) , mSoundMgr ( soundMgr ) , mMilesSoundMgr ( milesSoundMgr ) , mNx3Mgr ( nx3Mgr ) , mFileMgr ( fileMgr ) { } /// 2011.08.18 메모리 누수 체크 - prodongi ~SGameSceneManager() { mScenes.clear(); mGarbages.clear(); } // manager SGameManager& gameMgr() { return mGameMgr; } KDeviceManager& graphics() { return mGraphics; } KTextureManager& textureMgr() { return mTextureMgr; } SSoundManager& soundMgr() { return mSoundMgr; } SGameMilesSoundMgr& milesSoundMgr() { return mMilesSoundMgr; } KNX3Manager& nx3Mgr() { return mNx3Mgr; } SGameSceneTimer& timer() { return mTimer; } KFileManager& fileMgr() { return mFileMgr; } // scene interface void tick( DWORD time ); void render( KViewportObject* viewport ); void addScene( SGameScene& scene ); // 2010.07.06 - prodongi void addScene(SGameScene& scene, SGameScene const* _where); void removeScene( SGameScene& scene ); void removeScene2( SGameScene& scene ); private: SGameManager& mGameMgr; KDeviceManager& mGraphics; KTextureManager& mTextureMgr; SSoundManager& mSoundMgr; SGameMilesSoundMgr& mMilesSoundMgr; KNX3Manager& mNx3Mgr; SGameSceneTimer mTimer; KFileManager& mFileMgr; typedef std::vector< SGameSceneIPtr > scene_vector_t; scene_vector_t mScenes; scene_vector_t mGarbages; void _removeScene( SGameScene& scene ); }; }