本文整理汇总了C#中Pawn.EscapeProbability方法的典型用法代码示例。如果您正苦于以下问题:C# Pawn.EscapeProbability方法的具体用法?C# Pawn.EscapeProbability怎么用?C# Pawn.EscapeProbability使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Pawn
的用法示例。
在下文中一共展示了Pawn.EscapeProbability方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ShouldStartEscaping
private bool ShouldStartEscaping( Pawn pawn )
{
if(
( !pawn.guest.IsPrisoner )||
( pawn.guest.HostFaction != Faction.OfPlayer )||
( pawn.guest.PrisonerIsSecure )
)
{
return false;
}
// Compare pawn mood to visibility to colonists and cameras
var breakOdds = pawn.EscapeProbability();
if( pawn.needs.mood.CurLevel > breakOdds )
{ // Pawn is happy enough not to chance it
return false;
}
var room = pawn.GetRoom();
if( room.TouchesMapEdge )
{ // Pawn is outside
return true;
}
// Try to find an exit path
var root = room.Regions[ 0 ];
var exitFound = false;
RegionTraverser.BreadthFirstTraverse(
root,
(from,to) =>
{
if( to.portal == null )
{
return true;
}
return (
( to.portal.FreePassage )||
( to.portal.PawnCanOpen( pawn) )
);
},
(reg) =>
{
if( !reg.Room.TouchesMapEdge )
{
return false;
}
exitFound = true;
return true;
},
MaxRegionsToCheckWhenEscapingThroughOpenDoors
);
return exitFound;
}