Bazaar developer reference

CvLeague::DoProposeRepeal(int, PlayerTypes)

Defined in
CvVotingClasses.cpp, line 2325
Class
CvLeague
Hook name
CivHooks::CvLeague_DoProposeRepeal

Hooks

static bool BeforeCvLeague_DoProposeRepeal(CvLeague* self, int iResolutionID, PlayerTypes eProposer);static void AfterCvLeague_DoProposeRepeal(CvLeague* self, int iResolutionID, PlayerTypes eProposer);static void ReplaceCvLeague_DoProposeRepeal(void (*original)(CvLeague*, int, PlayerTypes), CvLeague* self, int iResolutionID, PlayerTypes eProposer);CivRegisterBefore<CivHooks::CvLeague_DoProposeRepeal>(host, &BeforeCvLeague_DoProposeRepeal);CivRegisterAfter<CivHooks::CvLeague_DoProposeRepeal>(host, &AfterCvLeague_DoProposeRepeal);CivRegisterReplace<CivHooks::CvLeague_DoProposeRepeal>(host, &ReplaceCvLeague_DoProposeRepeal);

Code

2325void CvLeague::DoProposeRepeal(int iResolutionID, PlayerTypes eProposer)2326{2327	if (!CanProposeRepeal(iResolutionID, eProposer))2328	{2329		CvAssertMsg(false, "Attempt to propose repeal resolution when not allowed to. Please send Anton your save file and version.");2330		return;2331	}2332	2333	int iFound = 0;2334	for (ActiveResolutionList::iterator it = m_vActiveResolutions.begin(); it != m_vActiveResolutions.end(); it++)2335	{2336		if (it->GetID() == iResolutionID)2337		{2338			if (eProposer != NO_PLAYER)2339			{2340				// Decrement remaining proposals2341				if (IsMember(eProposer))2342				{2343					GetMember(eProposer)->iProposals = GetMember(eProposer)->iProposals - 1;2344					CvAssertMsg(GetMember(eProposer)->iProposals >= 0, "Attempt to propose enact resolution when not allowed to. Please send Anton your save file and version.");2345				}2346				else2347				{2348					CvAssertMsg(false, "Attempt to propose enact resolution when not allowed to. Please send Anton your save file and version.");2349				}23502351				// Proposals made by players could affect Diplomacy AI2352				LeagueHelpers::PlayerList vLikers = GetMembersThatLikeProposal(iResolutionID, eProposer);2353				for (LeagueHelpers::PlayerList::iterator innerIt = vLikers.begin(); innerIt != vLikers.end(); ++innerIt)2354				{2355					CvAssert((*innerIt) != NO_PLAYER);2356					CvAssert(CanEverVote(*innerIt));2357					GET_PLAYER(*innerIt).GetDiplomacyAI()->SetTurnsSinceWeLikedTheirProposal(eProposer, 0);2358				}2359				LeagueHelpers::PlayerList vDislikers = GetMembersThatDislikeProposal(iResolutionID, eProposer);2360				for (LeagueHelpers::PlayerList::iterator innerIt = vDislikers.begin(); innerIt != vDislikers.end(); ++innerIt)2361				{2362					CvAssert((*innerIt) != NO_PLAYER);2363					CvAssert(CanEverVote(*innerIt));2364					GET_PLAYER(*innerIt).GetDiplomacyAI()->SetTurnsSinceWeDislikedTheirProposal(eProposer, 0);2365				}2366			}23672368			CvRepealProposal proposal(it, eProposer);2369			m_vRepealProposals.push_back(proposal);2370			iFound++;23712372#if !defined(NO_ACHIEVEMENTS)2373			// XP2 Achievement2374			if (!GC.getGame().isGameMultiPlayer())2375			{2376				PlayerTypes eOriginalProposer = it->GetProposerDecision()->GetProposer();2377				if (eOriginalProposer != NO_PLAYER && eOriginalProposer == eProposer)2378				{2379					if (GET_PLAYER(eProposer).isHuman() && GET_PLAYER(eProposer).isLocalPlayer())2380					{2381						gDLL->UnlockAchievement(ACHIEVEMENT_XP2_42);2382					}2383				}2384			}2385#endif2386		}23872388	}2389	CvAssertMsg(iFound == 1, "Unexpected number of active resolutions with this ID. Please send Anton your save file and version.");2390	GC.GetEngineUserInterface()->setDirty(LeagueScreen_DIRTY_BIT, true);2391}

Calls

Called by