3 * @brief
\83Q
\81[
\83\80\90¢
\8aE
\82ð
\92è
\8b`
\82·
\82é
10 #include "GameWorld.h"
11 #include "Deeangband.h"
13 #include "Coordinates.h"
14 #include "HaveGameTime.h"
18 #include "Authority.h"
21 #include "CreatureTrait.h"
28 #include "HaveGameTime.h"
30 #include "FixedArtifact.h"
31 #include "GameMessage.h"
34 #include "ItemTrait.h"
42 #include "StartingClass.h"
52 GameWorld::GameWorld(void)
64 void GameWorld::Initialize(void)
67 std::map<ID, std::shared_ptr<Field>>::iterator fieldIt;
68 std::map<TAG, std::shared_ptr<Species>>::iterator speciesIt;
69 fieldList.emplace(0, std::make_shared<Field>(dungeonList.find("VANILLA_WOMB"), 1));
70 fieldIt = fieldList.find(0);
72 speciesIt = speciesList.find("VANILLA_STIGMATIC");
73 GameWorld::GenerateCreature(speciesIt, fieldIt, 10, 10);
75 speciesIt = speciesList.find("VANILLA_RAVING_LUNATIC");
76 GameWorld::GenerateCreature(speciesIt, fieldIt, 5, 5);
78 for(i = 0; i < MAX_KARMAS; i++)
80 karmaList.emplace("VANILLA_", std::make_shared<Karma>());
82 playerIt = creatureList.begin()++;
86 GameWorld::~GameWorld(void)
90 bool GameWorld::GenerateCreature(std::map<TAG, std::shared_ptr<Species>>::iterator& speciesIt)
92 creatureList.emplace(this->creatureID, std::make_shared<Creature>(speciesIt));
96 } while(creatureList.find(this->creatureID) != creatureList.end());
100 bool GameWorld::GenerateCreature(std::map<TAG, std::shared_ptr<Species>>::iterator& speciesIt, std::map<ID, std::shared_ptr<Field>>::iterator& fieldIt, MAP_LENGTH x, MAP_LENGTH y)
102 std::map<ID, std::shared_ptr<Creature>>::iterator creatureIt;
104 creatureList.emplace(this->creatureID, std::make_shared<Creature>(speciesIt, fieldIt, x, y));
105 creatureIt = creatureList.find(this->creatureID);
106 creatureIt->second->PlusWait(100, TRUE);
107 creatureIt->second->UpdateFieldLore();
108 actionList2.push_back(creatureIt->second.get());
109 test = creatureIt->second.get();
110 //actionList3.push_back(test);
114 } while(creatureList.find(this->creatureID) != creatureList.end());
118 bool GameWorld::xmlSaveAir(void)
120 std::ofstream ofs("lib-Vanilla\\Air.xml");
122 //boost::archive::xml_oarchive oa(ofs);
123 //oa << boost::serialization::make_nvp("Airs", this->airList);
128 bool GameWorld::xmlSaveAbility(void)
130 std::ofstream ofs("lib-Vanilla\\Ability.xml");
132 //boost::archive::xml_oarchive oa(ofs);
133 //oa << boost::serialization::make_nvp("Abilities", this->abilityList);
138 bool GameWorld::xmlSaveAuthority(void)
140 std::ofstream ofs("lib-Vanilla\\Authority.xml");
142 //boost::archive::xml_oarchive oa(ofs);
143 //oa << boost::serialization::make_nvp("Authorities", this->authorityList);
148 bool GameWorld::xmlSaveBuilding(void)
150 std::ofstream ofs("lib-Vanilla\\Building.xml");
152 //boost::archive::xml_oarchive oa(ofs);
153 //oa << boost::serialization::make_nvp("Buildings", this->buildingList);
158 bool GameWorld::xmlSaveCamp(void)
160 std::ofstream ofs("lib-Vanilla\\Camp.xml");
162 //boost::archive::xml_oarchive oa(ofs);
163 //oa << boost::serialization::make_nvp("Camps", this->campList);
168 bool GameWorld::xmlSaveCreatureTrait(void)
170 std::ofstream ofs("lib-Vanilla\\CreatureTrait.xml");
172 //boost::archive::xml_oarchive oa(ofs);
173 //oa << boost::serialization::make_nvp("CreatureTraits", this->creatureTraitList);
178 bool GameWorld::xmlSaveDungeon(void)
180 std::ofstream ofs("lib-Vanilla\\Dungeon.xml");
182 //boost::archive::xml_oarchive oa(ofs);
183 //oa << boost::serialization::make_nvp("Dungeons", this->dungeonList);
188 bool GameWorld::xmlSaveEffect(void)
190 std::ofstream ofs("lib-Vanilla\\Effect.xml");
192 //boost::archive::xml_oarchive oa(ofs);
193 //oa << boost::serialization::make_nvp("Effects", this->effectList);
198 bool GameWorld::xmlSaveFloor(void)
200 std::ofstream ofs("lib-Vanilla\\Floor.xml");
202 //boost::archive::xml_oarchive oa(ofs);
203 //oa << boost::serialization::make_nvp("Floors", this->floorList);
208 bool GameWorld::xmlSaveFixedArtifact(void)
210 std::ofstream ofs("lib-Vanilla\\FixedArtifact.xml");
212 //boost::archive::xml_oarchive oa(ofs);
213 //oa << boost::serialization::make_nvp("FixedArtifacts", this->fixedArtifactList);
218 bool GameWorld::xmlSaveItemBase(void)
220 std::ofstream ofs("lib-Vanilla\\ItemBase.xml");
222 //boost::archive::xml_oarchive oa(ofs);
223 //oa << boost::serialization::make_nvp("ItemBases", this->itemBaseList);
228 bool GameWorld::xmlSaveItemEgo(void)
230 std::ofstream ofs("lib-Vanilla\\ItemEgo.xml");
232 //boost::archive::xml_oarchive oa(ofs);
233 //oa << boost::serialization::make_nvp("ItemEgos", this->itemEgoList);
238 bool GameWorld::xmlSaveItemTrait(void)
240 std::ofstream ofs("lib-Vanilla\\ItemTrait.xml");
242 //boost::archive::xml_oarchive oa(ofs);
243 //oa << boost::serialization::make_nvp("ItemTraits", this->itemTraitList);
248 bool GameWorld::xmlSaveKarma(void)
250 std::ofstream ofs("lib-Vanilla\\Karma.xml");
252 //boost::archive::xml_oarchive oa(ofs);
253 //oa << boost::serialization::make_nvp("Karmas", this->karmaList);
258 bool GameWorld::xmlSaveQuest(void)
260 std::ofstream ofs("lib-Vanilla\\Quest.xml");
262 //boost::archive::xml_oarchive oa(ofs);
263 //oa << boost::serialization::make_nvp("Quests", this->questList);
268 bool GameWorld::xmlSaveRace(void)
270 std::ofstream ofs("lib-Vanilla\\Race.xml");
272 //boost::archive::xml_oarchive oa(ofs);
273 //oa << boost::serialization::make_nvp("Races", this->raceList);
278 bool GameWorld::xmlSaveSpace(void)
280 std::ofstream ofs("lib-Vanilla\\Space.xml");
282 //boost::archive::xml_oarchive oa(ofs);
283 //oa << boost::serialization::make_nvp("Spaces", this->spaceList);
288 bool GameWorld::xmlSaveSkill(void)
290 std::ofstream ofs("lib-Vanilla\\Skill.xml");
292 //boost::archive::xml_oarchive oa(ofs);
293 //oa << boost::serialization::make_nvp("Skills", this->skillList);
298 bool GameWorld::xmlSaveSpecie(void)
300 std::ofstream ofs("lib-Vanilla\\Specie.xml");
302 //boost::archive::xml_oarchive oa(ofs);
303 //oa << boost::serialization::make_nvp("Species", this->speciesList);
308 bool GameWorld::xmlSaveStartingClass(void)
310 std::ofstream ofs("lib-Vanilla\\StartingClass.xml");
312 //boost::archive::xml_oarchive oa(ofs);
313 //oa << boost::serialization::make_nvp("StartingClasses", this->startingClassList);
318 bool GameWorld::xmlSaveTrapBase(void)
320 std::ofstream ofs("lib-Vanilla\\TrapBase.xml");
322 //boost::archive::xml_oarchive oa(ofs);
323 //oa << boost::serialization::make_nvp("TrapBases", this->trapBaseList);
328 bool GameWorld::XMLSave(void)
331 this->xmlSaveAbility();
332 this->xmlSaveAuthority();
333 this->xmlSaveBuilding();
335 this->xmlSaveCreatureTrait();
336 this->xmlSaveDungeon();
337 this->xmlSaveEffect();
338 this->xmlSaveFloor();
339 this->xmlSaveFixedArtifact();
340 this->xmlSaveItemBase();
341 this->xmlSaveItemEgo();
342 this->xmlSaveItemTrait();
343 this->xmlSaveKarma();
344 this->xmlSaveQuest();
346 this->xmlSaveSpace();
347 this->xmlSaveSkill();
348 this->xmlSaveSpecie();
349 this->xmlSaveStartingClass();
350 this->xmlSaveTrapBase();
354 bool GameWorld::xmlLoadAir()
356 std::ifstream ifs("lib-Vanilla\\Air.xml");
358 //boost::archive::xml_iarchive ia(ifs);
359 //ia >> BOOST_SERIALIZATION_NVP(airList);
363 bool GameWorld::xmlLoadAbility()
365 std::ifstream ifs("lib-Vanilla\\Ability.xml");
367 //boost::archive::xml_iarchive ia(ifs);
368 //ia >> BOOST_SERIALIZATION_NVP(abilityList);
372 bool GameWorld::xmlLoadAuthority()
374 std::ifstream ifs("lib-Vanilla\\Authority.xml");
376 //boost::archive::xml_iarchive ia(ifs);
377 //ia >> BOOST_SERIALIZATION_NVP(authorityList);
381 bool GameWorld::xmlLoadBuilding()
383 std::ifstream ifs("lib-Vanilla\\Building.xml");
385 //boost::archive::xml_iarchive ia(ifs);
386 //ia >> BOOST_SERIALIZATION_NVP(buildingList);
390 bool GameWorld::xmlLoadCamp()
392 std::ifstream ifs("lib-Vanilla\\Camp.xml");
394 //boost::archive::xml_iarchive ia(ifs);
395 //ia >> BOOST_SERIALIZATION_NVP(campList);
399 bool GameWorld::xmlLoadCreatureTrait()
401 std::ifstream ifs("lib-Vanilla\\CreatureTrait.xml");
403 //boost::archive::xml_iarchive ia(ifs);
404 //ia >> BOOST_SERIALIZATION_NVP(creatureTraitList);
408 bool GameWorld::xmlLoadDungeon()
410 std::ifstream ifs("lib-Vanilla\\Dungeon.xml");
412 //boost::archive::xml_iarchive ia(ifs);
413 //ia >> BOOST_SERIALIZATION_NVP(dungeonList);
417 bool GameWorld::xmlLoadEffect()
419 std::ifstream ifs("lib-Vanilla\\Effect.xml");
421 //boost::archive::xml_iarchive ia(ifs);
422 //ia >> BOOST_SERIALIZATION_NVP(effectList);
426 bool GameWorld::xmlLoadFloor()
428 std::ifstream ifs("lib-Vanilla\\Floor.xml");
430 //boost::archive::xml_iarchive ia(ifs);
431 //ia >> BOOST_SERIALIZATION_NVP(floorList);
435 bool GameWorld::xmlLoadFixedArtifact()
437 std::ifstream ifs("lib-Vanilla\\FixedArtifact.xml");
439 //boost::archive::xml_iarchive ia(ifs);
440 //ia >> BOOST_SERIALIZATION_NVP(fixedArtifactList);
444 bool GameWorld::xmlLoadItemBase()
446 std::ifstream ifs("lib-Vanilla\\ItemBase.xml");
448 //boost::archive::xml_iarchive ia(ifs);
449 //ia >> BOOST_SERIALIZATION_NVP(itemBaseList);
453 bool GameWorld::xmlLoadItemEgo()
455 std::ifstream ifs("lib-Vanilla\\ItemEgo.xml");
457 //boost::archive::xml_iarchive ia(ifs);
458 //ia >> BOOST_SERIALIZATION_NVP(itemEgoList);
462 bool GameWorld::xmlLoadItemTrait()
464 std::ifstream ifs("lib-Vanilla\\ItemTrait.xml");
466 //boost::archive::xml_iarchive ia(ifs);
467 //ia >> BOOST_SERIALIZATION_NVP(itemTraitList);
471 bool GameWorld::xmlLoadKarma()
473 std::ifstream ifs("lib-Vanilla\\Karma.xml");
475 //boost::archive::xml_iarchive ia(ifs);
476 //ia >> BOOST_SERIALIZATION_NVP(karmaList);
480 bool GameWorld::xmlLoadQuest()
482 std::ifstream ifs("lib-Vanilla\\Quest.xml");
484 //boost::archive::xml_iarchive ia(ifs);
485 //ia >> BOOST_SERIALIZATION_NVP(questList);
489 bool GameWorld::xmlLoadRace()
491 std::ifstream ifs("lib-Vanilla\\Race.xml");
493 //boost::archive::xml_iarchive ia(ifs);
494 //ia >> BOOST_SERIALIZATION_NVP(raceList);
498 bool GameWorld::xmlLoadSpace()
500 std::ifstream ifs("lib-Vanilla\\Space.xml");
502 //boost::archive::xml_iarchive ia(ifs);
503 //ia >> BOOST_SERIALIZATION_NVP(spaceList);
507 bool GameWorld::xmlLoadSkill()
509 std::ifstream ifs("lib-Vanilla\\Skill.xml");
511 //boost::archive::xml_iarchive ia(ifs);
512 //ia >> BOOST_SERIALIZATION_NVP(skillList);
516 bool GameWorld::xmlLoadSpecie()
518 std::ifstream ifs("lib-Vanilla\\Specie.xml");
520 //boost::archive::xml_iarchive ia(ifs);
521 //ia >> BOOST_SERIALIZATION_NVP(speciesList);
525 bool GameWorld::xmlLoadStartingClass()
527 std::ifstream ifs("lib-Vanilla\\StartingClass.xml");
529 //boost::archive::xml_iarchive ia(ifs);
530 //ia >> BOOST_SERIALIZATION_NVP(startingClassList);
534 bool GameWorld::xmlLoadTrapBase()
536 std::ifstream ifs("lib-Vanilla\\TrapBase.xml");
538 //boost::archive::xml_iarchive ia(ifs);
539 //ia >> BOOST_SERIALIZATION_NVP(trapBaseList);
543 void GameWorld::XMLLoad(void)
546 this->xmlLoadAbility();
547 this->xmlLoadAuthority();
548 this->xmlLoadBuilding();
550 this->xmlLoadCreatureTrait();
551 this->xmlLoadDungeon();
552 this->xmlLoadEffect();
553 this->xmlLoadFloor();
554 this->xmlLoadFixedArtifact();
555 this->xmlLoadItemBase();
556 this->xmlLoadItemEgo();
557 this->xmlLoadItemTrait();
558 this->xmlLoadKarma();
559 this->xmlLoadQuest();
561 this->xmlLoadSpace();
562 this->xmlLoadSkill();
563 this->xmlLoadSpecie();
564 this->xmlLoadStartingClass();
565 this->xmlLoadTrapBase();
568 Authority *GameWorld::GetAuthority(TAG tag)
570 return &(*authorityList[tag]);
573 CreatureTrait *GameWorld::GetCreatureTrait(TAG tag)
575 return &(*creatureTraitList[tag]);
578 Effect *GameWorld::GetEffect(TAG tag)
580 return &(*effectList[tag]);
583 FixedArtifact *GameWorld::GetFixedArtifact(TAG tag)
585 return &(*fixedArtifactList[tag]);
588 Floor *GameWorld::GetFloor(TAG tag)
590 return &(*floorList[tag]);
593 ItemBase *GameWorld::GetItemBase(TAG tag)
595 return &(*itemBaseList[tag]);
598 ItemEgo *GameWorld::GetItemEgo(TAG tag)
600 return &(*itemEgoList[tag]);
603 ItemTrait *GameWorld::GetItemTrait(TAG tag)
605 return &(*itemTraitList[tag]);
608 Karma *GameWorld::GetKarma(TAG tag)
610 return &(*karmaList[tag]);
613 Skill *GameWorld::GetSkill(TAG tag)
615 return &(*skillList[tag]);
618 Species *GameWorld::GetSpecies(TAG tag)
620 return &(*speciesList[tag]);
623 TrapBase *GameWorld::GetTrapBase(TAG tag)
625 return &(*trapBaseList[tag]);
628 Building *GameWorld::GetBuilding(TAG tag)
630 return &(*buildingList[tag]);
633 Camp *GameWorld::GetCamp(TAG tag)
635 return &(*campList[tag]);
638 Dungeon *GameWorld::GetDungeon(TAG tag)
640 return &(*dungeonList[tag]);
643 Item *GameWorld::GetItem(ID id)
645 return &(*itemList[id]);
648 Field *GameWorld::GetField(ID id)
650 return &(*fieldList[id]);
653 Creature *GameWorld::GetCreature(ID id)
655 return &(*creatureList[id]);
658 std::map<TAG, std::shared_ptr<Ability>> *GameWorld::GetAbilityList(void)
660 return &(this->abilityList);
663 Quest *GameWorld::GetQuest(TAG tag)
665 return &(*questList[tag]);
668 GAME_TIME GameWorld::GetGameTime(void)
670 return this->gameTime;
673 void GameWorld::WipeCreature(ID id)
675 creatureList.erase(id);
678 CREATURE_IT GameWorld::GetPlayerCreature(void)
680 return this->playerIt;
683 Creature *GameWorld::GetCreatureFromPosition(ID fieldID, Coordinates *positionPtr)
685 CREATURE_IT creatureIt;
686 creatureIt = this->creatureList.begin();
687 while(creatureIt != this->creatureList.end())
689 if(creatureIt->second->GetPosition() == *positionPtr && fieldID == creatureIt->second->GetFieldID()) return (creatureIt->second.get());
696 Floor *GameWorld::GetFloorFromPosition(ID fieldID, Coordinates *positionPtr)
698 Square *square = fieldList[fieldID].get()->GetSquare(positionPtr->GetX(), positionPtr->GetY());
699 if(!square) return NULL;
700 TAG tag = square->GetFloorTag();
701 return &(*floorList[tag]);
704 std::map<TAG, std::shared_ptr<Floor>> *GameWorld::GetFloorList(void)
709 std::map<TAG, std::shared_ptr<Species>> *GameWorld::GetSpeciesList(void)
714 CREATURE_LIST *GameWorld::GetCreatureList(void)
716 return &creatureList;
719 ACTION_LIST* GameWorld::GetActionList(void)
721 return &(this->actionList);
724 HaveGameTime *GameWorld::GetNextActionObject(void)
727 return this->playerIt->second.get();