mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-24 22:14:36 +02:00
More work on static variable desyncs
This commit is contained in:
parent
3f075e391a
commit
668cd83ee5
@ -735,8 +735,12 @@ int3 CPlayerSpecificInfoCallback::getGrailPos( double *outKnownRatio )
|
||||
}
|
||||
else
|
||||
{
|
||||
*outKnownRatio = static_cast<double>(CGObelisk::visited[gs->getPlayerTeam(*player)->id])
|
||||
/ CGObelisk::obeliskCount;
|
||||
TeamID t = gs->getPlayerTeam(*player)->id;
|
||||
double visited = 0.0;
|
||||
if(CGObelisk::visited.count(t))
|
||||
visited = static_cast<double>(CGObelisk::visited[t]);
|
||||
|
||||
*outKnownRatio = visited / CGObelisk::obeliskCount;
|
||||
}
|
||||
return gs->map->grailPos;
|
||||
}
|
||||
|
@ -787,6 +787,16 @@ void CGameState::init(StartInfo * si)
|
||||
initVisitingAndGarrisonedHeroes();
|
||||
initFogOfWar();
|
||||
|
||||
// Explicitly initialize static variables
|
||||
for(auto & elem : players)
|
||||
{
|
||||
CGKeys::playerKeyMap[elem.first] = {};
|
||||
}
|
||||
for(auto & elem : teams)
|
||||
{
|
||||
CGObelisk::visited[elem.first] = 0;
|
||||
}
|
||||
|
||||
logGlobal->debug("\tChecking objectives");
|
||||
map->checkForObjectives(); //needs to be run when all objects are properly placed
|
||||
|
||||
@ -2637,7 +2647,15 @@ void CGameState::obtainPlayersStats(SThievesGuildInfo & tgi, int level)
|
||||
}
|
||||
if(level >= 3) //obelisks found
|
||||
{
|
||||
FILL_FIELD(obelisks, CGObelisk::visited[gs->getPlayerTeam(g->second.color)->id])
|
||||
auto getObeliskVisited = [](TeamID t)
|
||||
{
|
||||
if(CGObelisk::visited.count(t))
|
||||
return CGObelisk::visited[t];
|
||||
else
|
||||
return ui8(0);
|
||||
};
|
||||
|
||||
FILL_FIELD(obelisks, getObeliskVisited(gs->getPlayerTeam(g->second.color)->id))
|
||||
}
|
||||
if(level >= 4) //artifacts
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user