public Train(float x, float y, Rotation rotation, float speed = 0.05f) : base(x, y) { Direction = rotation; From = RailUtils.OppositeRotation(rotation); Rotate = RailUtils.RotationToAngle(Direction); this.speed = speed; this.radialSpeed = 90 * speed; }
/// <summary> /// Gets the directions for the trains current location in the grid /// </summary> /// <param name="train">The train that you would like to check its directions for</param> /// <returns>An array with Rotation values that indicate where the train can go. Empty array if not successfull</returns> public static Rotation[] GetDirections(Train train) { Point location = train.Location; GridObject go = _grid[location]; if (go == null) { return(new Rotation[0]); } IRail rail = go as IRail; if (rail == null) { return(new Rotation[0]); } return(RailUtils.RailDirectionToRotation(rail.RailDirection, RailUtils.OppositeRotation(train.Direction))); }