Ejemplo n.º 1
0
        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;
            }
        }