/// <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"); } }
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); }
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); }
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; }
/// <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"); } }
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"); } }
/// <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(); } }
/// <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; }
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; }