OSDN Git Service

ゲーム時間経過処理を実装中 / Implementing game time processing.
[deeangband/Deeangband-new.git] / Deeangband / GameWorld.h
index 622d2ce..b0795b2 100644 (file)
 #include "stdafx.h"
 #include "Deeangband.h"
 
-#include "Authority.h"
-#include "Building.h"
-#include "Camp.h"
-#include "Creature.h"
-#include "CreatureTrait.h"
-#include "Dungeon.h"
-#include "Effect.h"
-#include "Feature.h"
-#include "FixedArtifact.h"
-#include "ItemBase.h"
-#include "ItemEgo.h"
-#include "ItemTrait.h"
-#include "Karma.h"
-#include "Quest.h"
-#include "Skill.h"
-#include "Species.h"
-#include "TrapBase.h"
-
-#include "Item.h"
-#include "Creature.h"
-#include "Floor.h"
-#include "Trap.h"
-
 BOOST_CLASS_VERSION(GameWorld, 1);
 
 namespace Deeangband
 {
 
+       class Air;
+       class Ability;
+       class Authority;
+       class Building;
+       class Camp;
+       class CreatureTrait;
+
+       class Creature;
+       class Dungeon;
+       class Effect;
+       class Floor;
+
+       class Field;
+       class FixedArtifact;
+       class GameMessage;
+       class Item;
+       class ItemBase;
+       class ItemEgo;
+       class ItemTrait;
+       class Karma;
+       class Lore;
+       class Quest;
+       class Race;
+       class Space;
+       class Skill;
+       class Species;
+       class StartingClass;
+       class Trap;
+       class TrapBase;
+
+       class Coordinates;
+       class HaveGameTime;
+
+#include "EngineTypedef.h"
+
        /*!
        * @class GameWorld
        * @brief \83Q\81[\83\80\90¢\8aE\82Ì\83N\83\89\83X
@@ -48,139 +60,217 @@ namespace Deeangband
        private:
 
                //\90Ã\93I\83f\81[\83^\83\8a\83X\83g
+               std::map<TAG, boost::shared_ptr<Air>> airList;                      /*!<\91S\91å\8bC\92n\8c`\83\8a\83X\83g*/
+               std::map<TAG, boost::shared_ptr<Ability>> abilityList;              /*!<\91S\94­\93®\8bZ\94\\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<Authority>> authorityList;          /*!<\91S\8c \94\\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<Building>> buildingList;            /*!<\91S\8e{\90Ý\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<Camp>> campList;                    /*!<\91S\90w\89c\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<CreatureTrait>> creatureTraitList;  /*!<\91S\83N\83\8a\81[\83`\83\83\81[\93Á\90«\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<Dungeon>> dungeonList;              /*!<\91S\83_\83\93\83W\83\87\83\93\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<Effect>> effectList;                /*!<\91S\8cø\89Ê\91®\90«\83\8a\83X\83g*/
-               std::map<TAG, boost::shared_ptr<Feature>> featureList;              /*!<\91S\92n\8c`\83\8a\83X\83g*/
+               std::map<TAG, boost::shared_ptr<Floor>> floorList;                  /*!<\91S\8f°\92n\8c`\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<FixedArtifact>> fixedArtifactList;  /*!<\91S\8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<ItemBase>> itemBaseList;            /*!<\91S\83A\83C\83e\83\80\83x\81[\83X\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<ItemEgo>> itemEgoList;              /*!<\91S\83A\83C\83e\83\80\83G\83S\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<ItemTrait>> itemTraitList;          /*!<\91S\83A\83C\83e\83\80\93Á\90«\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<Karma>> karmaList;                  /*!<\91S\83J\83\8b\83}\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<Quest>> questList;                  /*!<\91S\83N\83G\83X\83g\93Á\90«\83\8a\83X\83g*/
+               std::map<TAG, boost::shared_ptr<Space>> spaceList;                  /*!<\91S\8bó\8aÔ\92n\8c`\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<Skill>> skillList;                  /*!<\91S\83X\83L\83\8b\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<Species>> speciesList;              /*!<\91S\83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\83\8a\83X\83g*/
+               std::map<TAG, boost::shared_ptr<StartingClass>> startingClassList;  /*!<\91S\8fo\8e©\83\8a\83X\83g*/
+               std::map<TAG, boost::shared_ptr<Race>> raceList;                    /*!<\91S\8eí\91°\83\8a\83X\83g*/
                std::map<TAG, boost::shared_ptr<TrapBase>> trapBaseList;            /*!<\91S\83g\83\89\83b\83v\83x\81[\83X\8eí\95Ê\83\8a\83X\83g*/
 
                //\93®\93I\83f\81[\83^\83\8a\83X\83g
                std::map<ID, boost::shared_ptr<Item>> itemList;                    /*!<\91S\83A\83C\83e\83\80\83\8a\83X\83g*/
-               std::map<ID, boost::shared_ptr<Creature>> creatureList;            /*!<\91S\83N\83\8a\81[\83`\83\83\81[\83\8a\83X\83g*/
-               std::map<ID, boost::shared_ptr<Floor>> floorList;                  /*!<\91S\83t\83\8d\83A\83\8a\83X\83g*/
+               CREATURE_LIST creatureList;     /*!<\91S\83N\83\8a\81[\83`\83\83\81[\83\8a\83X\83g*/
+               std::map<ID, boost::shared_ptr<Field>> fieldList;                  /*!<\91S\83t\83\8d\83A\83\8a\83X\83g*/
                std::map<ID, boost::shared_ptr<Trap>> trapList;                    /*!<\91S\83g\83\89\83b\83v\83\8a\83X\83g*/
 
-               Creature *playerPtr; //!< \83v\83\8c\83C\83\84\81[\83N\83\8a\81[\83`\83\83\81[\8eQ\8fÆ\83|\83C\83\93\83^
+               ID itemID;     //!<\8bó\82«\83A\83C\83e\83\80ID
+               ID creatureID; //!<\8bó\82«\83N\83\8a\81[\83`\83\83\81[ID
+               ID fieldID;    //!<\8bó\82«\83t\83B\81[\83\8b\83hID
+               ID trapID;     //!<\8bó\82«\83g\83\89\83b\83vID
+
+               std::vector<boost::shared_ptr<HaveGameTime>> actionList; /*!<\8ds\93®\8f\87\83\8a\83X\83g*/
+               std::vector<Creature *> actionList2; /*!<\8ds\93®\8f\87\83\8a\83X\83g*/
+               std::vector<HaveGameTime*> actionList3; /*!<\8ds\93®\8f\87\83\8a\83X\83g*/
+
+               CREATURE_IT playerIt; //!< \83v\83\8c\83C\83\84\81[\83N\83\8a\81[\83`\83\83\81[\8eQ\8fÆ\83|\83C\83\93\83^
                GAME_TIME gameTime; //!<\83Q\81[\83\80\8e\9e\8aÔ
 
                friend class boost::serialization::access;
 
                /*!
-               * @brief \8c \94\\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \91å\8bC\92n\8c`\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               */
+               bool GameWorld::xmlSaveAir(void);
+
+               /*!
+               * @brief \94­\93®\8bZ\94\\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               */
+               bool GameWorld::xmlSaveAbility(void);
+
+               /*!
+               * @brief \8c \94\\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveAuthority(void);
 
                /*!
-               * @brief \8e{\90Ý\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \8e{\90Ý\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveBuilding(void);
 
                /*!
-               * @brief \90w\89c\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \90w\89c\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveCamp(void);
 
                /*!
-               * @brief \83_\83\93\83W\83\87\83\93\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \83N\83\8a\81[\83`\83\83\81[\93Á\90«\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               */
+               bool GameWorld::xmlSaveCreatureTrait(void);
+
+               /*!
+               * @brief \83_\83\93\83W\83\87\83\93\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveDungeon(void);
 
                /*!
-               * @brief \8cø\89Ê\91®\90«\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \8cø\89Ê\91®\90«\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveEffect(void);
 
                /*!
-               * @brief \92n\8c`\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \92n\8c`\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
-               bool GameWorld::xmlSaveFeature(void);
+               bool GameWorld::xmlSaveFloor(void);
 
                /*!
-               * @brief \8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveFixedArtifact(void);
 
                /*!
-               * @brief \83x\81[\83X\83A\83C\83e\83\80\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \83x\81[\83X\83A\83C\83e\83\80\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveItemBase(void);
 
                /*!
-               * @brief \83A\83C\83e\83\80\83G\83S\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \83A\83C\83e\83\80\83G\83S\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveItemEgo(void);
 
                /*!
-               * @brief \83A\83C\83e\83\80\93Á\90«\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \83A\83C\83e\83\80\93Á\90«\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveItemTrait(void);
 
                /*!
-               * @brief \83J\83\8b\83}\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \83J\83\8b\83}\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveKarma(void);
 
                /*!
-               * @brief \83N\83G\83X\83g\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \83N\83G\83X\83g\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveQuest(void);
 
                /*!
-               * @brief \83X\83L\83\8b\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \83N\83G\83X\83g\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \8f\91\82«\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \8f\91\82«\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               */
+               bool GameWorld::xmlSaveRace(void);
+
+               /*!
+               * @brief \83X\83L\83\8b\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveSkill(void);
 
                /*!
-               * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \8bó\8aÔ\92n\8c`\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               */
+               bool GameWorld::xmlSaveSpace(void);
+
+               /*!
+               * @brief \83N\83\8a\81[\83`\83\83\81[\8eí\95Ê\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveSpecie(void);
 
                /*!
-               * @brief \83x\81[\83X\83g\83\89\83b\83v\8fî\95ñ\82Ì\83\8d\81[\83h
-               * @return \93Ç\82Ý\8d\9e\82Ý\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
-               * @todo \93Ç\82Ý\8d\9e\82Ý\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               * @brief \8fo\8e©\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
+               */
+               bool GameWorld::xmlSaveStartingClass(void);
+
+               /*!
+               * @brief \83x\81[\83X\83g\83\89\83b\83v\8fî\95ñ\82Ì\83Z\81[\83u
+               * @return \95Û\91\82É\90¬\8c÷\82·\82ê\82ÎTRUE\82ð\95Ô\82·
+               * @todo \95Û\91\8f\88\97\9d\82Ì\83G\83\89\81[\94»\92è
                */
                bool GameWorld::xmlSaveTrapBase(void);
 
+               bool GameWorld::xmlLoadAir(void);
+               bool GameWorld::xmlLoadAbility(void);
+               bool GameWorld::xmlLoadAuthority(void);
+               bool GameWorld::xmlLoadBuilding(void);
+               bool GameWorld::xmlLoadCamp(void);
+               bool GameWorld::xmlLoadCreatureTrait(void);
+               bool GameWorld::xmlLoadDungeon(void);
+               bool GameWorld::xmlLoadEffect(void);
+               bool GameWorld::xmlLoadFloor(void);
+               bool GameWorld::xmlLoadFixedArtifact(void);
+               bool GameWorld::xmlLoadItemBase(void);
+               bool GameWorld::xmlLoadItemEgo(void);
+               bool GameWorld::xmlLoadItemTrait(void);
+               bool GameWorld::xmlLoadKarma(void);
+               bool GameWorld::xmlLoadQuest(void);
+               bool GameWorld::xmlLoadRace(void);
+               bool GameWorld::xmlLoadSpace(void);
+               bool GameWorld::xmlLoadSkill(void);
+               bool GameWorld::xmlLoadSpecie(void);
+               bool GameWorld::xmlLoadStartingClass(void);
+               bool GameWorld::xmlLoadTrapBase(void);
+
                /*!
                * @brief \83N\83\89\83X\82Ì\83V\83\8a\83A\83\89\83C\83Y\82ð\90Ý\92è\82·\82é
                * @param archive \83A\81[\83J\83C\83u\89»\82·\82é\83N\83\89\83X\82Ì\83A\83h\83\8c\83X
@@ -196,7 +286,7 @@ namespace Deeangband
                                archive & boost::serialization::make_nvp("Camps", campList);
                                archive & boost::serialization::make_nvp("Dungeons", dungeonList);
                                archive & boost::serialization::make_nvp("Effects", effectList);
-                               archive & boost::serialization::make_nvp("Features", featureList);
+                               archive & boost::serialization::make_nvp("Floors", floorList);
                                archive & boost::serialization::make_nvp("FixedArtifacts", fixedArtifactList);
                                archive & boost::serialization::make_nvp("ItemBases", itemBaseList);
                                archive & boost::serialization::make_nvp("ItemEgos", itemEgoList);
@@ -207,9 +297,10 @@ namespace Deeangband
                                archive & boost::serialization::make_nvp("Species", speciesList);
                                archive & boost::serialization::make_nvp("TrapBases", trapBaseList);
 
+                               archive & boost::serialization::make_nvp("Authorities", authorityList);
                                archive & boost::serialization::make_nvp("Creatures", creatureList);
                                archive & boost::serialization::make_nvp("Items", itemList);
-                               archive & boost::serialization::make_nvp("Floors", floorList);
+                               archive & boost::serialization::make_nvp("Fields", fieldList);
                                archive & boost::serialization::make_nvp("Traps", trapList);
                        }
                }
@@ -217,17 +308,40 @@ namespace Deeangband
        public:
 
                /*!
-               * @brief GameWorld\83N\83\89\83X\82Ì\83R\83\93\83X\83g\83\89\83N\83^
-               * @param gSurface \83Q\81[\83\80\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X\82Æ\82È\82é GameSurface \8eQ\8fÆ
-               */
+                * @brief GameWorld\83N\83\89\83X\82Ì\83R\83\93\83X\83g\83\89\83N\83^
+                * @param gSurface \83Q\81[\83\80\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X\82Æ\82È\82é GameSurface \8eQ\8fÆ
+                */
                GameWorld::GameWorld(void);
 
                /*!
-               * @brief GameWorld\83N\83\89\83X\82Ì\83f\83X\83g\83\89\83N\83^
-               */
+                * @brief GameWorld\83N\83\89\83X\82Ì\83f\83X\83g\83\89\83N\83^
+                */
                GameWorld::~GameWorld(void);
 
                /*!
+                * @brief \83Q\81[\83\80\90¢\8aE\82Ì\8f\89\8aú\90\90¬\82ð\8ds\82¤
+                */
+               void GameWorld::Initialize(void);
+
+
+               /*!
+               * @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é
+               * @param creatureTag \83N\83\8a\81[\83`\83\83\81[\83^\83O
+               * @return \90\90¬\82É\90¬\8c÷\82µ\82½\8fê\8d\87true\82ð\95Ô\82·
+               */
+               bool GameWorld::GenerateCreature(std::map<TAG, boost::shared_ptr<Species>>::iterator& speciesIt);
+
+               /*!
+               * @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é
+               * @param creatureTag \83N\83\8a\81[\83`\83\83\81[\83^\83O
+               * @param fieldID \94z\92u\90æ\83t\83B\81[\83\8b\83hID
+               * @param x \94z\92u\90æX\8dÀ\95W
+               * @param y \94z\92u\90æY\8dÀ\95W
+               * @return \90\90¬\82É\90¬\8c÷\82µ\82½\8fê\8d\87true\82ð\95Ô\82·
+               */
+               bool GameWorld::GenerateCreature(std::map<TAG, boost::shared_ptr<Species>>::iterator& speciesIt, std::map<ID, boost::shared_ptr<Field>>::iterator& fieldIt, MAP_LENGTH x, MAP_LENGTH y);
+
+               /*!
                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\8c \94\\82ð\95Ô\82·
                * @param tag \8c \94\\82Ì\83^\83O
                * @return \8c \94\\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
@@ -260,7 +374,7 @@ namespace Deeangband
                * @param tag \92n\8c`\82Ì\83^\83O
                * @return \92n\8c`\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
                */
-               Feature *GameWorld::GetFeature(TAG tag);
+               Floor *GameWorld::GetFloor(TAG tag);
 
                /*!
                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83x\81[\83X\83A\83C\83e\83\80\82ð\95Ô\82·
@@ -284,98 +398,110 @@ namespace Deeangband
                ItemTrait *GameWorld::GetItemTrait(TAG tag);
 
                /*!
-               * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83J\83\8b\83}\82ð\95Ô\82·
-               * @param tag \83J\83\8b\83}\82Ì\83^\83O
-               * @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
-               */
+                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83J\83\8b\83}\82ð\95Ô\82·
+                * @param tag \83J\83\8b\83}\82Ì\83^\83O
+                * @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
+                */
                Karma *GameWorld::GetKarma(TAG tag);
 
                /*!
-               * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83X\83L\83\8b\82ð\95Ô\82·
-               * @param tag \83X\83L\83\8b\82Ì\83^\83O
-               * @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
-               */
+                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83X\83L\83\8b\82ð\95Ô\82·
+                * @param tag \83X\83L\83\8b\82Ì\83^\83O
+                * @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
+                */
                Skill *GameWorld::GetSkill(TAG tag);
 
                /*!
-               * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83X\83L\83\8b\82ð\95Ô\82·
-               * @param tag \83X\83L\83\8b\82Ì\83^\83O
-               * @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
-               */
+                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83X\83L\83\8b\82ð\95Ô\82·
+                * @param tag \83X\83L\83\8b\82Ì\83^\83O
+                * @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
+                */
                Species *GameWorld::GetSpecies(TAG tag);
 
                /*!
-               * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83g\83\89\83b\83v\8eí\95Ê\82ð\95Ô\82·
-               * @param tag \83g\83\89\83b\83v\8eí\95Ê\82Ì\83^\83O
-               * @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
-               */
+                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83g\83\89\83b\83v\8eí\95Ê\82ð\95Ô\82·
+                * @param tag \83g\83\89\83b\83v\8eí\95Ê\82Ì\83^\83O
+                * @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
+                */
                TrapBase *GameWorld::GetTrapBase(TAG tag);
 
                /*!
-               * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\8e{\90Ý\82ð\95Ô\82·
-               * @param tag \8e{\90Ý\82Ì\83^\83O
-               * @return \8e{\90Ý\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
-               */
+                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\8e{\90Ý\82ð\95Ô\82·
+                * @param tag \8e{\90Ý\82Ì\83^\83O
+                * @return \8e{\90Ý\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
+                */
                Building *GameWorld::GetBuilding(TAG tag);
 
                /*!
-               * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\90w\89c\82ð\95Ô\82·
-               * @param tag \90w\89c\82Ì\83^\83O
-               * @return \90w\89c\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
-               */
+                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\90w\89c\82ð\95Ô\82·
+                * @param tag \90w\89c\82Ì\83^\83O
+                * @return \90w\89c\82Ì\8eQ\8fÆ\83|\83C\83\93\83^\81A\91\8dÝ\82µ\82È\82¯\82ê\82ÎNULL\82ð\95Ô\82·\81B
+                */
                Camp *GameWorld::GetCamp(TAG tag);
 
                /*!
-               * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83_\83\93\83W\83\87\83\93\82ð\95Ô\82·
-               * @param tag \83_\83\93\83W\83\87\83\93\82Ì\83^\83O
-               * @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
-               */
+                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83_\83\93\83W\83\87\83\93\82ð\95Ô\82·
+                * @param tag \83_\83\93\83W\83\87\83\93\82Ì\83^\83O
+                * @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
+                */
                Dungeon *GameWorld::GetDungeon(TAG tag);
 
                /*!
-               * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83A\83C\83e\83\80\82ð\95Ô\82·
-               * @param id \83A\83C\83e\83\80\82ÌID
-               * @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
-               */
+                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83A\83C\83e\83\80\82ð\95Ô\82·
+                * @param id \83A\83C\83e\83\80\82ÌID
+                * @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
+                */
                Item *GameWorld::GetItem(ID id);
 
                /*!
-               * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83t\83\8d\83A\82ð\95Ô\82·
-               * @param id \83t\83\8d\83A\82ÌID
-               * @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
-               */
-               Floor *GameWorld::GetFloor(ID id);
+                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83t\83\8d\83A\82ð\95Ô\82·
+                * @param id \83t\83\8d\83A\82ÌID
+                * @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
+                */
+               Field *GameWorld::GetField(ID id);
 
                /*!
-               * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83N\83\8a\81[\83`\83\83\81[\82ð\95Ô\82·
-               * @param id \83N\83\8a\81[\83`\83\83\81[\82ÌID
-               * @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
-               */
+                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83N\83\8a\81[\83`\83\83\81[\82ð\95Ô\82·
+                * @param id \83N\83\8a\81[\83`\83\83\81[\82ÌID
+                * @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
+                */
                Creature *GameWorld::GetCreature(ID id);
 
                /*!
-               * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83N\83G\83X\83g\82ð\95Ô\82·
-               * @param tag \83N\83G\83X\83g\82Ì\83^\83O
-               * @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
-               */
+                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\94­\93®\8bZ\94\\82ð\95Ô\82·
+                * @return \91S\94­\93®\8bZ\94\\82Ì\83\8a\83X\83g
+                */
+               std::map<TAG, boost::shared_ptr<Ability>> *GameWorld::GetAbilityList(void);
+
+               /*!
+                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83N\83\8a\81[\83`\83\83\81[\82ð\95Ô\82·
+                * @return \91S\83N\83\8a\81[\83`\83\83\81[\82Ì\83\8a\83X\83g
+                */
+               CREATURE_LIST *GameWorld::GetCreatureList(void);
+
+               /*!
+                * @brief GameWorld\92\86\82É\91\8dÝ\82·\82é\83N\83G\83X\83g\82ð\95Ô\82·
+                * @param tag \83N\83G\83X\83g\82Ì\83^\83O
+                * @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
+                */
                Quest *GameWorld::GetQuest(TAG tag);
 
                /*!
-               * @brief \83Q\81[\83\80\8e\9e\8aÔ\82ð\95Ô\82·
-               * @return \83Q\81[\83\80\8e\9e\8aÔ
-               */
+                * @brief \83Q\81[\83\80\8e\9e\8aÔ\82ð\95Ô\82·
+                * @return \83Q\81[\83\80\8e\9e\8aÔ
+                */
                GAME_TIME GameWorld::GetGameTime(void);
 
                /*!
-               * @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
-               * @return \82È\82µ
-               */
+                * @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
+                * @return \82È\82µ
+                */
                bool GameWorld::XMLSave(void);
 
                /*!
-               * @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
-               * @return \82È\82µ
-               */
+                * @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
+                * @return \82È\82µ
+                */
                void GameWorld::XMLLoad(void);
 
                /*!
@@ -388,7 +514,40 @@ namespace Deeangband
                 * @brief \83v\83\8c\83C\83\84\81[\83N\83\8a\81[\83`\83\83\81[\82ð\95Ô\82·
                 * @return \83v\83\8c\83C\83\84\81[\83N\83\8a\81[\83`\83\83\81[\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
                 */
-               Creature *GameWorld::GetPlayerCreature(void);
+               CREATURE_IT GameWorld::GetPlayerCreature(void);
+
+               /*!
+                * @brief \8ds\93®\8f\87\83\8a\83X\83g\82ð\95Ô\82·
+                * @return \8ds\93®\8f\87\83\8a\83X\83g
+                */
+               ACTION_LIST *GameWorld::GetActionList(void);
+
+               /*!
+                * @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
+                * @param fieldID \83t\83B\81[\83\8b\83hID
+                * @param positionPtr \8dÀ\95W\83|\83C\83\93\83^
+                * @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
+                */
+               Creature *GameWorld::GetCreatureFromPosition(ID fieldID, Coordinates *positionPtr);
+
+               /*!
+                * @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
+                * @param fieldID \83t\83B\81[\83\8b\83hID
+                * @param positionPtr \8dÀ\95W\83|\83C\83\93\83^
+                * @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
+                */
+               Floor *GameWorld::GetFloorFromPosition(ID fieldID, Coordinates *positionPtr);
+
+               std::map<TAG, boost::shared_ptr<Floor>> *GameWorld::GetFloorList(void);
+
+               std::map<TAG, boost::shared_ptr<Species>> *GameWorld::GetSpeciesList(void);
+
+               /*!
+                * @brief \8e\9e\8aÔ\8co\89ß\8f\88\97\9d\82ð\8ds\82¢\81A\8e\9f\82Ì\83A\83N\83V\83\87\83\93\83I\83u\83W\83F\83N\83g\82ð\95Ô\82·\81B
+                * @return \8ds\93®\8f\87\83\8a\83X\83g
+                */
+               HaveGameTime *GameWorld::GetNextActionObject(void);
+
 
        };