Bazaar developer reference

CvLeagueAI::CanCommitVote(PlayerTypes, CvString *)

Defined in
CvVotingClasses.cpp, line 7803
Class
CvLeagueAI
Hook name
CivHooks::CvLeagueAI_CanCommitVote

Hooks

static bool BeforeCvLeagueAI_CanCommitVote(CvLeagueAI* self, PlayerTypes eToPlayer, CvString* sTooltipSink, bool& result);static void AfterCvLeagueAI_CanCommitVote(CvLeagueAI* self, PlayerTypes eToPlayer, CvString* sTooltipSink, bool& result);static bool ReplaceCvLeagueAI_CanCommitVote(bool (*original)(CvLeagueAI*, PlayerTypes, CvString*), CvLeagueAI* self, PlayerTypes eToPlayer, CvString* sTooltipSink);CivRegisterBefore<CivHooks::CvLeagueAI_CanCommitVote>(host, &BeforeCvLeagueAI_CanCommitVote);CivRegisterAfter<CivHooks::CvLeagueAI_CanCommitVote>(host, &AfterCvLeagueAI_CanCommitVote);CivRegisterReplace<CivHooks::CvLeagueAI_CanCommitVote>(host, &ReplaceCvLeagueAI_CanCommitVote);

Code

7802// Can someone secure our vote on a certain matter through a deal?7803bool CvLeagueAI::CanCommitVote(PlayerTypes eToPlayer, CvString* sTooltipSink)7804{7805	CvAssertMsg(eToPlayer >= 0, "eToPlayer is expected to be non-negative (invalid Index). Please send Anton your save file and version.");7806	CvAssertMsg(eToPlayer < MAX_MAJOR_CIVS, "eToPlayer is expected to be within maximum bounds (invalid Index). Please send Anton your save file and version.");7807	if (eToPlayer < 0 || eToPlayer >= MAX_MAJOR_CIVS) return false;78087809	bool bCanCommit = true;7810	7811	CvLeague* pLeague = GC.getGame().GetGameLeagues()->GetActiveLeague();7812	if (pLeague == NULL)7813	{7814		bCanCommit = false;7815		if (sTooltipSink != NULL)7816			(*sTooltipSink) += Localization::Lookup("TXT_KEY_DIPLO_VOTE_TRADE_NO_LEAGUE").toUTF8();7817	}7818	else7819	{7820		// League is in session7821		if (pLeague->IsInSession())7822		{7823			bCanCommit = false;7824			if (sTooltipSink != NULL)7825			{7826				(*sTooltipSink) += Localization::Lookup("TXT_KEY_DIPLO_VOTE_TRADE_IN_SESSION").toUTF8();7827			}7828		}78297830		// They don't have a diplomat in our capital7831		if (!DEBUG_LEAGUES)7832		{7833			if (!GetPlayer()->GetEspionage()->IsOtherDiplomatVisitingMe(eToPlayer))7834			{7835				bCanCommit = false;7836				if (sTooltipSink != NULL)7837				{7838					if (GC.getGame().getActivePlayer() == GetPlayer()->GetID())7839					{7840						(*sTooltipSink) += Localization::Lookup("TXT_KEY_DIPLO_VOTE_TRADE_NO_SPY_ACTIVE_PLAYER").toUTF8();7841					}7842					else7843					{7844						(*sTooltipSink) += Localization::Lookup("TXT_KEY_DIPLO_VOTE_TRADE_NO_SPY").toUTF8();7845					}7846				}7847			}7848		}78497850		// Not a member7851		if (!pLeague->IsMember(GetPlayer()->GetID()))7852		{7853			bCanCommit = false;7854			if (sTooltipSink != NULL)7855				(*sTooltipSink) += Localization::Lookup("TXT_KEY_DIPLO_VOTE_TRADE_NOT_MEMBER").toUTF8();7856		}78577858		// Not allowed to vote7859		if (!pLeague->CanEverVote(GetPlayer()->GetID()))7860		{7861			bCanCommit = false;7862		}78637864		// No proposals made yet7865		if (!pLeague->IsAnythingProposed())7866		{7867			bCanCommit = false;7868			if (sTooltipSink != NULL)7869				(*sTooltipSink) += Localization::Lookup("TXT_KEY_DIPLO_VOTE_TRADE_NO_PROPOSALS").toUTF8();7870		}78717872		// We already committed our votes7873		if (HasVoteCommitment())7874		{7875			bCanCommit = false;7876			if (sTooltipSink != NULL)7877				(*sTooltipSink) += Localization::Lookup("TXT_KEY_DIPLO_VOTE_TRADE_ALREADY_COMMITTED").toUTF8();7878		}78797880		// The league is in session, and we already used our votes7881		if (pLeague->IsInSession() && pLeague->GetRemainingVotesForMember(GetPlayer()->GetID()) < pLeague->GetCoreVotesForMember(GetPlayer()->GetID()))7882		{7883			bCanCommit = false;7884			if (sTooltipSink != NULL)7885				(*sTooltipSink) += Localization::Lookup("TXT_KEY_DIPLO_VOTE_TRADE_ALREADY_USED_VOTES").toUTF8();7886		}7887	}78887889	return bCanCommit;7890}

Calls

Called by