Exemplo n.º 1
0
        private bool UpdateGameObjects()
        {
            spawnManager.Update();
            if (isMarioTransition[GameUtilities.Player1])
            {
                MarioTransitionUpdate(GameUtilities.Player1);
                return(false);
            }
            if (isMarioTransition[GameUtilities.Player2])
            {
                MarioTransitionUpdate(GameUtilities.Player2);
                return(false);
            }
            for (int i = 0; i < animationList.Count; i++)
            {
                animationList[i].Update();
            }
            foreach (IGameObject obj in backgroundList)
            {
                if (IsInViewBackground(obj))
                {
                    obj.Update();
                }
            }
            foreach (IGameObject obj in blockList)
            {
                if (IsInView(obj))
                {
                    obj.Update();
                }
            }

            Collection <IGameObject> tempEnemyList = new Collection <IGameObject>();

            foreach (IEnemy obj in enemyList)
            {
                if (IsInView(obj) || obj.CanUpdate || !obj.Alive)
                {
                    obj.Update();
                }
                if (IsAboveSeaLevel(obj))
                {
                    tempEnemyList.Add(obj);
                }
            }
            enemyList = tempEnemyList;

            foreach (IGameObject obj in itemList)
            {
                obj.Update();
            }
            foreach (IGameObject obj in pipeList)
            {
                if (IsInView(obj))
                {
                    obj.Update();
                }
            }
            foreach (ISpawner obj in spawnerList)
            {
                if (GameUtilities.Game.State.Type == GameStates.Competitive && IsInView(obj))
                {
                    obj.Update();
                }
            }

            Collection <IGameObject> tempFireBallList = new Collection <IGameObject>();

            foreach (IGameObject obj in fireBallList)
            {
                obj.Update();
                FireBallProjectile fireBall = (FireBallProjectile)obj;
                if (!fireBall.Used)
                {
                    tempFireBallList.Add(obj);
                }
            }
            fireBallList = tempFireBallList;

            tempFireBallList = new Collection <IGameObject>();
            foreach (IGameObject obj in fireBallList2)
            {
                obj.Update();
                FireBallProjectile fireBall = (FireBallProjectile)obj;
                if (!fireBall.Used)
                {
                    tempFireBallList.Add(obj);
                }
            }
            fireBallList2 = tempFireBallList;

            marios[GameUtilities.Player1].Update();
            marios[GameUtilities.Player1].IsInAir = true;

            if (marios[GameUtilities.Player2] != null)
            {
                marios[GameUtilities.Player2].Update();
                marios[GameUtilities.Player2].IsInAir = true;
            }

            HandleCollisions();
            if (isSinglePlayerGame)
            {
                CheckAndStartSinglePlayerEndGame();
            }

            return(true);
        }