#ifndef _HPL_SCENE_MANAGER_
#define _HPL_SCENE_MANAGER_

#include "AbstractScene.h"

#include <map>

namespace HPL {
namespace General {

/** シーン管理クラス
  *
  */
class HPLSceneManager {
private:
	//! 現在動作しているシーン
	int m_nCurrentSceneID;

	std::map< int, AbstractScene*> m_mapSceneMap;

public:
	/** 
	  *
	  */
	HPLSceneManager();
	/** 
	  *
	  */
	~HPLSceneManager();

	/** シーン追加
	  * @exception 既に存在するシーンID
	  */
	void add_Scene( int nUserID, AbstractScene* sScene );

	/**
	  * @retval 現在選択しているシーンのID
	  */
	int get_CurrentSceneID();

	/**
	  * @retval 現在選択しているシーン
	  */
	AbstractScene* get_Scene();

	/**
	  * @exception			存在しないID
	  */
	void set_Scene( int nUserID );

	void processScene();
};

}
}

#endif
