OSDN Git Service

dd794286ecc11714bfe9142d64c558c0537a1458
[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 "Air.h"
15 #include "Ability.h"
16 #include "Authority.h"
17 #include "Building.h"
18 #include "Camp.h"
19 #include "Creature.h"
20 #include "CreatureTrait.h"
21 #include "Dungeon.h"
22 #include "Effect.h"
23 #include "Floor.h"
24 #include "FixedArtifact.h"
25 #include "GameMessage.h"
26 #include "ItemBase.h"
27 #include "ItemEgo.h"
28 #include "ItemTrait.h"
29 #include "Karma.h"
30 #include "Quest.h"
31 #include "Race.h"
32 #include "Space.h"
33 #include "Skill.h"
34 #include "Species.h"
35 #include "StartingClass.h"
36 #include "TrapBase.h"
37
38 #include "Item.h"
39 #include "Creature.h"
40 #include "Field.h"
41 #include "Trap.h"
42
43 BOOST_CLASS_VERSION(GameWorld, 1);
44
45 namespace Deeangband
46 {
47
48         /*!
49         * @class GameWorld
50         * @brief \83Q\81[\83\80\90¢\8aE\82Ì\83N\83\89\83X
51         */
52         class GameWorld
53         {
54         private:
55
56                 //\90Ã\93I\83f\81[\83^\83\8a\83X\83g
57                 std::map<TAG, boost::shared_ptr<Air>> airList;                      /*!<\91S\91å\8bC\92n\8c`\83\8a\83X\83g*/
58                 std::map<TAG, boost::shared_ptr<Ability>> abilityList;              /*!<\91S\94­\93®\8bZ\94\\83\8a\83X\83g*/
59                 std::map<TAG, boost::shared_ptr<Authority>> authorityList;          /*!<\91S\8c \94\\83\8a\83X\83g*/
60                 std::map<TAG, boost::shared_ptr<Building>> buildingList;            /*!<\91S\8e{\90Ý\83\8a\83X\83g*/
61                 std::map<TAG, boost::shared_ptr<Camp>> campList;                    /*!<\91S\90w\89c\83\8a\83X\83g*/
62                 std::map<TAG, boost::shared_ptr<CreatureTrait>> creatureTraitList;  /*!<\91S\83N\83\8a\81[\83`\83\83\81[\93Á\90«\83\8a\83X\83g*/
63                 std::map<TAG, boost::shared_ptr<Dungeon>> dungeonList;              /*!<\91S\83_\83\93\83W\83\87\83\93\83\8a\83X\83g*/
64                 std::map<TAG, boost::shared_ptr<Effect>> effectList;                /*!<\91S\8cø\89Ê\91®\90«\83\8a\83X\83g*/
65                 std::map<TAG, boost::shared_ptr<Floor>> floorList;                  /*!<\91S\8f°\92n\8c`\83\8a\83X\83g*/
66                 std::map<TAG, boost::shared_ptr<FixedArtifact>> fixedArtifactList;  /*!<\91S\8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\83\8a\83X\83g*/
67                 std::map<TAG, boost::shared_ptr<ItemBase>> itemBaseList;            /*!<\91S\83A\83C\83e\83\80\83x\81[\83X\83\8a\83X\83g*/
68                 std::map<TAG, boost::shared_ptr<ItemEgo>> itemEgoList;              /*!<\91S\83A\83C\83e\83\80\83G\83S\83\8a\83X\83g*/
69                 std::map<TAG, boost::shared_ptr<ItemTrait>> itemTraitList;          /*!<\91S\83A\83C\83e\83\80\93Á\90«\83\8a\83X\83g*/
70                 std::map<TAG, boost::shared_ptr<Karma>> karmaList;                  /*!<\91S\83J\83\8b\83}\83\8a\83X\83g*/
71                 std::map<TAG, boost::shared_ptr<Quest>> questList;                  /*!<\91S\83N\83G\83X\83g\93Á\90«\83\8a\83X\83g*/
72                 std::map<TAG, boost::shared_ptr<Space>> spaceList;                  /*!<\91S\8bó\8aÔ\92n\8c`\83\8a\83X\83g*/
73                 std::map<TAG, boost::shared_ptr<Skill>> skillList;                  /*!<\91S\83X\83L\83\8b\83\8a\83X\83g*/
74                 std::map<TAG, boost::shared_ptr<Species>> speciesList;              /*!<\91S\83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\83\8a\83X\83g*/
75                 std::map<TAG, boost::shared_ptr<StartingClass>> startingClassList;  /*!<\91S\8fo\8e©\83\8a\83X\83g*/
76                 std::map<TAG, boost::shared_ptr<Race>> raceList;                    /*!<\91S\8eí\91°\83\8a\83X\83g*/
77                 std::map<TAG, boost::shared_ptr<TrapBase>> trapBaseList;            /*!<\91S\83g\83\89\83b\83v\83x\81[\83X\8eí\95Ê\83\8a\83X\83g*/
78
79                 //\93®\93I\83f\81[\83^\83\8a\83X\83g
80                 std::map<ID, boost::shared_ptr<Item>> itemList;                    /*!<\91S\83A\83C\83e\83\80\83\8a\83X\83g*/
81                 std::map<ID, boost::shared_ptr<Creature>> creatureList;            /*!<\91S\83N\83\8a\81[\83`\83\83\81[\83\8a\83X\83g*/
82                 std::map<ID, boost::shared_ptr<Field>> fieldList;                  /*!<\91S\83t\83\8d\83A\83\8a\83X\83g*/
83                 std::map<ID, boost::shared_ptr<Trap>> trapList;                    /*!<\91S\83g\83\89\83b\83v\83\8a\83X\83g*/
84
85                 ID itemID;     //!<\8bó\82«\83A\83C\83e\83\80ID
86                 ID creatureID; //!<\8bó\82«\83N\83\8a\81[\83`\83\83\81[ID
87                 ID fieldID;    //!<\8bó\82«\83t\83B\81[\83\8b\83hID
88                 ID trapID;     //!<\8bó\82«\83g\83\89\83b\83vID
89
90                 std::vector<boost::shared_ptr<HaveGameTime>> actionList; /*!<\8ds\93®\8f\87\83\8a\83X\83g*/
91
92                 Creature *playerPtr; //!< \83v\83\8c\83C\83\84\81[\83N\83\8a\81[\83`\83\83\81[\8eQ\8fÆ\83|\83C\83\93\83^
93                 GAME_TIME gameTime; //!<\83Q\81[\83\80\8e\9e\8aÔ
94
95                 friend class boost::serialization::access;
96
97                 /*!
98                 * @brief \91å\8bC\92n\8c`\8fî\95ñ\82Ì\83Z\81[\83u
99                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
100                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
101                 */
102                 bool GameWorld::xmlSaveAir(void);
103
104                 /*!
105                 * @brief \94­\93®\8bZ\94\\82Ì\83Z\81[\83u
106                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
107                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
108                 */
109                 bool GameWorld::xmlSaveAbility(void);
110
111                 /*!
112                 * @brief \8c \94\\8fî\95ñ\82Ì\83Z\81[\83u
113                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
114                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
115                 */
116                 bool GameWorld::xmlSaveAuthority(void);
117
118                 /*!
119                 * @brief \8e{\90Ý\8fî\95ñ\82Ì\83Z\81[\83u
120                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
121                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
122                 */
123                 bool GameWorld::xmlSaveBuilding(void);
124
125                 /*!
126                 * @brief \90w\89c\8fî\95ñ\82Ì\83Z\81[\83u
127                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
128                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
129                 */
130                 bool GameWorld::xmlSaveCamp(void);
131
132                 /*!
133                 * @brief \83N\83\8a\81[\83`\83\83\81[\93Á\90«\82Ì\83Z\81[\83u
134                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
135                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
136                 */
137                 bool GameWorld::xmlSaveCreatureTrait(void);
138
139                 /*!
140                 * @brief \83_\83\93\83W\83\87\83\93\8fî\95ñ\82Ì\83Z\81[\83u
141                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
142                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
143                 */
144                 bool GameWorld::xmlSaveDungeon(void);
145
146                 /*!
147                 * @brief \8cø\89Ê\91®\90«\8fî\95ñ\82Ì\83Z\81[\83u
148                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
149                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
150                 */
151                 bool GameWorld::xmlSaveEffect(void);
152
153                 /*!
154                 * @brief \92n\8c`\8fî\95ñ\82Ì\83Z\81[\83u
155                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
156                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
157                 */
158                 bool GameWorld::xmlSaveFloor(void);
159
160                 /*!
161                 * @brief \8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\8fî\95ñ\82Ì\83Z\81[\83u
162                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
163                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
164                 */
165                 bool GameWorld::xmlSaveFixedArtifact(void);
166
167                 /*!
168                 * @brief \83x\81[\83X\83A\83C\83e\83\80\8fî\95ñ\82Ì\83Z\81[\83u
169                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
170                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
171                 */
172                 bool GameWorld::xmlSaveItemBase(void);
173
174                 /*!
175                 * @brief \83A\83C\83e\83\80\83G\83S\8fî\95ñ\82Ì\83Z\81[\83u
176                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
177                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
178                 */
179                 bool GameWorld::xmlSaveItemEgo(void);
180
181                 /*!
182                 * @brief \83A\83C\83e\83\80\93Á\90«\8fî\95ñ\82Ì\83Z\81[\83u
183                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
184                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
185                 */
186                 bool GameWorld::xmlSaveItemTrait(void);
187
188                 /*!
189                 * @brief \83J\83\8b\83}\8fî\95ñ\82Ì\83Z\81[\83u
190                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
191                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
192                 */
193                 bool GameWorld::xmlSaveKarma(void);
194
195                 /*!
196                 * @brief \83N\83G\83X\83g\8fî\95ñ\82Ì\83Z\81[\83u
197                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
198                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
199                 */
200                 bool GameWorld::xmlSaveQuest(void);
201
202                 /*!
203                 * @brief \83N\83G\83X\83g\8fî\95ñ\82Ì\83Z\81[\83u
204                 * @return \8f\91\82«\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
205                 * @todo \8f\91\82«\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
206                 */
207                 bool GameWorld::xmlSaveRace(void);
208
209                 /*!
210                 * @brief \83X\83L\83\8b\8fî\95ñ\82Ì\83Z\81[\83u
211                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
212                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
213                 */
214                 bool GameWorld::xmlSaveSkill(void);
215
216                 /*!
217                 * @brief \8bó\8aÔ\92n\8c`\8fî\95ñ\82Ì\83Z\81[\83u
218                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
219                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
220                 */
221                 bool GameWorld::xmlSaveSpace(void);
222
223                 /*!
224                 * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\8fî\95ñ\82Ì\83Z\81[\83u
225                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
226                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
227                 */
228                 bool GameWorld::xmlSaveSpecie(void);
229
230                 /*!
231                 * @brief \8fo\8e©\8fî\95ñ\82Ì\83Z\81[\83u
232                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
233                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
234                 */
235                 bool GameWorld::xmlSaveStartingClass(void);
236
237                 /*!
238                 * @brief \83x\81[\83X\83g\83\89\83b\83v\8fî\95ñ\82Ì\83Z\81[\83u
239                 * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
240                 * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
241                 */
242                 bool GameWorld::xmlSaveTrapBase(void);
243
244                 bool GameWorld::xmlLoadAir(void);
245                 bool GameWorld::xmlLoadAbility(void);
246                 bool GameWorld::xmlLoadAuthority(void);
247                 bool GameWorld::xmlLoadBuilding(void);
248                 bool GameWorld::xmlLoadCamp(void);
249                 bool GameWorld::xmlLoadCreatureTrait(void);
250                 bool GameWorld::xmlLoadDungeon(void);
251                 bool GameWorld::xmlLoadEffect(void);
252                 bool GameWorld::xmlLoadFloor(void);
253                 bool GameWorld::xmlLoadFixedArtifact(void);
254                 bool GameWorld::xmlLoadItemBase(void);
255                 bool GameWorld::xmlLoadItemEgo(void);
256                 bool GameWorld::xmlLoadItemTrait(void);
257                 bool GameWorld::xmlLoadKarma(void);
258                 bool GameWorld::xmlLoadQuest(void);
259                 bool GameWorld::xmlLoadRace(void);
260                 bool GameWorld::xmlLoadSpace(void);
261                 bool GameWorld::xmlLoadSkill(void);
262                 bool GameWorld::xmlLoadSpecie(void);
263                 bool GameWorld::xmlLoadStartingClass(void);
264                 bool GameWorld::xmlLoadTrapBase(void);
265
266                 /*!
267                 * @brief \83N\83\89\83X\82Ì\83V\83\8a\83A\83\89\83C\83Y\82ð\90Ý\92è\82·\82é
268                 * @param archive \83A\81[\83J\83C\83u\89»\82·\82é\83N\83\89\83X\82Ì\83A\83h\83\8c\83X
269                 * @param version \83t\83@\83C\83\8b\83o\81[\83W\83\87\83\93
270                 * @return XMLSerialize\83e\83\93\83v\83\8c\81[\83g
271                 */
272                 template<class Archive> void serialize(Archive &archive, const unsigned int version) 
273                 {
274                         if(version >= 0)
275                         {
276                                 archive & boost::serialization::make_nvp("Authorities", authorityList);
277                                 archive & boost::serialization::make_nvp("Buildings", buildingList);
278                                 archive & boost::serialization::make_nvp("Camps", campList);
279                                 archive & boost::serialization::make_nvp("Dungeons", dungeonList);
280                                 archive & boost::serialization::make_nvp("Effects", effectList);
281                                 archive & boost::serialization::make_nvp("Floors", floorList);
282                                 archive & boost::serialization::make_nvp("FixedArtifacts", fixedArtifactList);
283                                 archive & boost::serialization::make_nvp("ItemBases", itemBaseList);
284                                 archive & boost::serialization::make_nvp("ItemEgos", itemEgoList);
285                                 archive & boost::serialization::make_nvp("ItemTraits", itemTraitList);
286                                 archive & boost::serialization::make_nvp("Karmas", karmaList);
287                                 archive & boost::serialization::make_nvp("Quests", questList);
288                                 archive & boost::serialization::make_nvp("Skills", skillList);
289                                 archive & boost::serialization::make_nvp("Species", speciesList);
290                                 archive & boost::serialization::make_nvp("TrapBases", trapBaseList);
291
292                                 archive & boost::serialization::make_nvp("Authorities", authorityList);
293                                 archive & boost::serialization::make_nvp("Creatures", creatureList);
294                                 archive & boost::serialization::make_nvp("Items", itemList);
295                                 archive & boost::serialization::make_nvp("Fields", fieldList);
296                                 archive & boost::serialization::make_nvp("Traps", trapList);
297                         }
298                 }
299
300         public:
301
302                 /*!
303                 * @brief GameWorld\83N\83\89\83X\82Ì\83R\83\93\83X\83g\83\89\83N\83^
304                 * @param gSurface \83Q\81[\83\80\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X\82Æ\82È\82é GameSurface \8eQ\8fÆ
305                 */
306                 GameWorld::GameWorld(void);
307
308                 /*!
309                 * @brief GameWorld\83N\83\89\83X\82Ì\83f\83X\83g\83\89\83N\83^
310                 */
311                 GameWorld::~GameWorld(void);
312
313                 /*!
314                 * @brief \83N\83\8a\81[\83`\83\83\81[\82ð\90\90¬\82µGameWorld\92\86\82Ì\8f\94\97v\91f\82Æ\98A\8cg\82³\82¹\82é
315                 * @param creatureTag \83N\83\8a\81[\83`\83\83\81[\83^\83O
316                 * @return \90\90¬\82É\90¬\8c÷\82µ\82½\8fê\8d\87true\82ð\95Ô\82·
317                 */
318                 bool GameWorld::GenerateCreature(TAG creatureTag);
319
320                 /*!
321                 * @brief \83N\83\8a\81[\83`\83\83\81[\82ð\90\90¬\82µGameWorld\92\86\82Ì\8f\94\97v\91f\82Æ\98A\8cg\82³\82¹\82é
322                 * @param creatureTag \83N\83\8a\81[\83`\83\83\81[\83^\83O
323                 * @param fieldID \94z\92u\90æ\83t\83B\81[\83\8b\83hID
324                 * @param x \94z\92u\90æX\8dÀ\95W
325                 * @param y \94z\92u\90æY\8dÀ\95W
326                 * @return \90\90¬\82É\90¬\8c÷\82µ\82½\8fê\8d\87true\82ð\95Ô\82·
327                 */
328                 bool GameWorld::GenerateCreature(TAG creatureTag, ID fieldID, int x, int y);
329
330                 /*!
331                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\8c \94\\82ð\95Ô\82·
332                 * @param tag \8c \94\\82Ì\83^\83O
333                 * @return \8c \94\\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
334                 */
335                 Authority *GameWorld::GetAuthority(TAG tag);
336
337                 /*!
338                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83N\83\8a\81[\83`\83\83\81[\93Á\90«\82ð\95Ô\82·
339                 * @param tag \83N\83\8a\81[\83`\83\83\81[\93Á\90«\82Ì\83^\83O
340                 * @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
341                 */
342                 CreatureTrait *GameWorld::GetCreatureTrait(TAG tag);
343
344                 /*!
345                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\8cø\89Ê\91®\90«\82ð\95Ô\82·
346                 * @param tag \8cø\89Ê\91®\90«\82Ì\83^\83O
347                 * @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
348                 */
349                 Effect *GameWorld::GetEffect(TAG tag);
350
351                 /*!
352                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\82ð\95Ô\82·
353                 * @param tag \8cø\89Ê\91®\90«\82Ì\83^\83O
354                 * @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
355                 */
356                 FixedArtifact *GameWorld::GetFixedArtifact(TAG tag);
357
358                 /*!
359                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\92n\8c`\82ð\95Ô\82·
360                 * @param tag \92n\8c`\82Ì\83^\83O
361                 * @return \92n\8c`\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
362                 */
363                 Floor *GameWorld::GetFloor(TAG tag);
364
365                 /*!
366                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83x\81[\83X\83A\83C\83e\83\80\82ð\95Ô\82·
367                 * @param tag \83x\81[\83X\83A\83C\83e\83\80\82Ì\83^\83O
368                 * @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
369                 */
370                 ItemBase *GameWorld::GetItemBase(TAG tag);
371
372                 /*!
373                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83A\83C\83e\83\80\83G\83S\82ð\95Ô\82·
374                 * @param tag \83A\83C\83e\83\80\83G\83S\82Ì\83^\83O
375                 * @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
376                 */
377                 ItemEgo *GameWorld::GetItemEgo(TAG tag);
378
379                 /*!
380                 * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83A\83C\83e\83\80\93Á\90«\82ð\95Ô\82·
381                 * @param tag \83A\83C\83e\83\80\93Á\90«\82Ì\83^\83O
382                 * @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
383                 */
384                 ItemTrait *GameWorld::GetItemTrait(TAG tag);
385
386                 /*!
387                  * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83J\83\8b\83}\82ð\95Ô\82·
388                  * @param tag \83J\83\8b\83}\82Ì\83^\83O
389                  * @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
390                  */
391                 Karma *GameWorld::GetKarma(TAG tag);
392
393                 /*!
394                  * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83X\83L\83\8b\82ð\95Ô\82·
395                  * @param tag \83X\83L\83\8b\82Ì\83^\83O
396                  * @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
397                  */
398                 Skill *GameWorld::GetSkill(TAG tag);
399
400                 /*!
401                  * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83X\83L\83\8b\82ð\95Ô\82·
402                  * @param tag \83X\83L\83\8b\82Ì\83^\83O
403                  * @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
404                  */
405                 Species *GameWorld::GetSpecies(TAG tag);
406
407                 /*!
408                  * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83g\83\89\83b\83v\8eí\95Ê\82ð\95Ô\82·
409                  * @param tag \83g\83\89\83b\83v\8eí\95Ê\82Ì\83^\83O
410                  * @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
411                  */
412                 TrapBase *GameWorld::GetTrapBase(TAG tag);
413
414                 /*!
415                  * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\8e{\90Ý\82ð\95Ô\82·
416                  * @param tag \8e{\90Ý\82Ì\83^\83O
417                  * @return \8e{\90Ý\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
418                  */
419                 Building *GameWorld::GetBuilding(TAG tag);
420
421                 /*!
422                  * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\90w\89c\82ð\95Ô\82·
423                  * @param tag \90w\89c\82Ì\83^\83O
424                  * @return \90w\89c\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
425                  */
426                 Camp *GameWorld::GetCamp(TAG tag);
427
428                 /*!
429                  * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83_\83\93\83W\83\87\83\93\82ð\95Ô\82·
430                  * @param tag \83_\83\93\83W\83\87\83\93\82Ì\83^\83O
431                  * @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
432                  */
433                 Dungeon *GameWorld::GetDungeon(TAG tag);
434
435                 /*!
436                  * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83A\83C\83e\83\80\82ð\95Ô\82·
437                  * @param id \83A\83C\83e\83\80\82ÌID
438                  * @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
439                  */
440                 Item *GameWorld::GetItem(ID id);
441
442                 /*!
443                  * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83t\83\8d\83A\82ð\95Ô\82·
444                  * @param id \83t\83\8d\83A\82ÌID
445                  * @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
446                  */
447                 Field *GameWorld::GetField(ID id);
448
449                 /*!
450                  * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83N\83\8a\81[\83`\83\83\81[\82ð\95Ô\82·
451                  * @param id \83N\83\8a\81[\83`\83\83\81[\82ÌID
452                  * @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
453                  */
454                 Creature *GameWorld::GetCreature(ID id);
455
456                 /*!
457                  * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\94­\93®\8bZ\94\\82ð\95Ô\82·
458                  * @return \91S\94­\93®\8bZ\94\\82Ì\83\8a\83X\83g
459                  */
460                 std::map<TAG, boost::shared_ptr<Ability>> *GameWorld::GetAbilityList(void);
461
462                 /*!
463                  * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83N\83\8a\81[\83`\83\83\81[\82ð\95Ô\82·
464                  * @return \91S\83N\83\8a\81[\83`\83\83\81[\82Ì\83\8a\83X\83g
465                  */
466                 std::map<ID, boost::shared_ptr<Creature>> *GameWorld::GetCreatureList(void);
467
468                 /*!
469                  * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83N\83G\83X\83g\82ð\95Ô\82·
470                  * @param tag \83N\83G\83X\83g\82Ì\83^\83O
471                  * @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
472                  */
473                 Quest *GameWorld::GetQuest(TAG tag);
474
475                 /*!
476                  * @brief \83Q\81[\83\80\8e\9e\8aÔ\82ð\95Ô\82·
477                  * @return \83Q\81[\83\80\8e\9e\8aÔ
478                  */
479                 GAME_TIME GameWorld::GetGameTime(void);
480
481                 /*!
482                  * @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
483                  * @return \82È\82µ
484                  */
485                 bool GameWorld::XMLSave(void);
486
487                 /*!
488                  * @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
489                  * @return \82È\82µ
490                  */
491                 void GameWorld::XMLLoad(void);
492
493                 /*!
494                  * @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é
495                  * @return \82È\82µ
496                  */
497                 void GameWorld::WipeCreature(ID id);
498
499                 /*!
500                  * @brief \83v\83\8c\83C\83\84\81[\83N\83\8a\81[\83`\83\83\81[\82ð\95Ô\82·
501                  * @return \83v\83\8c\83C\83\84\81[\83N\83\8a\81[\83`\83\83\81[\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
502                  */
503                 Creature *GameWorld::GetPlayerCreature(void);
504
505                 /*!
506                  * @brief \8ds\93®\8f\87\83\8a\83X\83g\82ð\95Ô\82·
507                  * @return \8ds\93®\8f\87\83\8a\83X\83g
508                  */
509                 std::vector<boost::shared_ptr<HaveGameTime>>* GameWorld::GetActionList(void);
510
511                 /*!
512                  * @brief \8ew\92è\83t\83B\81[\83\8b\83h\8by\82Ñ\8dÀ\95W\82É\91\8dÝ\82·\82é\83N\83\8a\81[\83`\83\83\81[\82ª\82¢\82é\82©\82ð\94»\95Ê\82µ\83N\83\8a\81[\83`\83\83\81[\82ð\95Ô\82·\81B
513                  * @param fieldID \83t\83B\81[\83\8b\83hID
514                  * @param positionPtr \8dÀ\95W\83|\83C\83\93\83^
515                  * @param \91\8dÝ\82·\82é\83N\83\8a\81[\83`\83\83\81[\82Ì\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¢\8fê\8d\87NULL\81B
516                  */
517                 Creature *GameWorld::GetCreatureFromPosition(ID fieldID, Coordinates *positionPtr);
518
519                 /*!
520                  * @brief \8ew\92è\83t\83B\81[\83\8b\83h\8by\82Ñ\8dÀ\95W\82É\91\8dÝ\82·\82é\92n\8c`\8fî\95ñ\82ð\95Ô\82·\81B
521                  * @param fieldID \83t\83B\81[\83\8b\83hID
522                  * @param positionPtr \8dÀ\95W\83|\83C\83\93\83^
523                  * @param \91\8dÝ\82·\82é\83N\83\8a\81[\83`\83\83\81[\82Ì\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¢\8fê\8d\87NULL\81B
524                  */
525                 Floor *GameWorld::GetFloorFromPosition(ID fieldID, Coordinates *positionPtr);
526
527                 std::map<TAG, boost::shared_ptr<Floor>> *GameWorld::GetFloorList(void);
528
529                 std::map<TAG, boost::shared_ptr<Species>> *GameWorld::GetSpeciesList(void);
530
531         };
532
533 }