void GameEvent::Apply(PlayerInfo &player) { // Serialize the current reputation with other governments. player.SetReputationConditions(); // Apply this event's ConditionSet to the player's conditions. conditionsToApply.Apply(player.Conditions()); // Apply (and store a record of applying) this event's other general // changes (e.g. updating an outfitter's inventory). player.AddChanges(changes); // Update the current reputation with other governments (e.g. this // event's ConditionSet may have altered some reputations). player.CheckReputationConditions(); for(const System *system : systemsToUnvisit) player.Unvisit(system); for(const Planet *planet : planetsToUnvisit) player.Unvisit(planet); // Perform visits after unvisits, as "unvisit <system>" // will unvisit any planets in that system. for(const System *system : systemsToVisit) player.Visit(system); for(const Planet *planet : planetsToVisit) player.Visit(planet); }
void GameEvent::Apply(PlayerInfo &player) { for(const auto &it : GameData::Governments()) { int rep = it.second.Reputation(); player.Conditions()["reputation: " + it.first] = rep; } conditionsToApply.Apply(player.Conditions()); player.AddChanges(changes); for(const auto &it : GameData::Governments()) { int rep = it.second.Reputation(); int newRep = player.Conditions()["reputation: " + it.first]; if(rep != newRep) it.second.AddReputation(newRep - rep); } for(const System *system : systemsToUnvisit) player.Unvisit(system); }