1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-12-01 23:12:49 +02:00

Fix build

This commit is contained in:
Ivan Savenko
2023-10-15 21:59:16 +03:00
parent e10de0594e
commit 0ea44520fd
4 changed files with 17 additions and 15 deletions

View File

@@ -95,6 +95,12 @@ namespace JsonRandom
return loadVariable(IdentifierType::entityType(), value.String(), variables, IdentifierType::NONE);
}
template<>
PlayerColor decodeKey(const JsonNode & value, const Variables & variables)
{
return PlayerColor(*VLC->identifiers()->getIdentifier("playerColor", value));
}
template<>
PrimarySkill decodeKey(const JsonNode & value, const Variables & variables)
{
@@ -414,23 +420,19 @@ namespace JsonRandom
return ret;
}
std::vector<PlayerColor> loadColors(const JsonNode & value, CRandomGenerator & rng)
std::vector<PlayerColor> loadColors(const JsonNode & value, CRandomGenerator & rng, const Variables & variables)
{
std::vector<PlayerColor> ret;
std::set<std::string> def;
for(auto & color : GameConstants::PLAYER_COLOR_NAMES)
def.insert(color);
std::set<PlayerColor> defaultPlayers;
for(size_t i = 0; i < PlayerColor::PLAYER_LIMIT_I; ++i)
defaultPlayers.insert(PlayerColor(i));
for(auto & entry : value.Vector())
{
auto key = loadKey(entry, rng, def);
auto pos = vstd::find_pos(GameConstants::PLAYER_COLOR_NAMES, key);
if(pos < 0)
logMod->warn("Unable to determine player color %s", key);
else
ret.emplace_back(pos);
std::set<PlayerColor> potentialPicks = filterKeys(entry, defaultPlayers, variables);
ret.push_back(*RandomGeneratorUtil::nextItem(potentialPicks, rng));
}
return ret;
}