当前位置: 首页>>代码示例>>C#>>正文


C# Direction.IsValid方法代码示例

本文整理汇总了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;
        }
开发者ID:tomba,项目名称:dwarrowdelf,代码行数:24,代码来源:EnvironmentExtensions.cs

示例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;
        }
开发者ID:tomba,项目名称:dwarrowdelf,代码行数:43,代码来源:EnvironmentExtensions.cs

示例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;
        }
开发者ID:Fulborg,项目名称:dwarrowdelf,代码行数:49,代码来源:EnvironmentHelpers.cs


注:本文中的Direction.IsValid方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。