Bazaar developer reference

CvLeagueAI::GetDesiredVoteCommitments(PlayerTypes)

Defined in
CvVotingClasses.cpp, line 7626
Class
CvLeagueAI
Hook name
CivHooks::CvLeagueAI_GetDesiredVoteCommitments

Hooks

static bool BeforeCvLeagueAI_GetDesiredVoteCommitments(CvLeagueAI* self, PlayerTypes eFromPlayer, CvLeagueAI::VoteCommitmentList& result);static void AfterCvLeagueAI_GetDesiredVoteCommitments(CvLeagueAI* self, PlayerTypes eFromPlayer, CvLeagueAI::VoteCommitmentList& result);static CvLeagueAI::VoteCommitmentList ReplaceCvLeagueAI_GetDesiredVoteCommitments(CvLeagueAI::VoteCommitmentList (*original)(CvLeagueAI*, PlayerTypes), CvLeagueAI* self, PlayerTypes eFromPlayer);CivRegisterBefore<CivHooks::CvLeagueAI_GetDesiredVoteCommitments>(host, &BeforeCvLeagueAI_GetDesiredVoteCommitments);CivRegisterAfter<CivHooks::CvLeagueAI_GetDesiredVoteCommitments>(host, &AfterCvLeagueAI_GetDesiredVoteCommitments);CivRegisterReplace<CivHooks::CvLeagueAI_GetDesiredVoteCommitments>(host, &ReplaceCvLeagueAI_GetDesiredVoteCommitments);

Code

