CvDangerPlots::IsDangerByRelationshipZero(PlayerTypes, CvPlot *)
- Defined in
- CvDangerPlots.cpp, line 399
- Class
- CvDangerPlots
- Hook name
CivHooks::CvDangerPlots_IsDangerByRelationshipZero
Hooks
static bool BeforeCvDangerPlots_IsDangerByRelationshipZero(CvDangerPlots* self, PlayerTypes ePlayer, CvPlot* pPlot, bool& result);static void AfterCvDangerPlots_IsDangerByRelationshipZero(CvDangerPlots* self, PlayerTypes ePlayer, CvPlot* pPlot, bool& result);static bool ReplaceCvDangerPlots_IsDangerByRelationshipZero(bool (*original)(CvDangerPlots*, PlayerTypes, CvPlot*), CvDangerPlots* self, PlayerTypes ePlayer, CvPlot* pPlot);CivRegisterBefore<CivHooks::CvDangerPlots_IsDangerByRelationshipZero>(host, &BeforeCvDangerPlots_IsDangerByRelationshipZero);CivRegisterAfter<CivHooks::CvDangerPlots_IsDangerByRelationshipZero>(host, &AfterCvDangerPlots_IsDangerByRelationshipZero);CivRegisterReplace<CivHooks::CvDangerPlots_IsDangerByRelationshipZero>(host, &ReplaceCvDangerPlots_IsDangerByRelationshipZero);
Code
397// Returns true if the relationship of the danger plots owner and the input player and plot owner398// would result in a 0 danger. This helps avoid costly path finder calls if the end result will be 0.399bool CvDangerPlots::IsDangerByRelationshipZero(PlayerTypes ePlayer, CvPlot* pPlot)400{401 CvAssertMsg(pPlot, "No plot passed in?");402 bool bIgnoreInFriendlyTerritory = false;403404 // Full value if a player we're at war with405 if(GET_TEAM(GET_PLAYER(m_ePlayer).getTeam()).isAtWar(GET_PLAYER(ePlayer).getTeam()))406 {407 return false;408 }409410 // if it's a human player, ignore neutral units411 if(GET_PLAYER(m_ePlayer).isHuman())412 {413 return true;414 }415416 bool bResultMultiplierIsZero = false;417 if(GET_PLAYER(m_ePlayer).isMinorCiv()) // if the evaluator is a minor civ418 {419 if(!GET_TEAM(GET_PLAYER(m_ePlayer).getTeam()).isAtWar(GET_PLAYER(ePlayer).getTeam())) // and they're not at war with the other player420 {421 bIgnoreInFriendlyTerritory = true; // ignore friendly territory422 }423 }424 else if(!GET_PLAYER(ePlayer).isMinorCiv())425 {426 // should we be using bHideTrueFeelings?427 switch(GET_PLAYER(m_ePlayer).GetDiplomacyAI()->GetMajorCivApproach(ePlayer, /*bHideTrueFeelings*/ false))428 {429 case MAJOR_CIV_APPROACH_WAR:430 bResultMultiplierIsZero = m_fMajorWarMod == 0.f;431 break;432 case MAJOR_CIV_APPROACH_HOSTILE:433 bResultMultiplierIsZero = m_fMajorHostileMod == 0.f;434 bIgnoreInFriendlyTerritory = true;435 break;436 case MAJOR_CIV_APPROACH_DECEPTIVE:437 bResultMultiplierIsZero = m_fMajorDeceptiveMod == 0.f;438 bIgnoreInFriendlyTerritory = true;439 break;440 case MAJOR_CIV_APPROACH_GUARDED:441 bResultMultiplierIsZero = m_fMajorGuardedMod == 0.f;442 bIgnoreInFriendlyTerritory = true;443 break;444 case MAJOR_CIV_APPROACH_AFRAID:445 bResultMultiplierIsZero = m_fMajorAfraidMod == 0.f;446 bIgnoreInFriendlyTerritory = true;447 break;448 case MAJOR_CIV_APPROACH_FRIENDLY:449 bResultMultiplierIsZero = m_fMajorFriendlyMod == 0.f;450 bIgnoreInFriendlyTerritory = true;451 break;452 case MAJOR_CIV_APPROACH_NEUTRAL:453 bResultMultiplierIsZero = m_fMajorNeutralMod == 0.f;454 bIgnoreInFriendlyTerritory = true;455 break;456 }457 }458 else459 {460 switch(GET_PLAYER(m_ePlayer).GetDiplomacyAI()->GetMinorCivApproach(ePlayer))461 {462 case MINOR_CIV_APPROACH_IGNORE:463 bResultMultiplierIsZero = m_fMinorNeutralrMod == 0.f;464 bIgnoreInFriendlyTerritory = true;465 break;466 case MINOR_CIV_APPROACH_FRIENDLY:467 bResultMultiplierIsZero = m_fMinorFriendlyMod == 0.f;468 bIgnoreInFriendlyTerritory = true;469 break;470 case MINOR_CIV_APPROACH_BULLY:471 bResultMultiplierIsZero = (m_fMinorBullyMod == 0.f);472 break;473 case MINOR_CIV_APPROACH_CONQUEST:474 bResultMultiplierIsZero = m_fMinorConquestMod == 0.f;475 break;476 }477 }478479 // if the plot is in our own territory and, with the current approach, we should ignore danger values in our own territory480 // zero out the value481 if(pPlot && pPlot->getOwner() == m_ePlayer && bIgnoreInFriendlyTerritory)482 {483 return true;484 }485486 return bResultMultiplierIsZero;487}
Calls
- CvDiplomacyAI::GetMajorCivApproach(PlayerTypes, bool) const
- CvDiplomacyAI::GetMinorCivApproach(PlayerTypes) const
- CvPlayer::GetDiplomacyAI() const
- CvPlayer::getTeam() const
- CvPlayer::isHuman() const
- CvPlayer::isMinorCiv() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlot::getOwner() const
- CvTeam::getTeam(TeamTypes)
- CvTeam::isAtWar(TeamTypes) const