//@STATE=作成中
//@DESCRIPTION ---------------------------------------------------------------
// Game.h: Game クラスのインターフェイス
//	履歴：
//@DESCRIPTION_END -----------------------------------------------------------
//@AUTHOR=S.F.
///////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_GAME_H__C0DEC307_4A6A_48CD_B72C_4513D6C4580E__INCLUDED_)
#define AFX_GAME_H__C0DEC307_4A6A_48CD_B72C_4513D6C4580E__INCLUDED_

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

#include "sfinterface.h"
#include "sceneType.h"

namespace sf {
	namespace application {
		namespace scene {

class SF_INTERFACE Game  
{
public:
	Game(){};
	virtual ~Game(){};
	
	// Game インターフェースが仕様する構造体、列挙変数
	
	struct Data {
		std::string mapFileName;		// マップファイル
		std::string dispositionFileName;// 配置データ
		std::string bgmFileName;		// BGMデータ
	};

	// 難易度設定
	enum DIFFICULTY {
		EASY,
		NORMAL,
		HARD
	};

	// ゲームの状態
	enum STATE {
		INITIALIZE,
		START,
		MAIN,
		RESTART,
		CLEAR,
		OVER
	};

	
	// OPERATOR //
	
	
	// OPERATIONS //

	// プレイヤー情報表示
	virtual void printPlayerInfo() = 0;
	// データエディット時情報表示
	virtual void printEditInfo() = 0;
	// ゲームデータロード
	virtual void load(const char * const pFileName) = 0;

	// ACCESS //

	// 背景 //
	virtual sf::system::console::Background * const background(void) = 0;
	
	// 自機 //
	virtual sf::application::Character * const player(void) = 0;
	
	// 難易度 
	virtual const DIFFICULTY difficulty(void) const  = 0 ;
	virtual void difficulty(const DIFFICULTY value) = 0;
	
	// 現在の難易度
	virtual const float currentDifficulty(void) const = 0;
	virtual void currentDifficulty(const float value) = 0;

	// ステージ No 
	virtual void stageNo(const int value) = 0;
	virtual const int stageNo() const = 0;
	
	// スクロール速度 
	virtual void scrollSpeed(const float value) = 0;
	virtual const float scrollSpeed(void) const  = 0;
	
	// スコア
	virtual void score(const int value) = 0;
	virtual const int score(void) const = 0;
	
	// スクロールY 位置 
	virtual void scrollY(const float value) = 0;
	virtual const float scrollY(void) const = 0;
	
	// リスタート位置の設定 
	virtual void restartPosition(const float value) = 0;
	virtual const float restartPosition(void) const = 0;

	// 配置データ制御オブジェクト 
	virtual sf::application::disposition::Controller* const controllerPtr(void) = 0; 

	// 状態 
	virtual void state(const STATE value) = 0;
	virtual const STATE state(void) const = 0;

	// タイマ
	virtual	const int timer (void) const = 0;
	

};// Game
		}// scene
	}// application 
}//sf

#endif // !defined(AFX_GAME_H__C0DEC307_4A6A_48CD_B72C_4513D6C4580E__INCLUDED_)
