Hooks
static bool BeforeCvLeague_DoProposeEnact(CvLeague* self, ResolutionTypes eResolution, PlayerTypes eProposer, int iChoice);static void AfterCvLeague_DoProposeEnact(CvLeague* self, ResolutionTypes eResolution, PlayerTypes eProposer, int iChoice);static void ReplaceCvLeague_DoProposeEnact(void (*original)(CvLeague*, ResolutionTypes, PlayerTypes, int), CvLeague* self, ResolutionTypes eResolution, PlayerTypes eProposer, int iChoice);CivRegisterBefore<CivHooks::CvLeague_DoProposeEnact>(host, &BeforeCvLeague_DoProposeEnact);CivRegisterAfter<CivHooks::CvLeague_DoProposeEnact>(host, &AfterCvLeague_DoProposeEnact);CivRegisterReplace<CivHooks::CvLeague_DoProposeEnact>(host, &ReplaceCvLeague_DoProposeEnact);
Code
2282void CvLeague::DoProposeEnact(ResolutionTypes eResolution, PlayerTypes eProposer, int iChoice)2283{2284 if (!CanProposeEnact(eResolution, eProposer, iChoice))2285 {2286 CvAssertMsg(false, "Attempt to propose enact resolution when not allowed to. Please send Anton your save file and version.");2287 return;2288 }22892290 if (eProposer != NO_PLAYER)2291 {2292 // Decrement remaining proposals2293 if (IsMember(eProposer))2294 {2295 GetMember(eProposer)->iProposals = GetMember(eProposer)->iProposals - 1;2296 CvAssertMsg(GetMember(eProposer)->iProposals >= 0, "Attempt to propose enact resolution when not allowed to. Please send Anton your save file and version.");2297 }2298 else2299 {2300 CvAssertMsg(false, "Attempt to propose enact resolution when not allowed to. Please send Anton your save file and version.");2301 }23022303 // Proposals made by players could affect Diplomacy AI2304 LeagueHelpers::PlayerList vLikers = GetMembersThatLikeProposal(eResolution, eProposer, iChoice);2305 for (LeagueHelpers::PlayerList::iterator it = vLikers.begin(); it != vLikers.end(); ++it)2306 {2307 CvAssert((*it) != NO_PLAYER);2308 CvAssert(CanEverVote(*it));2309 GET_PLAYER(*it).GetDiplomacyAI()->SetTurnsSinceWeLikedTheirProposal(eProposer, 0);2310 }2311 LeagueHelpers::PlayerList vDislikers = GetMembersThatDislikeProposal(eResolution, eProposer, iChoice);2312 for (LeagueHelpers::PlayerList::iterator it = vDislikers.begin(); it != vDislikers.end(); ++it)2313 {2314 CvAssert((*it) != NO_PLAYER);2315 CvAssert(CanEverVote(*it));2316 GET_PLAYER(*it).GetDiplomacyAI()->SetTurnsSinceWeDislikedTheirProposal(eProposer, 0);2317 }2318 }2319 2320 CvEnactProposal proposal(GC.getGame().GetGameLeagues()->GenerateResolutionUniqueID(), eResolution, GetID(), eProposer, iChoice);2321 m_vEnactProposals.push_back(proposal);2322 GC.GetEngineUserInterface()->setDirty(LeagueScreen_DIRTY_BIT, true);2323}