3 * @brief
\83Q
\81[
\83\80\90¢
\8aE
\82Ì
\83v
\83\8d\83g
\83^
\83C
\83v
\90é
\8c¾
6 * 2013-2014 Sikabane Works.
12 #include "Deeangband.h"
13 #include "GameSurface.h"
15 #include "Authority.h"
19 #include "CreatureTrait.h"
23 #include "FixedArtifact.h"
24 #include "GameSurface.h"
27 #include "ItemTrait.h"
39 BOOST_CLASS_VERSION(GameWorld, 1);
46 * @brief
\83Q
\81[
\83\80\90¢
\8aE
\82Ì
\83N
\83\89\83X
51 GameSurface *gameSurface;
53 //
\90Ã
\93I
\83f
\81[
\83^
\83\8a\83X
\83g
54 std::map<TAG, std::shared_ptr<Authority>> authorityList; /*!<
\91S
\8c \94\
\83\8a\83X
\83g*/
55 std::map<TAG, std::shared_ptr<Building>> buildingList; /*!<
\91S
\8e{
\90Ý
\83\8a\83X
\83g*/
56 std::map<TAG, std::shared_ptr<Camp>> campList; /*!<
\91S
\90w
\89c
\83\8a\83X
\83g*/
57 std::map<TAG, std::shared_ptr<CreatureTrait>> creatureTraitList; /*!<
\91S
\83N
\83\8a\81[
\83`
\83\83\81[
\93Á
\90«
\83\8a\83X
\83g*/
58 std::map<TAG, std::shared_ptr<Dungeon>> dungeonList; /*!<
\91S
\83_
\83\93\83W
\83\87\83\93\83\8a\83X
\83g*/
59 std::map<TAG, std::shared_ptr<Effect>> effectList; /*!<
\91S
\8cø
\89Ê
\91®
\90«
\83\8a\83X
\83g*/
60 std::map<TAG, std::shared_ptr<Feature>> featureList; /*!<
\91S
\92n
\8c`
\83\8a\83X
\83g*/
61 std::map<TAG, std::shared_ptr<FixedArtifact>> fixedArtifactList; /*!<
\91S
\8cÅ
\92è
\83A
\81[
\83e
\83B
\83t
\83@
\83N
\83g
\83\8a\83X
\83g*/
62 std::map<TAG, std::shared_ptr<ItemBase>> itemBaseList; /*!<
\91S
\83A
\83C
\83e
\83\80\83x
\81[
\83X
\83\8a\83X
\83g*/
63 std::map<TAG, std::shared_ptr<ItemEgo>> itemEgoList; /*!<
\91S
\83A
\83C
\83e
\83\80\83G
\83S
\83\8a\83X
\83g*/
64 std::map<TAG, std::shared_ptr<ItemTrait>> itemTraitList; /*!<
\91S
\83A
\83C
\83e
\83\80\93Á
\90«
\83\8a\83X
\83g*/
65 std::map<TAG, std::shared_ptr<Karma>> karmaList; /*!<
\91S
\83J
\83\8b\83}
\83\8a\83X
\83g*/
66 std::map<TAG, std::shared_ptr<Quest>> questList; /*!<
\91S
\83N
\83G
\83X
\83g
\93Á
\90«
\83\8a\83X
\83g*/
67 std::map<TAG, std::shared_ptr<Skill>> skillList; /*!<
\91S
\83X
\83L
\83\8b\83\8a\83X
\83g*/
68 std::map<TAG, std::shared_ptr<Species>> speciesList; /*!<
\91S
\83N
\83\8a\81[
\83`
\83\83\81[
\8eí
\95Ê
\83\8a\83X
\83g*/
69 std::map<TAG, std::shared_ptr<TrapBase>> trapBaseList; /*!<
\91S
\83g
\83\89\83b
\83v
\83x
\81[
\83X
\8eí
\95Ê
\83\8a\83X
\83g*/
71 //
\93®
\93I
\83f
\81[
\83^
\83\8a\83X
\83g
72 std::map<ID, std::shared_ptr<Item>> itemList; /*!<
\91S
\83A
\83C
\83e
\83\80\83\8a\83X
\83g*/
73 std::map<ID, std::shared_ptr<Creature>> creatureList; /*!<
\91S
\83N
\83\8a\81[
\83`
\83\83\81[
\83\8a\83X
\83g*/
74 std::map<ID, std::shared_ptr<Floor>> floorList; /*!<
\91S
\83t
\83\8d\83A
\83\8a\83X
\83g*/
75 std::map<ID, std::shared_ptr<Trap>> trapList; /*!<
\91S
\83g
\83\89\83b
\83v
\83\8a\83X
\83g*/
77 GAME_TIME gameTime; //!<
\83Q
\81[
\83\80\8e\9e\8aÔ
79 friend class boost::serialization::access;
82 * @brief
\83N
\83\89\83X
\82Ì
\83V
\83\8a\83A
\83\89\83C
\83Y
\89»
\82ð
\90Ý
\92è
\82·
\82é
83 * @param archive
\83A
\81[
\83J
\83C
\83u
\89»
\82·
\82é
\83N
\83\89\83X
\82Ì
\83A
\83h
\83\8c\83X
84 * @param fileVersion
\83t
\83@
\83C
\83\8b\83o
\81[
\83W
\83\87\83\93
85 * @return XMLSerialize
\83e
\83\93\83v
\83\8c\81[
\83g
87 template<class Archive> void serialize(Archive &archive, const unsigned int fileVersion)
89 archive & BOOST_SERIALIZATION_NVP(creatureList);
90 archive & BOOST_SERIALIZATION_NVP(itemList);
91 archive & BOOST_SERIALIZATION_NVP(floorList);
92 archive & BOOST_SERIALIZATION_NVP(trapList);
98 * @brief GameWorld
\83N
\83\89\83X
\82Ì
\83R
\83\93\83X
\83g
\83\89\83N
\83^
99 * @param gSurface
\83Q
\81[
\83\80\82Ì
\83C
\83\93\83^
\81[
\83t
\83F
\83C
\83X
\82Æ
\82È
\82é GameSurface
\8eQ
\8fÆ
101 GameWorld(GameSurface *gSurface);
104 * @brief GameWorld
\83N
\83\89\83X
\82Ì
\83f
\83X
\83g
\83\89\83N
\83^
109 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\8c \94\
\82ð
\95Ô
\82·
110 * @param tag
\8c \94\
\82Ì
\83^
\83O
111 * @return
\8c \94\
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
\81A
\91¶
\8dÝ
\82µ
\82È
\82¯
\82ê
\82ÎNULL
\82ð
\95Ô
\82·
\81B
113 Authority *GameWorld::GetAuthority(TAG tag);
116 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\83N
\83\8a\81[
\83`
\83\83\81[
\93Á
\90«
\82ð
\95Ô
\82·
117 * @param tag
\83N
\83\8a\81[
\83`
\83\83\81[
\93Á
\90«
\82Ì
\83^
\83O
118 * @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
120 CreatureTrait *GameWorld::GetCreatureTrait(TAG tag);
123 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\8cø
\89Ê
\91®
\90«
\82ð
\95Ô
\82·
124 * @param tag
\8cø
\89Ê
\91®
\90«
\82Ì
\83^
\83O
125 * @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
127 Effect *GameWorld::GetEffect(TAG tag);
130 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\8cÅ
\92è
\83A
\81[
\83e
\83B
\83t
\83@
\83N
\83g
\82ð
\95Ô
\82·
131 * @param tag
\8cø
\89Ê
\91®
\90«
\82Ì
\83^
\83O
132 * @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
134 FixedArtifact *GameWorld::GetFixedArtifact(TAG tag);
137 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\92n
\8c`
\82ð
\95Ô
\82·
138 * @param tag
\92n
\8c`
\82Ì
\83^
\83O
139 * @return
\92n
\8c`
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
\81A
\91¶
\8dÝ
\82µ
\82È
\82¯
\82ê
\82ÎNULL
\82ð
\95Ô
\82·
\81B
141 Feature *GameWorld::GetFeature(TAG tag);
144 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\83x
\81[
\83X
\83A
\83C
\83e
\83\80\82ð
\95Ô
\82·
145 * @param tag
\83x
\81[
\83X
\83A
\83C
\83e
\83\80\82Ì
\83^
\83O
146 * @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
148 ItemBase *GameWorld::GetItemBase(TAG tag);
151 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\83A
\83C
\83e
\83\80\83G
\83S
\82ð
\95Ô
\82·
152 * @param tag
\83A
\83C
\83e
\83\80\83G
\83S
\82Ì
\83^
\83O
153 * @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
155 ItemEgo *GameWorld::GetItemEgo(TAG tag);
158 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\83A
\83C
\83e
\83\80\93Á
\90«
\82ð
\95Ô
\82·
159 * @param tag
\83A
\83C
\83e
\83\80\93Á
\90«
\82Ì
\83^
\83O
160 * @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
162 ItemTrait *GameWorld::GetItemTrait(TAG tag);
165 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\83J
\83\8b\83}
\82ð
\95Ô
\82·
166 * @param tag
\83J
\83\8b\83}
\82Ì
\83^
\83O
167 * @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
169 Karma *GameWorld::GetKarma(TAG tag);
172 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\83X
\83L
\83\8b\82ð
\95Ô
\82·
173 * @param tag
\83X
\83L
\83\8b\82Ì
\83^
\83O
174 * @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
176 Skill *GameWorld::GetSkill(TAG tag);
179 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\83X
\83L
\83\8b\82ð
\95Ô
\82·
180 * @param tag
\83X
\83L
\83\8b\82Ì
\83^
\83O
181 * @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
183 Species *GameWorld::GetSpecies(TAG tag);
186 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\83g
\83\89\83b
\83v
\8eí
\95Ê
\82ð
\95Ô
\82·
187 * @param tag
\83g
\83\89\83b
\83v
\8eí
\95Ê
\82Ì
\83^
\83O
188 * @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
190 TrapBase *GameWorld::GetTrapBase(TAG tag);
193 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\8e{
\90Ý
\82ð
\95Ô
\82·
194 * @param tag
\8e{
\90Ý
\82Ì
\83^
\83O
195 * @return
\8e{
\90Ý
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
\81A
\91¶
\8dÝ
\82µ
\82È
\82¯
\82ê
\82ÎNULL
\82ð
\95Ô
\82·
\81B
197 Building *GameWorld::GetBuilding(TAG tag);
200 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\90w
\89c
\82ð
\95Ô
\82·
201 * @param tag
\90w
\89c
\82Ì
\83^
\83O
202 * @return
\90w
\89c
\82Ì
\8eQ
\8fÆ
\83|
\83C
\83\93\83^
\81A
\91¶
\8dÝ
\82µ
\82È
\82¯
\82ê
\82ÎNULL
\82ð
\95Ô
\82·
\81B
204 Camp *GameWorld::GetCamp(TAG tag);
207 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\83_
\83\93\83W
\83\87\83\93\82ð
\95Ô
\82·
208 * @param tag
\83_
\83\93\83W
\83\87\83\93\82Ì
\83^
\83O
209 * @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
211 Dungeon *GameWorld::GetDungeon(TAG tag);
214 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\83A
\83C
\83e
\83\80\82ð
\95Ô
\82·
215 * @param id
\83A
\83C
\83e
\83\80\82ÌID
216 * @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
218 Item *GameWorld::GetItem(ID id);
221 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\83t
\83\8d\83A
\82ð
\95Ô
\82·
222 * @param id
\83t
\83\8d\83A
\82ÌID
223 * @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
225 Floor *GameWorld::GetFloor(ID id);
228 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\83N
\83\8a\81[
\83`
\83\83\81[
\82ð
\95Ô
\82·
229 * @param id
\83N
\83\8a\81[
\83`
\83\83\81[
\82ÌID
230 * @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
232 Creature *GameWorld::GetCreature(ID id);
235 * @brief GameWorld
\92\86\82É
\91¶
\8dÝ
\82·
\82é
\83N
\83G
\83X
\83g
\82ð
\95Ô
\82·
236 * @param tag
\83N
\83G
\83X
\83g
\82Ì
\83^
\83O
237 * @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
239 Quest *GameWorld::GetQuest(TAG tag);
242 * @brief
\83v
\83\8c\83C
\8f\88\97\9d\83\81\83C
\83\93\83\8b\81[
\83v
243 * @return
\83Q
\81[
\83\80\8fI
\97¹
\83R
\81[
\83h
245 PLAY_EXIT_CODE PlayLoop(void);
248 * @brief
\8eó
\82¯
\8eæ
\82Á
\82½
\83Q
\81[
\83\80\83R
\83}
\83\93\83h
\82ð
\8f\88\97\9d\82·
\82é
249 * @param command
\8eÀ
\8ds
\82·
\82é
\83Q
\81[
\83\80\83R
\83}
\83\93\83h
250 * @return
\83Q
\81[
\83\80\8fI
\97¹
\83R
\81[
\83h
252 PLAY_EXIT_CODE DoGameCommand(GAME_COMMAND command);
255 * @brief
\83Q
\81[
\83\80\8e\9e\8aÔ
\82ð
\95Ô
\82·
256 * @return
\83Q
\81[
\83\80\8e\9e\8aÔ
258 GAME_TIME GameWorld::GetGameTime(void);
261 * @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
264 void GameWorld::XMLSave(void);