private void SpawnAliens() { const int buffer = 100; var minLeft = Camera.Main.AbsoluteLeftXEdgeAt(0) + buffer; var(rowCount, columnCount) = GetAlienCounts(); for (var row = 0; row < rowCount; row++) { for (var column = 0; column < columnCount; column++) { var alien = new Alien { X = (column * (100 + 15)) + minLeft, Y = AlienStartY - (row * (39 + 15)) }; AlienList.Add(alien); } } CollisionManager.Self.CreateRelationship(AlienList, RightGuardRail) .CollisionOccurred = (x, y) => HandleAlienGuideRailCollison(true); CollisionManager.Self.CreateRelationship(AlienList, LeftGuardRail) .CollisionOccurred = (x, y) => HandleAlienGuideRailCollison(false); }
void CustomActivity(bool firstTimeCalled) { if (!IsInGame) { return; } PlayerShipInstance.Y = PlayerYPosition; PlayerShipInstance.X = GuiManager.Cursor.WorldXAt(0); PlayerShipInstance.EnsureStillOnScreen(); foreach (var bullet in BulletList) { if (!bullet.IsInView()) { bullet.Destroy(); } } if (!AlienList.Any()) { TriggerWinCondition(); return; } if (GuiManager.Cursor.PrimaryClick) { var bullet = BulletFactory.CreateNew(); bullet.X = PlayerShipInstance.X; bullet.Y = PlayerShipInstance.Y; bullet.Z = PlayerShipInstance.Z - 1; bullet.YVelocity = BulletSpeed; CollisionManager.Self.CreateRelationship(bullet, AlienList) .CollisionOccurred = (bullet1, alien) => { bullet.Destroy(); alien.Destroy(); }; } }