本文整理汇总了C#中Direction.IsValid方法的典型用法代码示例。如果您正苦于以下问题:C# Direction.IsValid方法的具体用法?C# Direction.IsValid怎么用?C# Direction.IsValid使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Direction
的用法示例。
在下文中一共展示了Direction.IsValid方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AdjustMoveDir
/// <summary>
/// For PlanarUpDown directions, return Direction.None if the direction cannot be entered,
/// or the direction, adjusted by slopes (i.e. or'ed with Up or Down)
/// </summary>
public static Direction AdjustMoveDir(this IEnvironmentObject env, IntVector3 location, Direction dir)
{
Debug.Assert(dir.IsValid());
Debug.Assert(dir != Direction.None);
Debug.Assert(dir.IsPlanarUpDown());
if (EnvironmentExtensions.CanMoveFromTo(env, location, dir))
return dir;
if (dir == Direction.Up || dir == Direction.Down)
return Direction.None;
if (EnvironmentExtensions.CanMoveFromTo(env, location, dir | Direction.Up))
return dir | Direction.Up;
if (EnvironmentExtensions.CanMoveFromTo(env, location, dir | Direction.Down))
return dir | Direction.Down;
return Direction.None;
}
示例2: CanMoveFrom
/// <summary>
/// Determine if a living can move from srcLoc to dir, without considering the destination
/// </summary>
public static bool CanMoveFrom(this IEnvironmentObject env, IntVector3 srcLoc, Direction dir)
{
Debug.Assert(dir.IsValid());
if (env.Contains(srcLoc) == false)
return false;
var td = env.GetTileData(srcLoc);
if (td.IsUndefined)
return false;
// Perhaps this check is not needed
if (td.IsWalkable == false)
return false;
if (dir.IsPlanar())
return true;
if (dir == Direction.Up)
return td.ID == TileID.Stairs;
if (dir == Direction.Down)
return true;
if (dir.ContainsDown())
{
return true;
}
if (dir.ContainsUp() && env.Size.Depth > srcLoc.Z + 1)
{
if (env.GetTileData(srcLoc.Up).IsEmpty == false)
return false;
return true;
}
return false;
}
示例3: CanMoveFrom
/// <summary>
/// Determine if a living can move from srcLoc to dir, without considering the destination
/// </summary>
public static bool CanMoveFrom(IEnvironmentObject env, IntPoint3 srcLoc, Direction dir)
{
Debug.Assert(dir.IsValid());
if (env.Contains(srcLoc) == false)
return false;
var td = env.GetTileData(srcLoc);
if (td.IsUndefined)
return false;
var srcTerrain = Terrains.GetTerrain(td.TerrainID);
var srcInter = Interiors.GetInterior(td.InteriorID);
var itemBlocks = (td.Flags & TileFlags.ItemBlocks) != 0;
if (srcInter.IsBlocker || srcTerrain.IsBlocker || itemBlocks)
return false;
if (dir.IsPlanar())
return true;
if (dir == Direction.Up)
return srcInter.ID == InteriorID.Stairs;
if (dir == Direction.Down)
return srcTerrain.ID == TerrainID.StairsDown;
if (dir.ContainsDown())
{
return true;
}
if (dir.ContainsUp())
{
if (!srcTerrain.ID.IsSlope())
return false;
if (env.GetTerrainID(srcLoc + Direction.Up) != TerrainID.Empty)
return false;
return true;
}
return false;
}