mirror of
https://github.com/vcmi/vcmi.git
synced 2025-08-13 19:54:17 +02:00
Handle "bannedTowns" (alredy used on Jebus).
This commit is contained in:
@@ -205,9 +205,17 @@ std::set<FactionID> ZoneOptions::getDefaultTownTypes() const
|
|||||||
return defaultTowns;
|
return defaultTowns;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::set<FactionID> & ZoneOptions::getTownTypes() const
|
const std::set<FactionID> ZoneOptions::getTownTypes() const
|
||||||
{
|
{
|
||||||
return townTypes;
|
if (townTypes.empty())
|
||||||
|
{
|
||||||
|
//Assume that all towns are allowed, unless banned
|
||||||
|
return vstd::difference(getDefaultTownTypes(), bannedTownTypes);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return vstd::difference(townTypes, bannedTownTypes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ZoneOptions::setTownTypes(const std::set<FactionID> & value)
|
void ZoneOptions::setTownTypes(const std::set<FactionID> & value)
|
||||||
@@ -376,6 +384,7 @@ void ZoneOptions::serializeJson(JsonSerializeFormat & handler)
|
|||||||
handler.serializeBool("townsAreSameType", townsAreSameType, false);
|
handler.serializeBool("townsAreSameType", townsAreSameType, false);
|
||||||
handler.serializeIdArray<FactionID, FactionID>("allowedMonsters", monsterTypes, std::set<FactionID>());
|
handler.serializeIdArray<FactionID, FactionID>("allowedMonsters", monsterTypes, std::set<FactionID>());
|
||||||
handler.serializeIdArray<FactionID, FactionID>("allowedTowns", townTypes, std::set<FactionID>());
|
handler.serializeIdArray<FactionID, FactionID>("allowedTowns", townTypes, std::set<FactionID>());
|
||||||
|
handler.serializeIdArray<FactionID, FactionID>("bannedTowns", bannedTownTypes, std::set<FactionID>());
|
||||||
|
|
||||||
{
|
{
|
||||||
//TODO: add support for std::map to serializeEnum
|
//TODO: add support for std::map to serializeEnum
|
||||||
|
@@ -145,7 +145,7 @@ public:
|
|||||||
const CTownInfo & getPlayerTowns() const;
|
const CTownInfo & getPlayerTowns() const;
|
||||||
const CTownInfo & getNeutralTowns() const;
|
const CTownInfo & getNeutralTowns() const;
|
||||||
std::set<FactionID> getDefaultTownTypes() const;
|
std::set<FactionID> getDefaultTownTypes() const;
|
||||||
const std::set<FactionID> & getTownTypes() const;
|
const std::set<FactionID> getTownTypes() const;
|
||||||
const std::set<FactionID> & getMonsterTypes() const;
|
const std::set<FactionID> & getMonsterTypes() const;
|
||||||
|
|
||||||
void setTownTypes(const std::set<FactionID> & value);
|
void setTownTypes(const std::set<FactionID> & value);
|
||||||
@@ -188,6 +188,7 @@ protected:
|
|||||||
bool townsAreSameType;
|
bool townsAreSameType;
|
||||||
|
|
||||||
std::set<FactionID> townTypes;
|
std::set<FactionID> townTypes;
|
||||||
|
std::set<FactionID> bannedTownTypes;
|
||||||
std::set<FactionID> monsterTypes;
|
std::set<FactionID> monsterTypes;
|
||||||
|
|
||||||
std::map<TResource, ui16> mines; //obligatory mines to spawn in this zone
|
std::map<TResource, ui16> mines; //obligatory mines to spawn in this zone
|
||||||
|
Reference in New Issue
Block a user