1
0
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:
Tomasz Zieliński
2023-07-02 11:41:47 +02:00
parent cb4d818241
commit 73b78dd75e
2 changed files with 13 additions and 3 deletions

View File

@@ -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

View File

@@ -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