public SwitchMode Compare(Vector target) { if (target.Y < Position.Y) return SwitchMode.Up; else if (target.Y > Position.Y) return SwitchMode.Down; else throw new ArgumentException("Invalid target {target}."); }
public EndTrack(Vector position, Direction direction) : base(position, direction) { }
public StartTrack(Vector position, Direction direction) : base(position, direction) { }
public BaseTrack[] GetTracksFacing(Vector position, params Direction[] directions) { var results = new List<BaseTrack>(); Vector pos; BaseTrack target; foreach (var direction in directions) { if (direction == Direction.None) continue; pos = position.Facing(direction); target = GetTrackAt(pos); if (target == null) continue; results.Add(target); } return results.ToArray(); }
public SwitchTrack(Vector position, Direction direction, ConsoleKey key) : base(position, direction) { _key = key; _mode = SwitchMode.Down; }
public BaseTrack GetTrackAt(Vector position) { foreach (var track in _tracks) if (track.Position.Equals(position)) return track; return null; }
public BaseTrack(Vector position, Direction direction) { _position = position; _direction = direction; }
public DefaultTrack(Vector position, Direction direction) : base(position, direction) { }
public SwitchOutTrack(Vector position, Direction direction, ConsoleKey key) : base(position, direction, key) { }
public bool Equals(Vector other) { return (X == other.X) && (Y == other.Y); }