Bazaar developer reference

CvDiplomacyRequests::ActivateNext()

Defined in
CvDiplomacyRequests.cpp, line 274
Class
CvDiplomacyRequests
Hook name
CivHooks::CvDiplomacyRequests_ActivateNext

Hooks

static bool BeforeCvDiplomacyRequests_ActivateNext(CvDiplomacyRequests* self);static void AfterCvDiplomacyRequests_ActivateNext(CvDiplomacyRequests* self);static void ReplaceCvDiplomacyRequests_ActivateNext(void (*original)(CvDiplomacyRequests*), CvDiplomacyRequests* self);CivRegisterBefore<CivHooks::CvDiplomacyRequests_ActivateNext>(host, &BeforeCvDiplomacyRequests_ActivateNext);CivRegisterAfter<CivHooks::CvDiplomacyRequests_ActivateNext>(host, &AfterCvDiplomacyRequests_ActivateNext);CivRegisterReplace<CivHooks::CvDiplomacyRequests_ActivateNext>(host, &ReplaceCvDiplomacyRequests_ActivateNext);

Code

274void CvDiplomacyRequests::ActivateNext()275{276	if (HasActiveRequest())277		return;278279	if (m_bRequestActiveFromPlayer == NO_PLAYER)280		return;281282	CvAssert(GC.getGame().getActivePlayer() == m_ePlayer);283	CvAssert(GET_PLAYER(m_ePlayer).isTurnActive());284285	RequestList::iterator requestIter;286	for (requestIter = m_aRequests.begin(); requestIter != m_aRequests.end(); ++requestIter)287	{288		if (requestIter->m_eFromPlayer == m_bRequestActiveFromPlayer)289			goto foundRequest;290	}291292	// no request found293	m_bRequestActiveFromPlayer = NO_PLAYER;294	return;295296foundRequest:297	static CvDeal kDeal;298	PlayerTypes eFrom = requestIter->m_eFromPlayer;299	300	// we remove the first proposed deal and use it as the scratch deal ...301	if (!(CvPreGame::isHuman(m_ePlayer) && CvPreGame::isHuman(eFrom)))302	{303		// ... but only for AI to human requests304		if (!GC.getGame().GetGameDeals()->RemoveProposedDeal(eFrom, m_ePlayer, &kDeal, false))305		{306			kDeal.ClearItems();307		}308	}309310	auto_ptr<ICvDeal1> pDeal = GC.WrapDealPointer(&kDeal);311	DLLUI->SetScratchDeal(pDeal.get());312313	if (requestIter->m_iLookupIndex >= 0)314	{315		// we had a notification: Cancel it316		GET_PLAYER(m_ePlayer).GetNotifications()->Dismiss(requestIter->m_iLookupIndex, false);317	}318319	//	Send the request320	m_bRequestActive = true;321	DiploUIStateTypes eDiploType = requestIter->m_eDiploType;322	if (GET_PLAYER(requestIter->m_eFromPlayer).isHuman())323	{324		// disable leader root for human players (meeting, denouncing etc...)325		eDiploType = DIPLO_UI_STATE_BLANK_DISCUSSION;326	}327	m_bRequestActiveFromPlayer = eFrom;328	gDLL->GameplayDiplomacyAILeaderMessage(eFrom, eDiploType, requestIter->m_strMessage, requestIter->m_eAnimationType, requestIter->m_iExtraGameData);329	m_aRequests.erase(requestIter);330	//GC.GetEngineUserInterface()->setDirty(GameData_DIRTY_BIT, true);331}

Calls

Called by