/*!
* @file GameEngine.h
* @brief ゲームエンジンのプロトタイプ宣言
* @date 2013/04/13
* @author Deskull
* 2013-2014 Sikabane Works.
*/

#pragma once

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

#include "Coordinates.h"
#include "GameCampaign.h"
#include "Direction.h"
#include "GameWorld.h"
#include "GameSurface.h"
#include "GameSurfaceSDL.h"
#include "GameLogger.h"

namespace Deeangband
{

	class GameEngine
	{
	private:
		GameWorld *gameWorld; //!< GameWorldの参照ポインタ
		GameSurface *gameSurface; //!< GameSurfaceの参照ポインタ
		GameLogger *gameLogger; //!< GameLoggerの参照ポインタ

	public:
		GameEngine::GameEngine();

		/*!
		 * @brief プレイ処理メインループ
		 * @return ゲーム終了コード
		 */
		PLAY_EXIT_CODE GameEngine::PlayLoop(void);

		/*!
		 * @brief 受け取ったゲームコマンドを処理する
		 * @param command 実行するゲームコマンド
		 * @return ゲーム終了コード
		 */
		PLAY_EXIT_CODE GameEngine::DoGameCommand(GAME_COMMAND command);

		/*!
		 * @brief クリーチャーを指定の方向に歩行させる
		 * @param creaturePtr クリーチャーの参照ポインタ
		 * @param direction 歩行する方向
		 * @return 移動が実際に行われたらtrue
		 */
		bool GameEngine::WalkCreature(Creature *creaturePtr, DIRECTION direction);

	};
}
