Пример #1
0
        /// <summary>
        /// Enter at TileEnterDirection.Left -> yields VehicleDirection12.UpLeftUp,
        /// VehicleDirection12.HorizontalRight,
        /// VehicleDirection12.DownLeftDown
        /// </summary>
        /// <param name="enter_at"></param>
        /// <returns></returns>
        public static IEnumerable <VehicleDirection12> PossibleNewRails(TileEnterDirection enter_at)
        {
            switch (enter_at)
            {
            case TileEnterDirection.Left:
                yield return(VehicleDirection12.UpLeftUp);

                yield return(VehicleDirection12.HorizontalRight);

                yield return(VehicleDirection12.DownLeftDown);

                break;

            case TileEnterDirection.Down:
                yield return(VehicleDirection12.DownLeftLeft);

                yield return(VehicleDirection12.VerticalUp);

                yield return(VehicleDirection12.DownRightRight);

                break;

            case TileEnterDirection.Up:
                yield return(VehicleDirection12.UpLeftLeft);

                yield return(VehicleDirection12.VerticalDown);

                yield return(VehicleDirection12.UpRightRight);

                break;

            case TileEnterDirection.Right:
                yield return(VehicleDirection12.UpRightUp);

                yield return(VehicleDirection12.HorizontalLeft);

                yield return(VehicleDirection12.DownRightDown);

                break;

            default:
                throw new ArgumentOutOfRangeException("enter_at");
            }
        }
Пример #2
0
        UpDown GetUpDownMove(Vector3 railblock, TileEnterDirection dir)
        {
            if (!MapUtil.IsValidPos(d_Map, (int)railblock.X, (int)railblock.Y, (int)railblock.Z))
            {
                return(UpDown.None);
            }
            //going up
            RailSlope slope = d_RailMapUtil.GetRailSlope((int)railblock.X, (int)railblock.Y, (int)railblock.Z);

            if (slope == RailSlope.TwoDownRaised && dir == TileEnterDirection.Up)
            {
                return(UpDown.Up);
            }
            if (slope == RailSlope.TwoUpRaised && dir == TileEnterDirection.Down)
            {
                return(UpDown.Up);
            }
            if (slope == RailSlope.TwoLeftRaised && dir == TileEnterDirection.Right)
            {
                return(UpDown.Up);
            }
            if (slope == RailSlope.TwoRightRaised && dir == TileEnterDirection.Left)
            {
                return(UpDown.Up);
            }
            //going down
            if (slope == RailSlope.TwoDownRaised && dir == TileEnterDirection.Down)
            {
                return(UpDown.Down);
            }
            if (slope == RailSlope.TwoUpRaised && dir == TileEnterDirection.Up)
            {
                return(UpDown.Down);
            }
            if (slope == RailSlope.TwoLeftRaised && dir == TileEnterDirection.Left)
            {
                return(UpDown.Down);
            }
            if (slope == RailSlope.TwoRightRaised && dir == TileEnterDirection.Right)
            {
                return(UpDown.Down);
            }
            return(UpDown.None);
        }
Пример #3
0
    internal int GetUpDownMove(Game game, int railblockX, int railblockY, int railblockZ, TileEnterDirection dir)
    {
        if (!game.map.IsValidPos(railblockX, railblockY, railblockZ))
        {
            return(UpDown.None);
        }
        //going up
        RailSlope slope = d_RailMapUtil.GetRailSlope(railblockX, railblockY, railblockZ);

        if (slope == RailSlope.TwoDownRaised && dir == TileEnterDirection.Up)
        {
            return(UpDown.Up);
        }
        if (slope == RailSlope.TwoUpRaised && dir == TileEnterDirection.Down)
        {
            return(UpDown.Up);
        }
        if (slope == RailSlope.TwoLeftRaised && dir == TileEnterDirection.Right)
        {
            return(UpDown.Up);
        }
        if (slope == RailSlope.TwoRightRaised && dir == TileEnterDirection.Left)
        {
            return(UpDown.Up);
        }
        //going down
        if (slope == RailSlope.TwoDownRaised && dir == TileEnterDirection.Down)
        {
            return(UpDown.Down);
        }
        if (slope == RailSlope.TwoUpRaised && dir == TileEnterDirection.Up)
        {
            return(UpDown.Down);
        }
        if (slope == RailSlope.TwoLeftRaised && dir == TileEnterDirection.Left)
        {
            return(UpDown.Down);
        }
        if (slope == RailSlope.TwoRightRaised && dir == TileEnterDirection.Right)
        {
            return(UpDown.Down);
        }
        return(UpDown.None);
    }
