public PlayerControl(Player player, int gameWidth) : base(player) { _gameWidth = gameWidth; InitializeComponent(); player.Location.PropertyChanged += Location_PropertyChanged; _lastLocation = player.Location.Clone(); }
public CollisionEvent HandeInput(Vector direction) { foreach (var raindrop in _raindrops) { _gameController.Move(new MoveCommand(raindrop, Vector.Down)); } var collisionEvent = _gameController.Move(new MoveCommand(_player, direction)); return(collisionEvent); }
public void AddRaindrop() { var gameSize = new Vector(GameWidth, GameHeight); var startLocation = Raindrop.GetValidStartLocation(gameSize, RandomNumberGenerator.Instance); var raindrop = new Raindrop(startLocation); while (_gameController.TryAdd(raindrop) != null) { //A collision occured. Try add it somewhere new startLocation = Raindrop.GetValidStartLocation(gameSize, RandomNumberGenerator.Instance); raindrop = new Raindrop(startLocation); } _raindrops.Add(raindrop); GameObjects.Add(new RaindropControl(raindrop)); }
private void Location_PropertyChanged(object sender, PropertyChangedEventArgs e) { var newLocation = (Vector)sender; var direction = (newLocation - _lastLocation).X; if (OnOppositeSides(newLocation, _lastLocation)) { FacingRight = direction <= 0; } else { FacingRight = direction >= 0; } GridWitchScaleX.ScaleX = FacingRight ? 1 : -1; _lastLocation = newLocation.Clone(); }
private bool OnOppositeSides(Vector vector1, Vector vector2) { return((vector1.X == 0 && vector2.X == _gameWidth - 1) || (vector2.X == 0 && vector1.X == _gameWidth - 1)); }