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; } } }