Пример #4
0
 internal int GetUpDownMove(Game game, int railblockX, int railblockY, int railblockZ, TileEnterDirection dir)
 {
     if (!game.map.IsValidPos(railblockX, railblockY, railblockZ))
     {
         return UpDown.None;
     }
     //going up
     RailSlope slope = d_RailMapUtil.GetRailSlope(railblockX, railblockY, railblockZ);
     if (slope == RailSlope.TwoDownRaised && dir == TileEnterDirection.Up)
     {
         return UpDown.Up;
     }
     if (slope == RailSlope.TwoUpRaised && dir == TileEnterDirection.Down)
     {
         return UpDown.Up;
     }
     if (slope == RailSlope.TwoLeftRaised && dir == TileEnterDirection.Right)
     {
         return UpDown.Up;
     }
     if (slope == RailSlope.TwoRightRaised && dir == TileEnterDirection.Left)
     {
         return UpDown.Up;
     }
     //going down
     if (slope == RailSlope.TwoDownRaised && dir == TileEnterDirection.Down)
     {
         return UpDown.Down;
     }
     if (slope == RailSlope.TwoUpRaised && dir == TileEnterDirection.Up)
     {
         return UpDown.Down;
     }
     if (slope == RailSlope.TwoLeftRaised && dir == TileEnterDirection.Left)
     {
         return UpDown.Down;
     }
     if (slope == RailSlope.TwoRightRaised && dir == TileEnterDirection.Right)
     {
         return UpDown.Down;
     }
     return UpDown.None;
 }
Пример #5
0
 /// <summary>
 /// Enter at TileEnterDirection.Left -> yields VehicleDirection12.UpLeftUp,
 /// VehicleDirection12.HorizontalRight,
 /// VehicleDirection12.DownLeftDown
 /// </summary>
 /// <param name="enter_at"></param>
 /// <returns></returns>
 public static IEnumerable<VehicleDirection12> PossibleNewRails(TileEnterDirection enter_at)
 {
     switch (enter_at)
     {
         case TileEnterDirection.Left:
             yield return VehicleDirection12.UpLeftUp;
             yield return VehicleDirection12.HorizontalRight;
             yield return VehicleDirection12.DownLeftDown;
             break;
         case TileEnterDirection.Down:
             yield return VehicleDirection12.DownLeftLeft;
             yield return VehicleDirection12.VerticalUp;
             yield return VehicleDirection12.DownRightRight;
             break;
         case TileEnterDirection.Up:
             yield return VehicleDirection12.UpLeftLeft;
             yield return VehicleDirection12.VerticalDown;
             yield return VehicleDirection12.UpRightRight;
             break;
         case TileEnterDirection.Right:
             yield return VehicleDirection12.UpRightUp;
             yield return VehicleDirection12.HorizontalLeft;
             yield return VehicleDirection12.DownRightDown;
             break;
         default:
             throw new ArgumentOutOfRangeException("enter_at");
     }
 }
Пример #6
0
 public static TileExitDirection BackExit(TileEnterDirection direction)
 {
     switch (direction)
     {
         case TileEnterDirection.Down:
             return TileExitDirection.Up;
         case TileEnterDirection.Up:
             return TileExitDirection.Down;
         case TileEnterDirection.Left:
             return TileExitDirection.Right;
         case TileEnterDirection.Right:
             return TileExitDirection.Left;
         default:
             throw new ArgumentException("direction");
     }
 }
