public void Update(char input) { if (input == ' ') { TryChangeColor(); return; } var direction = GetDirectionFromInput(input); if (direction == MoveDirection.Undefined) { return; } var destinationTile = GetDestinationTileFromDirection(_player.TileItsOn, direction); if (destinationTile == null) { return; } var boxOnDestinationTile = _boxManager.GetBoxForTile(destinationTile); if (IsValidDestination(direction, destinationTile, boxOnDestinationTile)) { MoveTo(destinationTile); } }