OSDN Git Service

[Modify] boostライブラリに依存した処理を削除中.
[deeangband/Deeangband-new.git] / Deeangband / Species.h
index d612c17..3cde365 100644 (file)
 /*!
- * @file Species.h
- * @brief \83Q\81[\83\80\92\86\82Ì\83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\83v\83\8d\83g\83^\83C\83v
- * @date 2014/02/01
- * @author Deskull
- * 2014 Sikabane Works.
- */
+* @file Species.h
+* @brief \83Q\81[\83\80\92\86\82Ì\83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\83v\83\8d\83g\83^\83C\83v
+* @date 2014/02/01
+* @author Deskull
+* 2014 Sikabane Works.
+*/
 
 #include "stdafx.h"
 #include "GameElement.h"
+#include "BaseStatusTable.h"
+#include "HaveSize.h"
+#include "HaveSymbol.h"
 
 #pragma once
 
-/*!
- * @class Species
- * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\83N\83\89\83X
- */
-class Species : public GameElement
+namespace Deeangband
 {
 
-private:
+       /*!
+       * @class Species
+       * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\83N\83\89\83X
+       */
+       class Species : public GameElement, public HaveSymbol, public HaveSize
+       {
+
+       private:
+
+               SOUL baseSoul; //!< \8aî\96{\83\\83E\83\8b\97Ê
+
+               FEED baseFeed; //!< \8aî\96{\8e \97{\92l
+               LEVEL divineLevel; //!< \8aî\96{\90_\90«\83\8c\83x\83\8b
+
+               TAG baseCamp; //!< \8aî\96{\8f\8a\91®\90w\89c
+
+               BaseStatusTable baseStatus; //!< \8aî\96{\83X\83e\81[\83^\83X
+
+               std::map<TAG, SKILL_EXP> skillExpList; //!< \83X\83L\83\8b\8co\8c±\92l\83\8a\83X\83g
+
+               NUMBER currentCreationNumber; //!< \8c»\8dÝ\90\90¬\90\94
+               NUMBER currentDeadNumber; //!< \8c»\8dÝ\8e\80\96S\90\94
+               NUMBER maxCreationNumber; //!< \8dÅ\91å\90\90¬\90\94
+
+               TAG baseFirstRace; //!< \8aî\96{\8eí\91°\83^\83O1
+               TAG baseSecondRace; //!< \8aî\96{\8eí\91°\83^\83O2
+
+               std::vector<TAG> authorityTags; //!< \8c \94\\83^\83O\94z\97ñ
+
+               template<class Archive> void serialize(Archive &archive, const unsigned int version) 
+               {
+                       if(version >= 0)
+                       {
+                               archive & BOOST_SERIALIZATION_BASE_OBJECT_NVP(GameElement);
+                               archive & BOOST_SERIALIZATION_BASE_OBJECT_NVP(HaveSymbol);
+                               archive & BOOST_SERIALIZATION_BASE_OBJECT_NVP(HaveSize);
+                               archive & boost::serialization::make_nvp("BaseFirstRace", baseFirstRace);
+                               archive & boost::serialization::make_nvp("BaseSecondRace", baseSecondRace);
+                               archive & boost::serialization::make_nvp("BaseSoul", baseSoul);
+                               archive & boost::serialization::make_nvp("BaseFeed", baseFeed);
+                               archive & boost::serialization::make_nvp("DivineLevel", divineLevel);
+                               archive & boost::serialization::make_nvp("BaseCamp", baseCamp);
+                               archive & boost::serialization::make_nvp("BaseStatus", baseStatus);
+                       }
+               }
+
+       public:
+
+               /*! 
+               * @brief Species\83N\83\89\83X\83R\83\93\83X\83g\83\89\83N\83^
+               */
+               Species::Species(void);
+
+               /*! 
+               * @brief Species\83N\83\89\83X\83f\83X\83g\83\89\83N\83^
+               */
+               Species::~Species(void);
+
+               /*! 
+               * @brief \83f\81[\83^\8f\89\8aú\89»
+               */
+               void Species::WipeData(void);
+
+               /*! 
+               * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\8aî\96{\83\\83E\83\8b\97Ê\82ð\8bA\82·
+               * @return \83\\83E\83\8b\97Ê
+               */
+               SOUL Species::GetBaseSoul(void);
+
+               /*! 
+               * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\8aî\96{\8e \97{\93x\82ð\95Ô\82·
+               * @return \8aî\96{\8e \97{\93x
+               */
+               FEED Species::GetBaseFeed(void);
+
+               /*! 
+               * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\83X\83L\83\8b\8aî\96{\8co\8c±\92l\82ð\95Ô\82·
+               * @param tag \8eæ\93¾\82µ\82½\82¢\83X\83L\83\8b\82Ì\83^\83O
+               * @return \8aY\93\96\83X\83L\83\8b\82Ì\8aî\96{\8co\8c±\92l\81A\91S\82­\82Ì\96¢\8co\8c±\82È\82ç\82Î0\82ð\95Ô\82·
+               */
+               SKILL_EXP Species::GetSkillExp(TAG tag);
+
+               /*! 
+               * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\8aî\96{\8f\8a\91®\90w\89c\82ð\95Ô\82·
+               * @return \8aî\96{\8f\8a\91®\90w\89c\82Ì\83^\83O
+               */
+               TAG Species::GetBaseCampTAG(void);
+
+               /*! 
+               * @brief \8f\8a\8e\9d\8c \94\\82Ì\88ê\97\97\82ð\95Ô\82·
+               * @return \8f\8a\8e\9d\8c \94\\88ê\97\97\82Ìvector
+               */
+               std::vector<TAG> GetAuthorityTags(void);
 
-public:
+               /*! 
+               * @brief \91æ\88ê\8eí\91°\82Ì\83^\83O\82ð\95Ô\82·
+               * @return \91æ\88ê\8eí\91°\82Ì\83^\83O
+               */
+               TAG GetFirstRaceTag(void);
 
-       /*! 
-        * @brief Species\83N\83\89\83X\83R\83\93\83X\83g\83\89\83N\83^(GameElement\83\81\83\93\83o\91Î\89\9e)
-        * @param id GameElement\82ÌID
-        * @param TAG GameElement\82Ì\83^\83O
-        * @param gameWorld \8f\8a\91®\8c³gameWorld\8eQ\8fÆ\83|\83C\83\93\83^
-        */
-       Species::Species(ID id, TAG tag, GameWorld *gameWorld);
+               /*! 
+               * @brief \91æ\93ñ\8eí\91°\82Ì\83^\83O\82ð\95Ô\82·
+               * @return \91æ\93ñ\8eí\91°\82Ì\83^\83O
+               */
+               TAG GetSecondtRaceTag(void);
 
-       Species::Species(void);
+       };
 
-       Species::~Species(void);
+}
 
-};