Bazaar developer reference

CvPlot::changeInvisibleVisibilityCount(TeamTypes, InvisibleTypes, int)

Defined in
CvPlot.cpp, line 10094
Class
CvPlot
Hook name
CivHooks::CvPlot_changeInvisibleVisibilityCount

Hooks

static bool BeforeCvPlot_changeInvisibleVisibilityCount(CvPlot* self, TeamTypes eTeam, InvisibleTypes eInvisible, int iChange);static void AfterCvPlot_changeInvisibleVisibilityCount(CvPlot* self, TeamTypes eTeam, InvisibleTypes eInvisible, int iChange);static void ReplaceCvPlot_changeInvisibleVisibilityCount(void (*original)(CvPlot*, TeamTypes, InvisibleTypes, int), CvPlot* self, TeamTypes eTeam, InvisibleTypes eInvisible, int iChange);CivRegisterBefore<CivHooks::CvPlot_changeInvisibleVisibilityCount>(host, &BeforeCvPlot_changeInvisibleVisibilityCount);CivRegisterAfter<CivHooks::CvPlot_changeInvisibleVisibilityCount>(host, &AfterCvPlot_changeInvisibleVisibilityCount);CivRegisterReplace<CivHooks::CvPlot_changeInvisibleVisibilityCount>(host, &ReplaceCvPlot_changeInvisibleVisibilityCount);

Code

10094void CvPlot::changeInvisibleVisibilityCount(TeamTypes eTeam, InvisibleTypes eInvisible, int iChange)10095{10096	bool bOldInvisibleVisible;10097	bool bNewInvisibleVisible;10098	const int iNumInvisibleInfos = NUM_INVISIBLE_TYPES;10099	DEBUG_VARIABLE(iNumInvisibleInfos);1010010101	CvAssertMsg(eTeam >= 0, "eTeam is expected to be non-negative (invalid Index)");10102	CvAssertMsg(eTeam < MAX_TEAMS, "eTeam is expected to be within maximum bounds (invalid Index)");10103	CvAssertMsg(eInvisible >= 0, "eInvisible is expected to be non-negative (invalid Index)");10104	CvAssertMsg(eInvisible < iNumInvisibleInfos, "eInvisible is expected to be within maximum bounds (invalid Index)");10105	if(eTeam < 0 || eTeam >= MAX_TEAMS) return;10106	if(eInvisible < 0 || eInvisible >= NUM_INVISIBLE_TYPES) return;1010710108	if(iChange != 0)10109	{10110		bOldInvisibleVisible = isInvisibleVisible(eTeam, eInvisible);1011110112		m_apaiInvisibleVisibilityCount[eTeam][eInvisible] = (m_apaiInvisibleVisibilityCount[eTeam][eInvisible] + iChange);1011310114		CvAssertFmt(m_apaiInvisibleVisibilityCount[eTeam][eInvisible] >= 0, "Invisible Visibility going negative for %d, %d", m_iX, m_iY);1011510116		bNewInvisibleVisible = isInvisibleVisible(eTeam, eInvisible);1011710118		if(bOldInvisibleVisible != bNewInvisibleVisible)10119		{10120			TeamTypes activeTeam = GC.getGame().getActiveTeam();10121			if(eTeam == activeTeam)10122			{10123				// for all (nominally invisible) units in this plot10124				// tell the engine to flip whether they are being drawn or not10125				IDInfo* pUnitNode;10126				CvUnit* pLoopUnit = NULL;10127				pUnitNode = headUnitNode();10128				while(pUnitNode != NULL)10129				{10130					pLoopUnit = GetPlayerUnit(*pUnitNode);10131					pUnitNode = nextUnitNode(pUnitNode);1013210133					if(NULL != pLoopUnit && pLoopUnit->getTeam() != activeTeam && pLoopUnit->getInvisibleType() == eInvisible)10134					{10135						auto_ptr<ICvUnit1> pDllUnit(new CvDllUnit(pLoopUnit));10136						gDLL->GameplayUnitVisibility(pDllUnit.get(), bNewInvisibleVisible, true);10137					}10138				}1013910140				updateCenterUnit();1014110142			}10143		}10144	}10145}

Calls

Called by