Hooks
static bool BeforeCvLeague_GetMemberVoteOpinionDetails(CvLeague* self, PlayerTypes eMember, PlayerTypes eObserver, CvString& result);static void AfterCvLeague_GetMemberVoteOpinionDetails(CvLeague* self, PlayerTypes eMember, PlayerTypes eObserver, CvString& result);static CvString ReplaceCvLeague_GetMemberVoteOpinionDetails(CvString (*original)(CvLeague*, PlayerTypes, PlayerTypes), CvLeague* self, PlayerTypes eMember, PlayerTypes eObserver);CivRegisterBefore<CivHooks::CvLeague_GetMemberVoteOpinionDetails>(host, &BeforeCvLeague_GetMemberVoteOpinionDetails);CivRegisterAfter<CivHooks::CvLeague_GetMemberVoteOpinionDetails>(host, &AfterCvLeague_GetMemberVoteOpinionDetails);CivRegisterReplace<CivHooks::CvLeague_GetMemberVoteOpinionDetails>(host, &ReplaceCvLeague_GetMemberVoteOpinionDetails);
Code
4571CvString CvLeague::GetMemberVoteOpinionDetails(PlayerTypes eMember, PlayerTypes eObserver)4572{4573 if (!IsMember(eMember) || !IsMember(eObserver))4574 {4575 CvAssertMsg(false, "Attempting to get detail string for a player that is not a league member. Please send Anton your save file and version.");4576 return "";4577 }45784579 CvString s = "";4580 if (!GetEnactProposals().empty() || !GetRepealProposals().empty())4581 {4582 // Vote Leanings4583 if (eMember != eObserver)4584 {4585 s += Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_MEMBER_OPINIONS_VOTES").toUTF8();4586 for (EnactProposalList::iterator it = m_vEnactProposals.begin(); it != m_vEnactProposals.end(); ++it)4587 {4588 GET_PLAYER(eMember).GetLeagueAI()->EvaluateVoteForOtherPlayerKnowledge(this, eObserver, it, &s);4589 }4590 for (RepealProposalList::iterator it = m_vRepealProposals.begin(); it != m_vRepealProposals.end(); ++it)4591 {4592 GET_PLAYER(eMember).GetLeagueAI()->EvaluateVoteForOtherPlayerKnowledge(this, eObserver, it, &s);4593 }4594 }4595 4596 // Vote Commitments4597 if (GET_PLAYER(eMember).GetLeagueAI()->HasVoteCommitment())4598 {4599 for (EnactProposalList::iterator it = m_vEnactProposals.begin(); it != m_vEnactProposals.end(); ++it)4600 {4601 std::vector<int> vChoices = GetChoicesForDecision(it->GetVoterDecision()->GetType(), NO_PLAYER);4602 for (uint i = 0; i < vChoices.size(); i++)4603 {4604 int iNumVotes = 0;4605 if (eMember != eObserver)4606 {4607 iNumVotes += GET_PLAYER(eMember).GetLeagueAI()->GetVoteCommitment(eObserver, it->GetID(), vChoices[i], /*bEnact*/ true);4608 }4609 else4610 {4611 for (int iPlayerLoop = 0; iPlayerLoop < MAX_MAJOR_CIVS; iPlayerLoop++)4612 {4613 iNumVotes += GET_PLAYER(eMember).GetLeagueAI()->GetVoteCommitment((PlayerTypes)iPlayerLoop, it->GetID(), vChoices[i], /*bEnact*/ true);4614 }4615 }4616 if (iNumVotes > 0)4617 {4618 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_MEMBER_OPINIONS_VOTE_COMMITMENT");4619 sTemp << it->GetProposalName() << LeagueHelpers::GetTextForChoice(it->GetVoterDecision()->GetType(), vChoices[i]) << iNumVotes;4620 s += sTemp.toUTF8();4621 }4622 }4623 }4624 for (RepealProposalList::iterator it = m_vRepealProposals.begin(); it != m_vRepealProposals.end(); ++it)4625 {4626 std::vector<int> vChoices = GetChoicesForDecision(it->GetRepealDecision()->GetType(), NO_PLAYER);4627 for (uint i = 0; i < vChoices.size(); i++)4628 {4629 int iNumVotes = 0;4630 if (eMember != eObserver)4631 {4632 iNumVotes += GET_PLAYER(eMember).GetLeagueAI()->GetVoteCommitment(eObserver, it->GetID(), vChoices[i], /*bEnact*/ false);4633 }4634 else4635 {4636 for (int iPlayerLoop = 0; iPlayerLoop < MAX_MAJOR_CIVS; iPlayerLoop++)4637 {4638 iNumVotes += GET_PLAYER(eMember).GetLeagueAI()->GetVoteCommitment((PlayerTypes)iPlayerLoop, it->GetID(), vChoices[i], /*bEnact*/ false);4639 }4640 }4641 if (iNumVotes > 0)4642 {4643 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_MEMBER_OPINIONS_VOTE_COMMITMENT");4644 sTemp << it->GetProposalName() << LeagueHelpers::GetTextForChoice(it->GetRepealDecision()->GetType(), vChoices[i]) << iNumVotes;4645 s += sTemp.toUTF8();4646 }4647 }4648 }4649 }4650 }46514652 return s;4653}