Ejemplo n.º 1
0
        public void ShowSquadLevelUpIfPending()
        {
            ScreenController screenController = Service.ScreenController;
            PerkManager      perkManager      = Service.PerkManager;
            SquadController  squadController  = Service.SquadController;
            Squad            currentSquad     = Service.SquadController.StateManager.GetCurrentSquad();
            int level = currentSquad.Level;
            int lastViewedSquadLevelUp = squadController.GetLastViewedSquadLevelUp();

            if (!perkManager.HasPlayerSeenPerkTutorial())
            {
                return;
            }
            if (level > 1 && level > lastViewedSquadLevelUp)
            {
                squadController.SetLastViewedSquadLevelUp(level);
                int num = 1;
                if (lastViewedSquadLevelUp > 0)
                {
                    num = level - lastViewedSquadLevelUp;
                }
                int sQUADPERK_MAX_SQUAD_LEVEL_CELEBRATIONS_SHOWN = GameConstants.SQUADPERK_MAX_SQUAD_LEVEL_CELEBRATIONS_SHOWN;
                if (sQUADPERK_MAX_SQUAD_LEVEL_CELEBRATIONS_SHOWN < num)
                {
                    num = sQUADPERK_MAX_SQUAD_LEVEL_CELEBRATIONS_SHOWN;
                }
                int num2 = level - num + 1;
                QueueScreenBehavior           subType            = QueueScreenBehavior.Default;
                SquadLevelUpCelebrationScreen highestLevelScreen = screenController.GetHighestLevelScreen <SquadLevelUpCelebrationScreen>();
                if (highestLevelScreen != null)
                {
                    num2    = level;
                    subType = QueueScreenBehavior.QueueAndDeferTillClosed;
                }
                for (int i = num2; i <= level; i++)
                {
                    List <PerkVO> perksUnlockedAtSquadLevel = perkManager.GetPerksUnlockedAtSquadLevel(i);
                    SquadLevelUpCelebrationScreen screen    = new SquadLevelUpCelebrationScreen(i, perksUnlockedAtSquadLevel);
                    screenController.AddScreen(screen, subType);
                    subType = QueueScreenBehavior.QueueAndDeferTillClosed;
                }
            }
        }