/*!
* @file GameSurface.h
* @brief GameSurfaceクラスとその他付随要素のプロトタイプ
* @date 2013/12/17
* @author Deskull
* 2013 Sikabane Works.
*/

#pragma once

#include "stdafx.h"
#include "Deeangband.h"
#include "GameWorld.h"

#include "Coordinates.h"


namespace Deeangband
{

	/*! 
	* @class GameSurface
	* @brief ゲームのメインインターフェイスクラス
	*/
	class GameSurface
	{
	private:

	public:
		GameSurface(void);
		virtual ~GameSurface(void);

		/*!
		* @brief ゲームコマンドを受け取る
		* @return GAME_COMMAND で定義されたコマンド内容
		*/
		virtual GAME_COMMAND GetCommand(void)
		{
			return GAME_COMMAND_REDRAW;
		}

		/*!
		* @brief ゲーム画面表示を更新する。
		* @return なし
		*/
		virtual void GameSurface::Redraw(void) {}

		/*!
		* @brief ゲーム画面にクリーチャー情報を表示する。
		* @param creaturePtr 表示したいクリーチャーのインスタンス参照ポインタ。NULLならば非表示。
		* @return なし
		*/
		virtual void GameSurface::ViewCreatureStatus(Creature *creaturePtr) { creaturePtr; }

		/*!
		* @brief ゲーム画面表示するフロアを切り替える。
		* @param floorPtr 表示したいフロアのインスタンス参照ポインタ。NULLならば非表示。
		* @return なし
		*/
		virtual void GameSurface::SetFloor(Floor *floorPtr) { floorPtr; }

		/*!
		* @brief フロア表示のフォーカスを変更する。
		* @param x 基準X座標
		* @param y 基準Y座標
		* @return なし
		*/
		virtual void GameSurface::FocusFloor(int x, int y) { x; y; }

		/*!
		* @brief フロア表示のフォーカスを変更する。
		* @param coord 基準座標
		* @return なし
		*/
		virtual void GameSurface::FocusFloor(Coordinates coord) { coord; }

	};

}