1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

Fix compiling

This commit is contained in:
nordsoft
2023-04-19 03:11:13 +04:00
parent f464ca3560
commit 5cf9fbbe02
2 changed files with 14 additions and 15 deletions

View File

@@ -341,14 +341,14 @@ CScenarioTravel CCampaignHandler::readScenarioTravelFromJson(JsonNode & reader)
for(auto & k : reader["keepCreatures"].Vector())
{
if(auto identifier = VLC->modh->identifiers.getIdentifier(CModHandler::scopeMap(), "creature", k.String()))
ret.monstersKeptByHero.insert(CreatureID(identifier.get()));
ret.monstersKeptByHero.insert(CreatureID(identifier.value()));
else
logGlobal->warn("VCMP Loading: keepCreatures contains unresolved identifier %s", k.String());
}
for(auto & k : reader["keepArtifacts"].Vector())
{
if(auto identifier = VLC->modh->identifiers.getIdentifier(CModHandler::scopeMap(), "artifact", k.String()))
ret.artifactsKeptByHero.insert(ArtifactID(identifier.get()));
ret.artifactsKeptByHero.insert(ArtifactID(identifier.value()));
else
logGlobal->warn("VCMP Loading: keepArtifacts contains unresolved identifier %s", k.String());
}
@@ -384,7 +384,7 @@ CScenarioTravel CCampaignHandler::readScenarioTravelFromJson(JsonNode & reader)
bonus.info1 = heroId;
else
if(auto identifier = VLC->modh->identifiers.getIdentifier(CModHandler::scopeMap(), "hero", bjson["hero"].String()))
bonus.info1 = identifier.get();
bonus.info1 = identifier.value();
else
logGlobal->warn("VCMP Loading: unresolved hero identifier %s", bjson["hero"].String());
@@ -397,14 +397,14 @@ CScenarioTravel CCampaignHandler::readScenarioTravelFromJson(JsonNode & reader)
case CScenarioTravel::STravelBonus::EBonusType::SECONDARY_SKILL:
case CScenarioTravel::STravelBonus::EBonusType::ARTIFACT:
if(auto identifier = VLC->modh->identifiers.getIdentifier(CModHandler::scopeMap(), bjson["what"].String(), bjson["type"].String()))
bonus.info2 = identifier.get();
bonus.info2 = identifier.value();
else
logGlobal->warn("VCMP Loading: unresolved %s identifier %s", bjson["what"].String(), bjson["type"].String());
break;
case CScenarioTravel::STravelBonus::EBonusType::SPELL_SCROLL:
if(auto Identifier = VLC->modh->identifiers.getIdentifier(CModHandler::scopeMap(), "spell", bjson["type"].String()))
bonus.info2 = Identifier.get();
bonus.info2 = Identifier.value();
else
logGlobal->warn("VCMP Loading: unresolved spell scroll identifier %s", bjson["type"].String());
break;
@@ -447,7 +447,7 @@ CScenarioTravel CCampaignHandler::readScenarioTravelFromJson(JsonNode & reader)
bonus.info2 = heroId;
else
if (auto identifier = VLC->modh->identifiers.getIdentifier(CModHandler::scopeMap(), "hero", bjson["hero"].String()))
bonus.info2 = identifier.get();
bonus.info2 = identifier.value();
else
logGlobal->warn("VCMP Loading: unresolved hero identifier %s", bjson["hero"].String());
@@ -544,23 +544,21 @@ CScenarioTravel CCampaignHandler::readScenarioTravelFromMemory(CBinaryReader & r
ret.whatHeroKeeps.secondarySkills = whatHeroKeeps & 4;
ret.whatHeroKeeps.spells = whatHeroKeeps & 8;
ret.whatHeroKeeps.artifacts = whatHeroKeeps & 16;
auto bitMaskToId = [&reader]<typename T>(std::set<T> & container, int size)
//TODO: replace with template lambda form C++20 and make typed containers
auto bitMaskToId = [&reader](std::set<int> & container, int size)
{
for(int iId = 0, byte = 0; iId < size * 8; ++iId)
{
if(iId % 8 == 0)
byte = reader.readUInt8();
if(byte & (1 << iId % 8))
container.insert(T(iId));
container.insert(iId);
}
};
bitMaskToId(ret.monstersKeptByHero, 19);
if(version < CampaignVersion::SoD)
bitMaskToId(ret.artifactsKeptByHero, 17);
else
bitMaskToId(ret.artifactsKeptByHero, 18);
bitMaskToId(ret.artifactsKeptByHero, version < CampaignVersion::SoD ? 17 : 18);
ret.startOptions = reader.readUInt8();