Bazaar developer reference

CvUnit::CanDoInterfaceMode(InterfaceModeTypes, bool)

Defined in
CvUnit.cpp, line 23308
Class
CvUnit
Hook name
CivHooks::CvUnit_CanDoInterfaceMode

Hooks

static bool BeforeCvUnit_CanDoInterfaceMode(CvUnit* self, InterfaceModeTypes eInterfaceMode, bool bTestVisibility, bool& result);static void AfterCvUnit_CanDoInterfaceMode(CvUnit* self, InterfaceModeTypes eInterfaceMode, bool bTestVisibility, bool& result);static bool ReplaceCvUnit_CanDoInterfaceMode(bool (*original)(CvUnit*, InterfaceModeTypes, bool), CvUnit* self, InterfaceModeTypes eInterfaceMode, bool bTestVisibility);CivRegisterBefore<CivHooks::CvUnit_CanDoInterfaceMode>(host, &BeforeCvUnit_CanDoInterfaceMode);CivRegisterAfter<CivHooks::CvUnit_CanDoInterfaceMode>(host, &AfterCvUnit_CanDoInterfaceMode);CivRegisterReplace<CivHooks::CvUnit_CanDoInterfaceMode>(host, &ReplaceCvUnit_CanDoInterfaceMode);

Code

23308bool CvUnit::CanDoInterfaceMode(InterfaceModeTypes eInterfaceMode, bool bTestVisibility)23309{23310	VALIDATE_OBJECT23311	CvAssertMsg(eInterfaceMode != NO_INTERFACEMODE, "InterfaceMode is not assigned a valid value");2331223313	if(IsBusy())23314	{23315		return false;23316	}2331723318	switch(eInterfaceMode)23319	{23320	case INTERFACEMODE_MOVE_TO:23321		if((getDomainType() != DOMAIN_AIR) && (getDomainType() != DOMAIN_IMMOBILE) && (!IsImmobile()))23322		{23323			return true;23324		}23325		break;2332623327	case INTERFACEMODE_MOVE_TO_TYPE:23328		break;2332923330	case INTERFACEMODE_MOVE_TO_ALL:23331		break;2333223333	case INTERFACEMODE_ROUTE_TO:23334		if(canBuildRoute())23335		{23336			return true;23337		}23338		break;2333923340	case INTERFACEMODE_AIRLIFT:23341		if(canAirlift(plot()))23342		{23343			return true;23344		}23345		break;2334623347	case INTERFACEMODE_NUKE:23348		if(canNuke(plot()))23349		{23350			return true;23351		}23352		break;2335323354	case INTERFACEMODE_PARADROP:23355		if(canParadrop(plot(), bTestVisibility))23356		{23357			return true;23358		}23359		break;2336023361	case INTERFACEMODE_RANGE_ATTACK:23362		if(canRangeStrike() && getDomainType() != DOMAIN_AIR)23363		{23364			return true;23365		}23366		break;2336723368	case INTERFACEMODE_CITY_RANGE_ATTACK:23369		break;2337023371	case INTERFACEMODE_ATTACK:23372		if(IsCanAttackWithMove() && !isOutOfAttacks())23373		{23374			if(IsEnemyInMovementRange(false, IsCityAttackOnly()) || bTestVisibility)23375			{23376				return true;23377			}23378		}2337923380		break;2338123382	case INTERFACEMODE_AIRSTRIKE:23383		if(getDomainType() == DOMAIN_AIR)23384		{23385			if(canRangeStrike())23386			{23387				return true;23388			}23389		}23390		break;2339123392	case INTERFACEMODE_AIR_SWEEP:23393		if(getDomainType() == DOMAIN_AIR)23394		{23395			if(canAirSweep())23396			{23397				return true;23398			}23399		}23400		break;2340123402	case INTERFACEMODE_REBASE:23403		if(getDomainType() == DOMAIN_AIR)23404		{23405			return true;23406		}23407		break;2340823409	case INTERFACEMODE_EMBARK:23410		if(canEmbark(plot()))23411		{23412			return true;23413		}23414		break;2341523416	case INTERFACEMODE_DISEMBARK:23417		if(canDisembark(plot()))23418		{23419			return true;23420		}23421		break;2342223423	case INTERFACEMODE_GIFT_UNIT:23424		if(CanDistanceGift((PlayerTypes) DLLUI->GetInterfaceModeValue()))23425		{23426			return true;23427		}23428		break;2342923430	case INTERFACEMODE_ESTABLISH_TRADE_ROUTE:23431		if (canMakeTradeRoute(plot()))23432		{23433			return true;23434		}23435	}2343623437	return false;23438}

Calls

Called by