Пример #7
0
 /// <summary>
 /// TileEnterDirection.Left -> TileEnterDirection.Right
 /// </summary>
 /// <param name="direction"></param>
 /// <returns></returns>
 public static TileEnterDirection BackEnter(TileEnterDirection direction)
 {
     switch (direction)
     {
         case TileEnterDirection.Down:
             return TileEnterDirection.Up;
         case TileEnterDirection.Left:
             return TileEnterDirection.Right;
         case TileEnterDirection.Right:
             return TileEnterDirection.Left;
         case TileEnterDirection.Up:
             return TileEnterDirection.Down;
         default:
             throw new Exception();
     }
 }
Пример #8
0
 /// <summary>
 /// Enter at TileEnterDirection.Left -> yields VehicleDirection12.UpLeftUp,
 /// VehicleDirection12.HorizontalRight,
 /// VehicleDirection12.DownLeftDown
 /// </summary>
 /// <param name="enter_at"></param>
 /// <returns></returns>
 public static VehicleDirection12[] PossibleNewRails3(TileEnterDirection enter_at)
 {
     VehicleDirection12[] ret = new VehicleDirection12[3];
     switch (enter_at)
     {
         case TileEnterDirection.Left:
             ret[0] = VehicleDirection12.UpLeftUp;
             ret[1] = VehicleDirection12.HorizontalRight;
             ret[2] = VehicleDirection12.DownLeftDown;
             break;
         case TileEnterDirection.Down:
             ret[0] = VehicleDirection12.DownLeftLeft;
             ret[1] = VehicleDirection12.VerticalUp;
             ret[2] = VehicleDirection12.DownRightRight;
             break;
         case TileEnterDirection.Up:
             ret[0] = VehicleDirection12.UpLeftLeft;
             ret[1] = VehicleDirection12.VerticalDown;
             ret[2] = VehicleDirection12.UpRightRight;
             break;
         case TileEnterDirection.Right:
             ret[0] = VehicleDirection12.UpRightUp;
             ret[1] = VehicleDirection12.HorizontalLeft;
             ret[2] = VehicleDirection12.DownRightDown;
             break;
         default:
             return null;
     }
     return ret;
 }
Пример #9
0
 UpDown GetUpDownMove(Vector3 railblock, TileEnterDirection dir)
 {
     if (!MapUtil.IsValidPos(d_Map, (int)railblock.X, (int)railblock.Y, (int)railblock.Z))
     {
         return UpDown.None;
     }
     //going up
     RailSlope slope = d_RailMapUtil.GetRailSlope((int)railblock.X, (int)railblock.Y, (int)railblock.Z);
     if (slope == RailSlope.TwoDownRaised && dir == TileEnterDirection.Up)
     {
         return UpDown.Up;
     }
     if (slope == RailSlope.TwoUpRaised && dir == TileEnterDirection.Down)
     {
         return UpDown.Up;
     }
     if (slope == RailSlope.TwoLeftRaised && dir == TileEnterDirection.Right)
     {
         return UpDown.Up;
     }
     if (slope == RailSlope.TwoRightRaised && dir == TileEnterDirection.Left)
     {
         return UpDown.Up;
     }
     //going down
     if (slope == RailSlope.TwoDownRaised && dir == TileEnterDirection.Down)
     {
         return UpDown.Down;
     }
     if (slope == RailSlope.TwoUpRaised && dir == TileEnterDirection.Up)
     {
         return UpDown.Down;
     }
     if (slope == RailSlope.TwoLeftRaised && dir == TileEnterDirection.Left)
     {
         return UpDown.Down;
     }
     if (slope == RailSlope.TwoRightRaised && dir == TileEnterDirection.Right)
     {
         return UpDown.Down;
     }
     return UpDown.None;
 }