OSDN Git Service

Implement Species::WipeData().
[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
13 #pragma once
14
15 namespace Deeangband
16 {
17
18         /*!
19         * @class Species
20         * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\83N\83\89\83X
21         */
22         class Species : public GameElement
23         {
24
25         private:
26
27                 SOUL baseSoul; //!< \8aî\96{\83\\83E\83\8b\97Ê
28
29                 HEIGHT averageHeight;    //!< \95½\8bÏ\90g\92·
30                 HEIGHT averageWeight;    //!< \95½\8bÏ\91Ì\8fd
31
32                 FEED baseFeed; //!< \8aî\96{\8e \97{\92l
33                 LEVEL divineLevel; //!< \8aî\96{\90_\90«\83\8c\83x\83\8b
34
35                 TAG baseCamp; //!< \8aî\96{\8f\8a\91®\90w\89c
36
37                 BaseStatusTable baseStatus; //!< \8aî\96{\83X\83e\81[\83^\83X
38
39                 std::map<TAG, SKILL_EXP> skillExpList; //!< \83X\83L\83\8b\8co\8c±\92l\83\8a\83X\83g
40
41                 NUMBER currentCreationNumber; //!< \8c»\8dÝ\90\90¬\90\94
42                 NUMBER currentDeadNumber; //!< \8c»\8dÝ\8e\80\96S\90\94
43                 NUMBER maxCreationNumber; //!< \8dÅ\91å\90\90¬\90\94
44
45                 TAG baseFirstRace; //!< \8aî\96{\8eí\91°\83^\83O1
46                 TAG baseSecondRace; //!< \8aî\96{\8eí\91°\83^\83O2
47
48                 std::vector<TAG> authorityTags; //!< \8c \94\\83^\83O\94z\97ñ
49
50                 friend class boost::serialization::access;
51                 template<class Archive> void serialize(Archive &archive, const unsigned int) 
52                 {
53                         archive & boost::serialization::make_nvp("Name", name);
54                         archive & boost::serialization::make_nvp("BaseFirstRace", baseFirstRace);
55                         archive & boost::serialization::make_nvp("BaseSecondRace", baseSecondRace);
56                         archive & boost::serialization::make_nvp("BaseSoul", baseSoul);
57                         archive & boost::serialization::make_nvp("AverageHeight", averageHeight);
58                         archive & boost::serialization::make_nvp("AverageWeight", averageWeight);
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         public:
66
67                 /*! 
68                 * @brief Species\83N\83\89\83X\83R\83\93\83X\83g\83\89\83N\83^(GameElement\83\81\83\93\83o\91Î\89\9e)
69                 * @param id GameElement\82ÌID
70                 * @param tag GameElement\82Ì\83^\83O
71                 * @param gameWorld \8f\8a\91®\8c³gameWorld\8eQ\8fÆ\83|\83C\83\93\83^
72                 */
73                 Species::Species(ID id, TAG tag, GameWorld *gameWorld);
74
75                 /*! 
76                 * @brief Species\83N\83\89\83X\83R\83\93\83X\83g\83\89\83N\83^
77                 */
78                 Species::Species(void);
79
80                 /*! 
81                 * @brief Species\83N\83\89\83X\83f\83X\83g\83\89\83N\83^
82                 */
83                 Species::~Species(void);
84
85                 /*! 
86                 * @brief \83f\81[\83^\8f\89\8aú\89»
87                 */
88                 void Species::WipeData(void);
89
90                 /*! 
91                 * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\8aî\96{\83\\83E\83\8b\97Ê\82ð\8bA\82·
92                 * @return \83\\83E\83\8b\97Ê
93                 */
94                 SOUL Species::GetBaseSoul(void);
95
96                 /*! 
97                 * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\95½\8bÏ\90g\92·\82ð\95Ô\82·
98                 * @return \95½\8bÏ\90g\92·
99                 */
100                 HEIGHT Species::GetAverageHeight(void);
101
102                 /*! 
103                 * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\95½\8bÏ\91Ì\8fd\82ð\95Ô\82·
104                 * @return \95½\8bÏ\91Ì\8fd
105                 */
106                 WEIGHT Species::GetAverageWeight(void);
107
108                 /*! 
109                 * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\8aî\96{\8e \97{\93x\82ð\95Ô\82·
110                 * @return \8aî\96{\8e \97{\93x
111                 */
112                 FEED Species::GetBaseFeed(void);
113
114                 /*! 
115                 * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\83X\83L\83\8b\8aî\96{\8co\8c±\92l\82ð\95Ô\82·
116                 * @param tag \8eæ\93¾\82µ\82½\82¢\83X\83L\83\8b\82Ì\83^\83O
117                 * @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·
118                 */
119                 SKILL_EXP Species::GetSkillExp(TAG tag);
120
121                 /*! 
122                 * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\82Ì\8aî\96{\8f\8a\91®\90w\89c\82ð\95Ô\82·
123                 * @return \8aî\96{\8f\8a\91®\90w\89c\82Ì\83^\83O
124                 */
125                 TAG Species::GetBaseCampTAG(void);
126
127                 /*! 
128                 * @brief \8f\8a\8e\9d\8c \94\\82Ì\88ê\97\97\82ð\95Ô\82·
129                 * @return \8f\8a\8e\9d\8c \94\\88ê\97\97\82Ìvector
130                 */
131                 std::vector<TAG> GetAuthorityTags(void);
132
133         };
134
135 }
136
137 BOOST_CLASS_VERSION(Deeangband::Species, 10);