Files
Leviathan/Client/Game/game/Main/Scene/SGameSceneManager.h
T
2026-06-01 12:46:52 +02:00

98 lines
2.3 KiB
C++

#pragma once
#include <toolkit/khash.h>
#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 );
};
}