OSDN Git Service

[Modify] boostライブラリに依存した処理を削除中.
[deeangband/Deeangband-new.git] / Deeangband / Species.h
1 /*!
2 * @file Species.h
3 * @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
4 * @date 2014/02/01
5 * @author Deskull
6 * 2014 Sikabane Works.
7 */
8
9 #include "stdafx.h"
10 #include "GameElement.h"
11 #include "BaseStatusTable.h"
12 #include "HaveSize.h"
13 #include "HaveSymbol.h"
14
15 #pragma once
16
17 namespace Deeangband
18 {
19
20         /*!
21         * @class Species
22         * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\83N\83\89\83X
23         */
24         class Species : public GameElement, public HaveSymbol, public HaveSize
25         {
26
27         private:
28
29                 SOUL baseSoul; //!< \8aî\96{\83\\83E\83\8b\97Ê
30
31                 FEED baseFeed; //!< \8aî\96{\8e \97{\92l
32                 LEVEL divineLevel; //!< \8aî\96{\90_\90«\83\8c\83x\83\8b
33
34                 TAG baseCamp; //!< \8aî\96{\8f\8a\91®\90w\89c
35
36                 BaseStatusTable baseStatus; //!< \8aî\96{\83X\83e\81[\83^\83X
37
38                 std::map<TAG, SKILL_EXP> skillExpList; //!< \83X\83L\83\8b\8co\8c±\92l\83\8a\83X\83g
39
40                 NUMBER currentCreationNumber; //!< \8c»\8dÝ\90\90¬\90\94
41                 NUMBER currentDeadNumber; //!< \8c»\8dÝ\8e\80\96S\90\94
42                 NUMBER maxCreationNumber; //!< \8dÅ\91å\90\90¬\90\94
43
44                 TAG baseFirstRace; //!< \8aî\96{\8eí\91°\83^\83O1
45                 TAG baseSecondRace; //!< \8aî\96{\8eí\91°\83^\83O2
46
47                 std::vector<TAG> authorityTags; //!< \8c \94\\83^\83O\94z\97ñ
48
49                 template<class Archive> void serialize(Archive &archive, const unsigned int version) 
50                 {
51                         if(version >= 0)
52                         {
53                                 archive & BOOST_SERIALIZATION_BASE_OBJECT_NVP(GameElement);
54                                 archive & BOOST_SERIALIZATION_BASE_OBJECT_NVP(HaveSymbol);
55                                 archive & BOOST_SERIALIZATION_BASE_OBJECT_NVP(HaveSize);
56                                 archive & boost::serialization::make_nvp("BaseFirstRace", baseFirstRace);
57                                 archive & boost::serialization::make_nvp("BaseSecondRace", baseSecondRace);
58                                 archive & boost::serialization::make_nvp("BaseSoul", baseSoul);
59                                 archive & boost::serialization::make_nvp("BaseFeed", baseFeed);
60                                 archive & boost::serialization::make_nvp("DivineLevel", divineLevel);
61                                 archive & boost::serialization::make_nvp("BaseCamp", baseCamp);
62                                 archive & boost::serialization::make_nvp("BaseStatus", baseStatus);
63                         }
64                 }
65
66         public:
67
68                 /*! 
69                 * @brief Species\83N\83\89\83X\83R\83\93\83X\83g\83\89\83N\83^
70                 */
71                 Species::Species(void);
72
73                 /*! 
74                 * @brief Species\83N\83\89\83X\83f\83X\83g\83\89\83N\83^
75                 */
76                 Species::~Species(void);
77
78                 /*! 
79                 * @brief \83f\81[\83^\8f\89\8aú\89»
80                 */
81                 void Species::WipeData(void);
82
83                 /*! 
84                 * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\8aî\96{\83\\83E\83\8b\97Ê\82ð\8bA\82·
85                 * @return \83\\83E\83\8b\97Ê
86                 */
87                 SOUL Species::GetBaseSoul(void);
88
89                 /*! 
90                 * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\8aî\96{\8e \97{\93x\82ð\95Ô\82·
91                 * @return \8aî\96{\8e \97{\93x
92                 */
93                 FEED Species::GetBaseFeed(void);
94
95                 /*! 
96                 * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\83X\83L\83\8b\8aî\96{\8co\8c±\92l\82ð\95Ô\82·
97                 * @param tag \8eæ\93¾\82µ\82½\82¢\83X\83L\83\8b\82Ì\83^\83O
98                 * @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·
99                 */
100                 SKILL_EXP Species::GetSkillExp(TAG tag);
101
102                 /*! 
103                 * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\8aî\96{\8f\8a\91®\90w\89c\82ð\95Ô\82·
104                 * @return \8aî\96{\8f\8a\91®\90w\89c\82Ì\83^\83O
105                 */
106                 TAG Species::GetBaseCampTAG(void);
107
108                 /*! 
109                 * @brief \8f\8a\8e\9d\8c \94\\82Ì\88ê\97\97\82ð\95Ô\82·
110                 * @return \8f\8a\8e\9d\8c \94\\88ê\97\97\82Ìvector
111                 */
112                 std::vector<TAG> GetAuthorityTags(void);
113
114                 /*! 
115                 * @brief \91æ\88ê\8eí\91°\82Ì\83^\83O\82ð\95Ô\82·
116                 * @return \91æ\88ê\8eí\91°\82Ì\83^\83O
117                 */
118                 TAG GetFirstRaceTag(void);
119
120                 /*! 
121                 * @brief \91æ\93ñ\8eí\91°\82Ì\83^\83O\82ð\95Ô\82·
122                 * @return \91æ\93ñ\8eí\91°\82Ì\83^\83O
123                 */
124                 TAG GetSecondtRaceTag(void);
125
126         };
127
128 }
129