/**
 * @file
 * @brief Main インターフェースの定義、それにかかわる定数定義を行う。
 *
 * @author S.F.
 * @version $Id:
 *
 * Copyright (C) 2000-2002 Satoshi Fujiwara. All Rights Reserved.
 */

/// 重複インクルード防止マクロ
#if !defined(AFX_Main_H__FFF94F56_3A52_413E_9CD2_A5E815DCFB90__INCLUDED_)
#define AFX_Main_H__FFF94F56_3A52_413E_9CD2_A5E815DCFB90__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

namespace sf{
	namespace application {
		
		const int INIT_PLAYER = 3;///< 初期プレーヤー数
		const int STAGE_NUM_MAX = 1;///< ステージの数

		/** メインインターフェース.*/
		class Main  
		{
			// LIFECYCLE //
		public:
			/// コンストラクタ
			Main(){;};
			/// デストラクタ
			virtual ~Main(){;};
			/// 初期化を行う
			virtual void initialize(void) = 0;
			// OPERATORS //
			// OPERATIONS //
			/// アプリケーションを実行する
			virtual void run() = 0;
			/** 空白スプライトを取得する.
			 * @return sf::system::console::sprite::Sprite のポインタ */
			virtual sf::system::console::sprite::Sprite * const getBlankSprite() = 0;

			// INQUIRY //
			/** メインインターフェースのポインタを取得する.
			 @return Main インターフェースの唯一のインスタンスのポインタ*/
			static Main * instance();
		};// Main
	}// application
}// sf
#endif // !defined(AFX_Main_H__FFF94F56_3A52_413E_9CD2_A5E815DCFB90__INCLUDED_)
