//@STATE=作成中
//@DESCRIPTION ---------------------------------------------------------------
//	MainImpl アプリケーションメイン
//  　Mainの具象クラスです。
// $Log: MainApp.h,v $
// Revision 1.1  2001/10/28 21:40:36  fujiwara
// DLLに分割
//
// Revision 1.3  2001/07/09 20:30:09  fujiwara
// 例外処理の組み込み
//
// Revision 1.2  2001/05/12 00:49:43  fujiwara
// ＣＶＳを導入し、ログ表示を追加
//
//@DESCRIPTION_END -----------------------------------------------------------
//@AUTHOR=S.F.
// Copyright (C) 2000 Satoshi Fujiwara. All Rights Reserved.
///////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_MainImpl_H__A78603C6_C6A5_4017_9BA8_6228600E3D63__INCLUDED_)
#define AFX_MainImpl_H__A78603C6_C6A5_4017_9BA8_6228600E3D63__INCLUDED_

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

#include "Main.h"
namespace sf {
	namespace application {
		enum State {
			INITIALIZE,
			MAIN,
			EDIT,
			END
		};

		class MainImpl  : public Main
		{
			// LIFECYCLE //
			MainImpl();
			DECLARE_SINGLETON(MainImpl)
		public:
			virtual ~MainImpl();
			
			// OPERATORS //
			// OPEARTIONS //
			// 初期化
			void initialize(void);
			//
			void run();
			system::console::sprite::Sprite * const getBlankSprite(){return mpSpriteBlank;};

			// INQUIRY //
		private:

			State mState;
			
			system::System * mpSystem;
			system::console::Console * mpConsole;
			system::sound::Sound * mpSound;
			system::console::sprite::Sprite *mpSpriteBlank;
		};// MainImpl
	}// application

}// sf
#endif // !defined(AFX_MainImpl_H__A78603C6_C6A5_4017_9BA8_6228600E3D63__INCLUDED_)
