public bool OnSensorCollision(Fixture f1, Fixture f2, Contact contact) { EnemyEntity enemy = f2.Body.UserData as EnemyEntity; if (enemy != null) { enemy.DoDamage(30); } return(true); }
public void SpawnEnemyRandomly() { _rand = new Random(_gameScreen.CurrentGameTime.TotalGameTime.Seconds); // // pick a corner // int cornerIdx = _rand.Next(0, 3); // int nextCornerIdx = ((cornerIdx + 1) > 3) ? 0 : (cornerIdx + 1); // // dodgy hack .. fix this later // Vertices newCorners = new Vertices(4); // newCorners.Add(_gameScreen.Corners[1]); // newCorners.Add(_gameScreen.Corners[2]); // newCorners.Add(_gameScreen.Corners[3]); // newCorners.Add(_gameScreen.Corners[0]); float rCoef = (float)_rand.NextDouble(); // Vector2 corner = newCorners[cornerIdx]; // Vector2 nextCorner = newCorners[nextCornerIdx]; // Vector2 side = rCoef * (nextCorner - corner); // Vector2 spawnPoint = corner + side; Vector2 top = new Vector2(_gameScreen.Player.Position.X + _gameScreen.ScreenSizeDefault.X, 0.0f); Vector2 bottom = new Vector2(_gameScreen.Player.Position.X + _gameScreen.ScreenSizeDefault.X, _gameScreen.ScreenSizeDefault.Y); Vector2 topRight = _gameScreen.Corners[1]; Vector2 mid = rCoef * (bottom - top); Vector2 spawnPoint = top + mid; //const float buffer = 20f; //spawnPoint.X += ((top.X - buffer) < 0) ? buffer : -buffer; //spawnPoint.Y += ((top.Y - buffer) < 0) ? buffer : -buffer; // if spawn point is too close to player, try again .. if (Vector2.Distance(_gameScreen.Player.Position, spawnPoint) < _minDistFromPlayer) { SpawnEnemyRandomly(); return; } else { EnemyEntity enemy = new EnemyEntity(_gameScreen, _clip, spawnPoint); enemy.AttackPlayerWeight = 1f; _gameScreen.AddEnemy(enemy); } }
public void DestroyEnemy(EnemyEntity enemy) { enemy.IsValid = false; QueuedForDisposal.Add(enemy); }
public void AddEnemy(EnemyEntity enemy) { enemy.IsValid = true; ActiveEntities.Add(enemy); Enemies.Add(enemy); }