public override void Step() { switch (_keyEvent?.Invoke()) { case Action.LeftMove: FakeShift(NextPosition, -1, 0); if (!NextPosition.Overlaps(_game.Borders)) { Move(); } break; case Action.RightMove: FakeShift(NextPosition, 1, 0); if (!NextPosition.Overlaps(_game.Borders)) { Move(); } break; case Action.UpMove: FakeShift(NextPosition, 0, -1); if (!NextPosition.Overlaps(_game.Borders)) { Move(); } break; case Action.DownMove: FakeShift(NextPosition, 0, 1); if (!NextPosition.Overlaps(_game.Borders)) { Move(); } break; case Action.Shooting: _game.AddObject(SpaceObject.ShotLeft); //_game.AddObject(SpaceObject.ShotRight); break; case Action.NoAction: break; default: break; } NextPosition.Clear(); }
public override void Step() { //Y -= _step; foreach (var item in Position) { int y = item.Y; NextPosition.Add(new Coordinate(item.X, y - _step)); } Position.Clear(); Position.UnionWith(NextPosition); NextPosition.Clear(); }