7626CvLeagueAI::VoteCommitmentList CvLeagueAI::GetDesiredVoteCommitments(PlayerTypes eFromPlayer)7627{7628	VoteCommitmentList vDesired;76297630	if (GC.getGame().GetGameLeagues()->GetNumActiveLeagues() > 0)7631	{7632		CvLeague* pLeague = GC.getGame().GetGameLeagues()->GetActiveLeague();7633		if (pLeague)7634		{7635			// For human players, make assumptions7636			if (GetPlayer()->isHuman())7637			{7638				EnactProposalList vEnactProposals = pLeague->GetEnactProposals();7639				for (EnactProposalList::iterator it = vEnactProposals.begin(); it != vEnactProposals.end(); ++it)7640				{7641					int iDesiredChoice = LeagueHelpers::CHOICE_NONE;76427643					// Normal Proposals7644					if (it->GetVoterDecision()->GetType() == RESOLUTION_DECISION_YES_OR_NO)7645					{7646						if (it->GetProposalPlayer() == GetPlayer()->GetID())7647						{7648							iDesiredChoice = LeagueHelpers::CHOICE_YES;7649						}7650						if (it->GetEffects()->bEmbargoPlayer && it->GetProposerDecision()->GetDecision() == GetPlayer()->GetID())7651						{7652							iDesiredChoice = LeagueHelpers::CHOICE_NO;7653						}7654					}7655					// Proposals voting on a player7656					else if (it->GetVoterDecision()->GetType() == RESOLUTION_DECISION_ANY_MEMBER ||7657							it->GetVoterDecision()->GetType() == RESOLUTION_DECISION_MAJOR_CIV_MEMBER ||7658							it->GetVoterDecision()->GetType() == RESOLUTION_DECISION_OTHER_MAJOR_CIV_MEMBER)7659					{7660						if (it->GetEffects()->bChangeLeagueHost)7661						{7662							iDesiredChoice = GetPlayer()->GetID();7663						}7664						if (it->GetEffects()->bDiplomaticVictory)7665						{7666							iDesiredChoice = GetPlayer()->GetID();7667						}7668					}7669					else7670					{7671						CvAssertMsg(false, "Unexpected case when evaluating a possible Delegate trade with a human player. Please send Anton your save file and version.");7672					}76737674					if (iDesiredChoice != LeagueHelpers::CHOICE_NONE)7675					{7676						VoteCommitment temp;7677						temp.iResolutionID = it->GetID();7678						temp.iNumVotes = pLeague->GetCoreVotesForMember(eFromPlayer);7679						temp.iVoteChoice = iDesiredChoice;7680						temp.bEnact = true;7681						vDesired.push_back(temp);7682					}7683				}76847685				RepealProposalList vRepealProposals = pLeague->GetRepealProposals();7686				for (RepealProposalList::iterator it = vRepealProposals.begin(); it != vRepealProposals.end(); ++it)7687				{7688					int iDesiredChoice = LeagueHelpers::CHOICE_NONE;76897690					// Normal Proposals7691					if (it->GetRepealDecision()->GetType() == RESOLUTION_DECISION_REPEAL)7692					{7693						if (it->GetProposalPlayer() == GetPlayer()->GetID())7694						{7695							iDesiredChoice = LeagueHelpers::CHOICE_YES;7696						}7697						if (it->GetEffects()->bEmbargoPlayer && it->GetProposerDecision()->GetDecision() == GetPlayer()->GetID())7698						{7699							iDesiredChoice = LeagueHelpers::CHOICE_YES;7700						}7701					}7702					else7703					{7704						CvAssertMsg(false, "Unexpected case when evaluating a possible Delegate trade with a human player. Please send Anton your save file and version.");7705					}77067707					if (iDesiredChoice != LeagueHelpers::CHOICE_NONE)7708					{7709						VoteCommitment temp;7710						temp.iResolutionID = it->GetID();7711						temp.iNumVotes = pLeague->GetCoreVotesForMember(eFromPlayer);7712						temp.iVoteChoice = iDesiredChoice;7713						temp.bEnact = false;7714						vDesired.push_back(temp);7715					}7716				}7717			}7718			// For AI players, use calculated value7719			else7720			{7721				EnactProposalList vEnactProposals = pLeague->GetEnactProposals();7722				for (EnactProposalList::iterator it = vEnactProposals.begin(); it != vEnactProposals.end(); ++it)7723				{7724					std::vector<int> vChoices = pLeague->GetChoicesForDecision(it->GetVoterDecision()->GetType(), eFromPlayer);7725					int iDesiredChoice = LeagueHelpers::CHOICE_NONE;7726					DesireLevels eHighestDesire = DESIRE_NEUTRAL;7727					for (uint i = 0; i < vChoices.size(); i++)7728					{7729						int iChoice = vChoices[i];7730						DesireLevels eDesire = EvaluateVoteForTrade(it->GetID(), iChoice, pLeague->GetCoreVotesForMember(eFromPlayer), /*bRepeal*/false);7731						if (eDesire > eHighestDesire)7732						{7733							iDesiredChoice = iChoice;7734							eHighestDesire = eDesire;7735						}7736					}77377738					if (iDesiredChoice != LeagueHelpers::CHOICE_NONE)7739					{7740						VoteCommitment temp;7741						temp.iResolutionID = it->GetID();7742						temp.iNumVotes = pLeague->GetCoreVotesForMember(eFromPlayer);7743						temp.iVoteChoice = iDesiredChoice;7744						temp.bEnact = true;7745						vDesired.push_back(temp);7746					}7747				}77487749				RepealProposalList vRepealProposals = pLeague->GetRepealProposals();7750				for (RepealProposalList::iterator it = vRepealProposals.begin(); it != vRepealProposals.end(); ++it)7751				{7752					std::vector<int> vChoices = pLeague->GetChoicesForDecision(it->GetRepealDecision()->GetType(), eFromPlayer);7753					int iDesiredChoice = LeagueHelpers::CHOICE_NONE;7754					DesireLevels eHighestDesire = DESIRE_NEUTRAL;7755					for (uint i = 0; i < vChoices.size(); i++)7756					{7757						int iChoice = vChoices[i];7758						DesireLevels eDesire = EvaluateVoteForTrade(it->GetID(), iChoice, pLeague->GetCoreVotesForMember(eFromPlayer), /*bRepeal*/true);7759						if (eDesire > eHighestDesire)7760						{7761							iDesiredChoice = iChoice;7762							eHighestDesire = eDesire;7763						}7764					}77657766					if (iDesiredChoice != LeagueHelpers::CHOICE_NONE)7767					{7768						VoteCommitment temp;7769						temp.iResolutionID = it->GetID();7770						temp.iNumVotes = pLeague->GetCoreVotesForMember(eFromPlayer);7771						temp.iVoteChoice = iDesiredChoice;7772						temp.bEnact = false;7773						vDesired.push_back(temp);7774					}7775				}7776			}7777		}7778	}77797780	return vDesired;7781}

Calls

Called by