/*!
 * @file Species.h
 * @brief ゲーム中のクリーチャー種別のプロトタイプ
 * @date 2014/02/01
 * @author Deskull
 * 2014 Sikabane Works.
 */

#include "stdafx.h"
#include "GameElement.h"
#include "BaseStatusTable.h"

#pragma once

/*!
 * @class Species
 * @brief クリーチャー種別のクラス
 */
class Species : public GameElement
{

private:

	string name;   //!< クリーチャーの名前
	SOUL baseSoul; //!< 基本ソウル量

	HEIGHT averageHeight;    //!< 平均身長
	HEIGHT averageWeight;    //!< 平均体重

	FEED baseFeed; //!< 基本滋養値
	LEVEL divineLevel; //!< 基本神性レベル

	BaseStatusTable baseStatus; /*!< 基本ステータス */

public:

	/*! 
	 * @brief Speciesクラスコンストラクタ(GameElementメンバ対応)
	 * @param id GameElementのID
	 * @param TAG GameElementのタグ
	 * @param gameWorld 所属元gameWorld参照ポインタ
	 */
	Species::Species(ID id, TAG tag, GameWorld *gameWorld);

	/*! 
	 * @brief Speciesクラスコンストラクタ
	 */
	Species::Species(void);

	/*! 
	 * @brief Speciesクラスデストラクタ
	 */
	Species::~Species(void);

	/*! 
	 * @brief クリーチャー種別の名前を返す
	 * @return 名前
	 */
	const string Species::GetName(void);

	/*! 
	 * @brief クリーチャー種別の基本ソウル量を帰す
	 * @return ソウル量
	 */
	const SOUL Species::GetBaseSoul(void);

	/*! 
	 * @brief クリーチャー種別の平均身長を返す
	 * @return 平均身長
	 */
	const HEIGHT Species::GetAverageHeight(void);

	/*! 
	 * @brief クリーチャー種別の平均体重を返す
	 * @return 平均体重
	 */
	const WEIGHT Species::GetAverageWeight(void);

	/*! 
	 * @brief クリーチャー種別の基本滋養度を返す
	 * @return 基本滋養度
	 */
	const FEED Species::GetBaseFeed(void);

};
