private void GameLoop(float frameTimeInSeconds) { // UPDATE GRAPHICS background.NextFrameUpdate(); background.BlinkingActivity(frameTimeInSeconds); // UPDATE SPRITES // update space background // update player player.RocketLaunchingActivity(frameTimeInSeconds); // update rockets for (int i = 0; i < playersRocketList.Count; i++) { playersRocketList[i].NextFrameUpdate(); } for (int i = 0; i < alienInvadersRocketList.Count; i++) { alienInvadersRocketList[i].NextFrameUpdate(); } // it's important that hive is updated before the invaders, because positions of dormant invaders depend on the hive alienHive.NextFrameUpdate(); for (int i = 0; i < alienHive.AlienInvadersList.Count; i++) { if (alienHive.AlienInvadersList[i].Position.Y < 0) { //alienHive.AlienInvadersList[i].Position = new CCPoint(alienHive.AlienInvadersList[i].Position.X, this.ContentSize.Height); alienHive.AlienInvadersList[i].SetBehaviorReturnToHive(this.ContentSize.Height); } alienHive.AlienInvadersList[i].NextFrameUpdate(); alienHive.AlienInvadersList[i].RocketLaunchingActivity(frameTimeInSeconds); } // HANDLE COLLISIONS for (int i = 0; i < playersRocketList.Count; i++) { RocketVsScreenTopCollisionHandler(i); } for (int i = 0; i < playersRocketList.Count; i++) { RocketVsAlienInvaderCollisionHandler(i); } if (!playerTakesNoDamage) { for (int i = 0; i < alienInvadersRocketList.Count; i++) { PlayerVsAliensRocketCollisionHandler(i); } for (int i = 0; i < alienHive.AlienInvadersList.Count; i++) { PlayerVsAlienInvaderCollisionHandler(i); } } if (alienAttackMillis > GameParameters.INTERVAL_BETWEEN_ALIEN_INVADER_ATTACKS_MS) { alienAttackMillis = 0; alienHive.LaunchAlienAttack(); } else { alienAttackMillis += 20000; } }