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

#pragma once

#include "stdafx.h"
#include "Coordinates.h"
#include "Creature.h"
#include "Deeangband.h"
#include "Floor.h"

/*! 
 * @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; }

};

