OSDN Git Service

Add abilityLiat and that's property function to GameWorld class.
[deeangband/Deeangband-new.git] / Deeangband / GameWorld.h
1 /*!
2 * @file GameWorld.h
3 * @brief \83Q\81[\83\80\90¢\8aE\82Ì\83v\83\8d\83g\83^\83C\83v\90é\8c¾
4 * @date 2013/02/01
5 * @author Deskull
6 * 2013-2014 Sikabane Works.
7 */
8
9 #pragma once
10
11 #include "stdafx.h"
12 #include "Deeangband.h"
13
14 #include "Ability.h"
15 #include "Authority.h"
16 #include "Building.h"
17 #include "Camp.h"
18 #include "Creature.h"
19 #include "CreatureTrait.h"
20 #include "Dungeon.h"
21 #include "Effect.h"
22 #include "Feature.h"
23 #include "FixedArtifact.h"
24 #include "ItemBase.h"
25 #include "ItemEgo.h"
26 #include "ItemTrait.h"
27 #include "Karma.h"
28 #include "Quest.h"
29 #include "Race.h"
30 #include "Skill.h"
31 #include "Species.h"
32 #include "StartingClass.h"
33 #include "TrapBase.h"
34
35 #include "Item.h"
36 #include "Creature.h"
37 #include "Floor.h"
38 #include "Trap.h"
39
40 BOOST_CLASS_VERSION(GameWorld, 1);
41
42 namespace Deeangband
43 {
44
45         /*!
46         * @class GameWorld
47         * @brief \83Q\81[\83\80\90¢\8aE\82Ì\83N\83\89\83X
48         */
49         class GameWorld
50         {
51         private:
52
53                 //\90Ã\93I\83f\81[\83^\83\8a\83X\83g
54                 std::map<TAG, boost::shared_ptr<Ability>> abilityList;              /*!<\91S\94­\93®\8bZ\94\\83\8a\83X\83g*/
55                 std::map<TAG, boost::shared_ptr<Authority>> authorityList;          /*!<\91S\8c \94\\83\8a\83X\83g*/
56                 std::map<TAG, boost::shared_ptr<Building>> buildingList;            /*!<\91S\8e{\90Ý\83\8a\83X\83g*/
57                 std::map<TAG, boost::shared_ptr<Camp>> campList;                    /*!<\91S\90w\89c\83\8a\83X\83g*/
58                 std::map<TAG, boost::shared_ptr<CreatureTrait>> creatureTraitList;  /*!<\91S\83N\83\8a\81[\83`\83\83\81[\93Á\90«\83\8a\83X\83g*/
59                 std::map<TAG, boost::shared_ptr<Dungeon>> dungeonList;              /*!<\91S\83_\83\93\83W\83\87\83\93\83\8a\83X\83g*/
60                 std::map<TAG, boost::shared_ptr<Effect>> effectList;                /*!<\91S\8cø\89Ê\91®\90«\83\8a\83X\83g*/
61                 std::map<TAG, boost::shared_ptr<Feature>> featureList;              /*!<\91S\92n\8c`\83\8a\83X\83g*/
62                 std::map<TAG, boost::shared_ptr<FixedArtifact>> fixedArtifactList;  /*!<\91S\8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\83\8a\83X\83g*/
63                 std::map<TAG, boost::shared_ptr<ItemBase>> itemBaseList;            /*!<\91S\83A\83C\83e\83\80\83x\81[\83X\83\8a\83X\83g*/
64                 std::map<TAG, boost::shared_ptr<ItemEgo>> itemEgoList;              /*!<\91S\83A\83C\83e\83\80\83G\83S\83\8a\83X\83g*/
65                 std::map<TAG, boost::shared_ptr<ItemTrait>> itemTraitList;          /*!<\91S\83A\83C\83e\83\80\93Á\90«\83\8a\83X\83g*/
66                 std::map<TAG, boost::shared_ptr<Karma>> karmaList;                  /*!<\91S\83J\83\8b\83}\83\8a\83X\83g*/
67                 std::map<TAG, boost::shared_ptr<Quest>> questList;                  /*!<\91S\83N\83G\83X\83g\93Á\90«\83\8a\83X\83g*/
68                 std::map<TAG, boost::shared_ptr<Skill>> skillList;                  /*!<\91S\83X\83L\83\8b\83\8a\83X\83g*/
69                 std::map<TAG, boost::shared_ptr<Species>> speciesList;              /*!<\91S\83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\83\8a\83X\83g*/
70                 std::map<TAG, boost::shared_ptr<StartingClass>> startingClassList;  /*!<\91S\8fo\8e©\83\8a\83X\83g*/
71                 std::map<TAG, boost::shared_ptr<Race>> raceList;                    /*!<\91S\8eí\91°\83\8a\83X\83g*/
72                 std::map<TAG, boost::shared_ptr<TrapBase>> trapBaseList;            /*!<\91S\83g\83\89\83b\83v\83x\81[\83X\8eí\95Ê\83\8a\83X\83g*/
73
74                 //\93®\93I\83f\81[\83^\83\8a\83X\83g
75                 std::map<ID, boost::shared_ptr<Item>> itemList;                    /*!<\91S\83A\83C\83e\83\80\83\8a\83X\83g*/
76                 std::map<ID, boost::shared_ptr<Creature>> creatureList;            /*!<\91S\83N\83\8a\81[\83`\83\83\81[\83\8a\83X\83g*/
77                 std::map<ID, boost::shared_ptr<Floor>> floorList;                  /*!<\91S\83t\83\8d\83A\83\8a\83X\83g*/
78                 std::map<ID, boost::shared_ptr<Trap>> trapList;                    /*!<\91S\83g\83\89\83b\83v\83\8a\83X\83g*/
79
80                 Creature *playerPtr; //!< \83v\83\8c\83C\83\84\81[\83N\83\8a\81[\83`\83\83\81[\8eQ\8fÆ\83|\83C\83\93\83^
81                 GAME_TIME gameTime; //!<\83Q\81[\83\80\8e\9e\8aÔ
82
83                 friend class boost::serialization::access;
84
85                 /*!
86                 * @brief \8c \94\\8fî\95ñ\82Ì\83Z\81[\83u
87                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
88                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
89                 */
90                 bool GameWorld::xmlSaveAuthority(void);
91
92                 /*!
93                 * @brief \8e{\90Ý\8fî\95ñ\82Ì\83Z\81[\83u
94                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
95                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
96                 */
97                 bool GameWorld::xmlSaveBuilding(void);
98
99                 /*!
100                 * @brief \90w\89c\8fî\95ñ\82Ì\83Z\81[\83u
101                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
102                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
103                 */
104                 bool GameWorld::xmlSaveCamp(void);
105
106                 /*!
107                 * @brief \83N\83\8a\81[\83`\83\83\81[\93Á\90«\82Ì\83Z\81[\83u
108                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
109                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
110                 */
111                 bool GameWorld::xmlSaveCreatureTrait(void);
112
113                 /*!
114                 * @brief \83_\83\93\83W\83\87\83\93\8fî\95ñ\82Ì\83Z\81[\83u
115                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
116                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
117                 */
118                 bool GameWorld::xmlSaveDungeon(void);
119
120                 /*!
121                 * @brief \8cø\89Ê\91®\90«\8fî\95ñ\82Ì\83Z\81[\83u
122                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
123                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
124                 */
125                 bool GameWorld::xmlSaveEffect(void);
126
127                 /*!
128                 * @brief \92n\8c`\8fî\95ñ\82Ì\83Z\81[\83u
129                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
130                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
131                 */
132                 bool GameWorld::xmlSaveFeature(void);
133
134                 /*!
135                 * @brief \8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\8fî\95ñ\82Ì\83Z\81[\83u
136                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
137                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
138                 */
139                 bool GameWorld::xmlSaveFixedArtifact(void);
140
141                 /*!
142                 * @brief \83x\81[\83X\83A\83C\83e\83\80\8fî\95ñ\82Ì\83Z\81[\83u
143                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
144                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
145                 */
146                 bool GameWorld::xmlSaveItemBase(void);
147
148                 /*!
149                 * @brief \83A\83C\83e\83\80\83G\83S\8fî\95ñ\82Ì\83Z\81[\83u
150                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
151                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
152                 */
153                 bool GameWorld::xmlSaveItemEgo(void);
154
155                 /*!
156                 * @brief \83A\83C\83e\83\80\93Á\90«\8fî\95ñ\82Ì\83Z\81[\83u
157                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
158                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
159                 */
160                 bool GameWorld::xmlSaveItemTrait(void);
161
162                 /*!
163                 * @brief \83J\83\8b\83}\8fî\95ñ\82Ì\83Z\81[\83u
164                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
165                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
166                 */
167                 bool GameWorld::xmlSaveKarma(void);
168
169                 /*!
170                 * @brief \83N\83G\83X\83g\8fî\95ñ\82Ì\83Z\81[\83u
171                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
172                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
173                 */
174                 bool GameWorld::xmlSaveQuest(void);
175
176                 /*!
177                 * @brief \83N\83G\83X\83g\8fî\95ñ\82Ì\83Z\81[\83u
178                 * @return \8f\91\82«\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
179                 * @todo \8f\91\82«\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
180                 */
181                 bool GameWorld::xmlSaveRace(void);
182
183                 /*!
184                 * @brief \83X\83L\83\8b\8fî\95ñ\82Ì\83Z\81[\83u
185                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
186                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
187                 */
188                 bool GameWorld::xmlSaveSkill(void);
189
190                 /*!
191                 * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\8fî\95ñ\82Ì\83Z\81[\83u
192                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
193                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
194                 */
195                 bool GameWorld::xmlSaveSpecie(void);
196
197                 /*!
198                 * @brief \8fo\8e©\8fî\95ñ\82Ì\83Z\81[\83u
199                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
200                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
201                 */
202                 bool GameWorld::xmlSaveStartingClass(void);
203
204                 /*!
205                 * @brief \83x\81[\83X\83g\83\89\83b\83v\8fî\95ñ\82Ì\83Z\81[\83u
206                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
207                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
208                 */
209                 bool GameWorld::xmlSaveTrapBase(void);
210
211                 bool GameWorld::xmlLoadAuthority(void);
212                 bool GameWorld::xmlLoadBuilding(void);
213                 bool GameWorld::xmlLoadCamp(void);
214                 bool GameWorld::xmlLoadCreatureTrait(void);
215                 bool GameWorld::xmlLoadDungeon(void);
216                 bool GameWorld::xmlLoadEffect(void);
217                 bool GameWorld::xmlLoadFeature(void);
218                 bool GameWorld::xmlLoadFixedArtifact(void);
219                 bool GameWorld::xmlLoadItemBase(void);
220                 bool GameWorld::xmlLoadItemEgo(void);
221                 bool GameWorld::xmlLoadItemTrait(void);
222                 bool GameWorld::xmlLoadKarma(void);
223                 bool GameWorld::xmlLoadQuest(void);
224                 bool GameWorld::xmlLoadRace(void);
225                 bool GameWorld::xmlLoadSkill(void);
226                 bool GameWorld::xmlLoadSpecie(void);
227                 bool GameWorld::xmlLoadStartingClass(void);
228                 bool GameWorld::xmlLoadTrapBase(void);
229
230                 /*!
231                 * @brief \83N\83\89\83X\82Ì\83V\83\8a\83A\83\89\83C\83Y\82ð\90Ý\92è\82·\82é
232                 * @param archive \83A\81[\83J\83C\83u\89»\82·\82é\83N\83\89\83X\82Ì\83A\83h\83\8c\83X
233                 * @param version \83t\83@\83C\83\8b\83o\81[\83W\83\87\83\93
234                 * @return XMLSerialize\83e\83\93\83v\83\8c\81[\83g
235                 */
236                 template<class Archive> void serialize(Archive &archive, const unsigned int version) 
237                 {
238                         if(version >= 0)
239                         {
240                                 archive & boost::serialization::make_nvp("Authorities", authorityList);
241                                 archive & boost::serialization::make_nvp("Buildings", buildingList);
242                                 archive & boost::serialization::make_nvp("Camps", campList);
243                                 archive & boost::serialization::make_nvp("Dungeons", dungeonList);
244                                 archive & boost::serialization::make_nvp("Effects", effectList);
245                                 archive & boost::serialization::make_nvp("Features", featureList);
246                                 archive & boost::serialization::make_nvp("FixedArtifacts", fixedArtifactList);
247                                 archive & boost::serialization::make_nvp("ItemBases", itemBaseList);
248                                 archive & boost::serialization::make_nvp("ItemEgos", itemEgoList);
249                                 archive & boost::serialization::make_nvp("ItemTraits", itemTraitList);
250                                 archive & boost::serialization::make_nvp("Karmas", karmaList);
251                                 archive & boost::serialization::make_nvp("Quests", questList);
252                                 archive & boost::serialization::make_nvp("Skills", skillList);
253                                 archive & boost::serialization::make_nvp("Species", speciesList);
254                                 archive & boost::serialization::make_nvp("TrapBases", trapBaseList);
255
256                                 archive & boost::serialization::make_nvp("Authorities", authorityList);
257                                 archive & boost::serialization::make_nvp("Creatures", creatureList);
258                                 archive & boost::serialization::make_nvp("Items", itemList);
259                                 archive & boost::serialization::make_nvp("Floors", floorList);
260                                 archive & boost::serialization::make_nvp("Traps", trapList);
261                         }
262                 }
263
264         public:
265
266                 /*!
267                 * @brief GameWorld\83N\83\89\83X\82Ì\83R\83\93\83X\83g\83\89\83N\83^
268                 * @param gSurface \83Q\81[\83\80\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X\82Æ\82È\82é GameSurface \8eQ\8fÆ
269                 */
270                 GameWorld::GameWorld(void);
271
272                 /*!
273                 * @brief GameWorld\83N\83\89\83X\82Ì\83f\83X\83g\83\89\83N\83^
274                 */
275                 GameWorld::~GameWorld(void);
276
277                 /*!
278                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\8c \94\\82ð\95Ô\82·
279                 * @param tag \8c \94\\82Ì\83^\83O
280                 * @return \8c \94\\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
281                 */
282                 Authority *GameWorld::GetAuthority(TAG tag);
283
284                 /*!
285                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83N\83\8a\81[\83`\83\83\81[\93Á\90«\82ð\95Ô\82·
286                 * @param tag \83N\83\8a\81[\83`\83\83\81[\93Á\90«\82Ì\83^\83O
287                 * @return \83N\83\8a\81[\83`\83\83\81[\93Á\90«\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
288                 */
289                 CreatureTrait *GameWorld::GetCreatureTrait(TAG tag);
290
291                 /*!
292                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\8cø\89Ê\91®\90«\82ð\95Ô\82·
293                 * @param tag \8cø\89Ê\91®\90«\82Ì\83^\83O
294                 * @return \8cø\89Ê\91®\90«\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
295                 */
296                 Effect *GameWorld::GetEffect(TAG tag);
297
298                 /*!
299                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\82ð\95Ô\82·
300                 * @param tag \8cø\89Ê\91®\90«\82Ì\83^\83O
301                 * @return \8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
302                 */
303                 FixedArtifact *GameWorld::GetFixedArtifact(TAG tag);
304
305                 /*!
306                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\92n\8c`\82ð\95Ô\82·
307                 * @param tag \92n\8c`\82Ì\83^\83O
308                 * @return \92n\8c`\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
309                 */
310                 Feature *GameWorld::GetFeature(TAG tag);
311
312                 /*!
313                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83x\81[\83X\83A\83C\83e\83\80\82ð\95Ô\82·
314                 * @param tag \83x\81[\83X\83A\83C\83e\83\80\82Ì\83^\83O
315                 * @return \83x\81[\83X\83A\83C\83e\83\80\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
316                 */
317                 ItemBase *GameWorld::GetItemBase(TAG tag);
318
319                 /*!
320                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83A\83C\83e\83\80\83G\83S\82ð\95Ô\82·
321                 * @param tag \83A\83C\83e\83\80\83G\83S\82Ì\83^\83O
322                 * @return \83A\83C\83e\83\80\83G\83S\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
323                 */
324                 ItemEgo *GameWorld::GetItemEgo(TAG tag);
325
326                 /*!
327                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83A\83C\83e\83\80\93Á\90«\82ð\95Ô\82·
328                 * @param tag \83A\83C\83e\83\80\93Á\90«\82Ì\83^\83O
329                 * @return \83A\83C\83e\83\80\93Á\90«\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
330                 */
331                 ItemTrait *GameWorld::GetItemTrait(TAG tag);
332
333                 /*!
334                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83J\83\8b\83}\82ð\95Ô\82·
335                 * @param tag \83J\83\8b\83}\82Ì\83^\83O
336                 * @return \83J\83\8b\83}\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
337                 */
338                 Karma *GameWorld::GetKarma(TAG tag);
339
340                 /*!
341                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83X\83L\83\8b\82ð\95Ô\82·
342                 * @param tag \83X\83L\83\8b\82Ì\83^\83O
343                 * @return \83X\83L\83\8b\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
344                 */
345                 Skill *GameWorld::GetSkill(TAG tag);
346
347                 /*!
348                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83X\83L\83\8b\82ð\95Ô\82·
349                 * @param tag \83X\83L\83\8b\82Ì\83^\83O
350                 * @return \83X\83L\83\8b\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
351                 */
352                 Species *GameWorld::GetSpecies(TAG tag);
353
354                 /*!
355                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83g\83\89\83b\83v\8eí\95Ê\82ð\95Ô\82·
356                 * @param tag \83g\83\89\83b\83v\8eí\95Ê\82Ì\83^\83O
357                 * @return \83g\83\89\83b\83v\8eí\95Ê\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
358                 */
359                 TrapBase *GameWorld::GetTrapBase(TAG tag);
360
361                 /*!
362                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\8e{\90Ý\82ð\95Ô\82·
363                 * @param tag \8e{\90Ý\82Ì\83^\83O
364                 * @return \8e{\90Ý\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
365                 */
366                 Building *GameWorld::GetBuilding(TAG tag);
367
368                 /*!
369                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\90w\89c\82ð\95Ô\82·
370                 * @param tag \90w\89c\82Ì\83^\83O
371                 * @return \90w\89c\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
372                 */
373                 Camp *GameWorld::GetCamp(TAG tag);
374
375                 /*!
376                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83_\83\93\83W\83\87\83\93\82ð\95Ô\82·
377                 * @param tag \83_\83\93\83W\83\87\83\93\82Ì\83^\83O
378                 * @return \83_\83\93\83W\83\87\83\93\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
379                 */
380                 Dungeon *GameWorld::GetDungeon(TAG tag);
381
382                 /*!
383                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83A\83C\83e\83\80\82ð\95Ô\82·
384                 * @param id \83A\83C\83e\83\80\82ÌID
385                 * @return \83A\83C\83e\83\80\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
386                 */
387                 Item *GameWorld::GetItem(ID id);
388
389                 /*!
390                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83t\83\8d\83A\82ð\95Ô\82·
391                 * @param id \83t\83\8d\83A\82ÌID
392                 * @return \83t\83\8d\83A\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
393                 */
394                 Floor *GameWorld::GetFloor(ID id);
395
396                 /*!
397                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83N\83\8a\81[\83`\83\83\81[\82ð\95Ô\82·
398                 * @param id \83N\83\8a\81[\83`\83\83\81[\82ÌID
399                 * @return \83N\83\8a\81[\83`\83\83\81[\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
400                 */
401                 Creature *GameWorld::GetCreature(ID id);
402
403                 /*!
404                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\94­\93®\8bZ\94\\82ð\95Ô\82·
405                 * @return \91S\94­\93®\8bZ\94\\82Ì\83\8a\83X\83g
406                 */
407                 std::map<TAG, boost::shared_ptr<Ability>> *GameWorld::GetAbilityList(void);
408
409                 /*!
410                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83N\83\8a\81[\83`\83\83\81[\82ð\95Ô\82·
411                 * @return \91S\83N\83\8a\81[\83`\83\83\81[\82Ì\83\8a\83X\83g
412                 */
413                 std::map<ID, boost::shared_ptr<Creature>> *GameWorld::GetCreatureList(void);
414
415                 /*!
416                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83N\83G\83X\83g\82ð\95Ô\82·
417                 * @param tag \83N\83G\83X\83g\82Ì\83^\83O
418                 * @return \83N\83G\83X\83g\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
419                 */
420                 Quest *GameWorld::GetQuest(TAG tag);
421
422                 /*!
423                 * @brief \83Q\81[\83\80\8e\9e\8aÔ\82ð\95Ô\82·
424                 * @return \83Q\81[\83\80\8e\9e\8aÔ
425                 */
426                 GAME_TIME GameWorld::GetGameTime(void);
427
428                 /*!
429                 * @brief XML\83V\83\8a\83A\83\89\83C\83Y\82É\82æ\82é\83Q\81[\83\80\83f\81[\83^\95Û\91\8f\88\97\9d
430                 * @return \82È\82µ
431                 */
432                 bool GameWorld::XMLSave(void);
433
434                 /*!
435                 * @brief XML\83f\83V\83\8a\83A\83\89\83C\83Y\82É\82æ\82é\83Q\81[\83\80\83f\81[\83^\93Ç\8d\9e\8f\88\97\9d
436                 * @return \82È\82µ
437                 */
438                 void GameWorld::XMLLoad(void);
439
440                 /*!
441                  * @brief \91Î\89\9e\82µ\82½ID\82Ì\83N\83\8a\81[\83`\83\83\81[\82ð\83\8a\83X\83g\82©\82ç\8f\9c\8aO\82·\82é
442                  * @return \82È\82µ
443                  */
444                 void GameWorld::WipeCreature(ID id);
445
446                 /*!
447                  * @brief \83v\83\8c\83C\83\84\81[\83N\83\8a\81[\83`\83\83\81[\82ð\95Ô\82·
448                  * @return \83v\83\8c\83C\83\84\81[\83N\83\8a\81[\83`\83\83\81[\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
449                  */
450                 Creature *GameWorld::GetPlayerCreature(void);
451
452         };
453
454 }