www.pudn.com > notWow.rar > SceneMgr.h


#pragma once 
 
#include "Map.h" 
#include "NPCMgr.h" 
#include  
 
class Scene 
{ 
protected: 
	Map			m_Map; 
	NPCsManager	m_NPCMgr; 
public: 
	bool Init(LPDIRECT3DDEVICE9 pd3dDevice,const char *Name,ScriptID ID); 
	void Free(); 
 
	void Update(float fTime); 
	void Render(); 
 
	// recreate managed-pool resource 
	// this method could only be called after OnDestoty 
	bool		OnCreate(); 
	// OnDestory almost like Free() 
	// However,it releases the resource to recreate in OnCreate   
	void		OnDestory(); 
	// recreate default-pool resource 
	bool		OnReset(); 
	// invalidate default-pool resource 
	void		OnLost(); 
 
	inline	Map*	GetMap(){ return &m_Map;	} 
	inline  NPCsManager* GetNPCsMgr()	{ return &m_NPCMgr;	}	 
}; 
 
 
class ScenesManager 
{ 
	LPDIRECT3DDEVICE9			m_pd3dDevice; 
	vector				m_Scenes; 
	map			m_NameMap; 
	vector				m_RefCounters; 
	int							m_MinPos; 
	int							m_nScenes; 
	int							m_CurSceneID; 
public: 
	// Initialize the Mgr 
	void		Init(LPDIRECT3DDEVICE9	pd3dDevice); 
	// Free the Mgr finally 
	void		Free(); 
 
	// recreate managed-pool resource 
	// this method could only be called after OnDestoty 
	bool		OnCreate(); 
	// OnDestory almost like Free() 
	// However,it releases the resource to recreate in OnCreate   
	void		OnDestory(); 
	// recreate default-pool resource 
	bool		OnReset(); 
	// invalidate default-pool resource 
	void		OnLost(); 
 
	SceneID		AddScene(const char* Name,ScriptID ID); 
	void		Delete(SceneID id); 
	inline Scene*	GetScene(SceneID id) 
	{ 
		if(id >= 0 && id < m_Scenes.size())  
			return m_Scenes[id]; 
		return NULL; 
	} 
	inline SceneID  GetCurSceneID()		{ return m_CurSceneID;	} 
	inline Scene* GetCurScene()			{ return GetScene(m_CurSceneID);	} 
	inline void SetCurScene(SceneID id) { m_CurSceneID = id;	} 
};