private void Walk(BaseEnemy enemy, BaseVerticalShooter.GameModel.IBaseMap gameMap, TimeSpan t) { var candidateWindowPosition = enemy.OnWindowPosition + enemy.Direction * (float)t.TotalSeconds * enemy.PixelsPerSec; var mapCollisionType = enemy.CheckMapCollision(gameMap, candidateWindowPosition); if (mapCollisionType != CollisionType.Blocked) { enemy.OnWindowPosition = candidateWindowPosition; } else { Vector2 newDirection = enemy.Direction; newDirection = GetDirectionAfterCollision(enemy); enemy.Direction = newDirection; } }