diff --git a/source/glest_game/type_instances/faction.cpp b/source/glest_game/type_instances/faction.cpp index 6b1129b0..93a56885 100644 --- a/source/glest_game/type_instances/faction.cpp +++ b/source/glest_game/type_instances/faction.cpp @@ -2267,6 +2267,13 @@ void Faction::saveGame(XmlNode *rootNode) { factionNode->addAttribute("currentSwitchTeamVoteFactionIndex",intToStr(currentSwitchTeamVoteFactionIndex), mapTagReplacements); factionNode->addAttribute("allowSharedTeamUnits",intToStr(allowSharedTeamUnits), mapTagReplacements); + for(std::set::iterator iterMap = lockedUnits.begin(); + iterMap != lockedUnits.end(); ++iterMap) { + XmlNode *lockedUnitsListNode = factionNode->addChild("lockedUnitList"); + const UnitType *ut=*iterMap; + + lockedUnitsListNode->addAttribute("value",ut->getName(false), mapTagReplacements); + } for(std::map::iterator iterMap = unitsMovingList.begin(); iterMap != unitsMovingList.end(); ++iterMap) { @@ -2359,6 +2366,14 @@ void Faction::loadGame(const XmlNode *rootNode, int factionIndex,GameSettings *s random.setLastNumber(factionNode->getAttribute("random")->getIntValue()); + vector lockedUnitsListNodeList = factionNode->getChildList("lockedUnitList"); + for(unsigned int i = 0; i < lockedUnitsListNodeList.size(); ++i) { + XmlNode *lockedUnitsListNode = lockedUnitsListNodeList[i]; + + string unitName = lockedUnitsListNode->getAttribute("value")->getValue(); + lockedUnits.insert(getType()->getUnitType(unitName)); + } + vector unitsMovingListNodeList = factionNode->getChildList("unitsMovingList"); for(unsigned int i = 0; i < unitsMovingListNodeList.size(); ++i) { XmlNode *unitsMovingListNode = unitsMovingListNodeList[i];