Пример #1
0
 public static void Init()
 {
     Plugin.ApplyHarmonyPatches();
     if (CharacteristicSelectionViewController == null)
     {
         CharacteristicSelectionViewController = Resources.FindObjectsOfTypeAll <BeatmapCharacteristicSelectionViewController>().FirstOrDefault();
         if (CharacteristicSelectionViewController == null)
         {
             Utilities.Logger.Log("Characteristic View Controller null");
             return;
         }
         CharacteristicSelectionViewController.didSelectBeatmapCharacteristicEvent += CharacteristicSelectionViewController_didSelectBeatmapCharacteristicEvent;
     }
     if (MainMenuViewController == null)
     {
         SoloFreePlayFlowCoordinator  = Resources.FindObjectsOfTypeAll <SoloFreePlayFlowCoordinator>().FirstOrDefault();
         PartyFreePlayFlowCoordinator = Resources.FindObjectsOfTypeAll <PartyFreePlayFlowCoordinator>().FirstOrDefault();
         MainMenuViewController       = Resources.FindObjectsOfTypeAll <MainMenuViewController>().FirstOrDefault();
         if (MainMenuViewController == null)
         {
             return;
         }
         MainMenuViewController.didFinishEvent += MainMenuViewController_didFinishEvent;
     }
 }
Пример #2
0
        public static void Init()
        {
            Plugin.ApplyHarmonyPatches();

            if (MainMenuViewController == null)
            {
                SoloFreePlayFlowCoordinator  = Resources.FindObjectsOfTypeAll <SoloFreePlayFlowCoordinator>().FirstOrDefault();
                PartyFreePlayFlowCoordinator = Resources.FindObjectsOfTypeAll <PartyFreePlayFlowCoordinator>().FirstOrDefault();
                MainMenuViewController       = Resources.FindObjectsOfTypeAll <MainMenuViewController>().FirstOrDefault();

                if (MainMenuViewController == null)
                {
                    return;
                }
                MainMenuViewController.didFinishEvent += MainMenuViewController_didFinishEvent;

                /*
                 * if (CharacteristicSelectionViewController == null)
                 * {
                 *  CharacteristicSelectionViewController = Resources.FindObjectsOfTypeAll<BeatmapCharacteristicSegmentedControlController>().FirstOrDefault();
                 *  if (CharacteristicSelectionViewController != null)
                 *      CharacteristicSelectionViewController.didSelectBeatmapCharacteristicEvent += CharacteristicSelectionViewController_didSelectBeatmapCharacteristicEvent;
                 * }
                 */
            }
        }
Пример #3
0
        private void PopDifficultyAndDetails()
        {
            bool isSolo = (freePlayFlowCoordinator is SoloFreePlayFlowCoordinator);

            if (isSolo)
            {
                SoloFreePlayFlowCoordinator soloCoordinator = freePlayFlowCoordinator as SoloFreePlayFlowCoordinator;
                int controllers = 0;
                if (soloCoordinator.GetPrivateField <StandardLevelDetailViewController>("_levelDetailViewController").isInViewControllerHierarchy)
                {
                    controllers++;
                }
                if (controllers > 0)
                {
                    soloCoordinator.InvokePrivateMethod("PopViewControllersFromNavigationController", new object[] { soloCoordinator.GetPrivateField <DismissableNavigationController>("_navigationController"), controllers, null, false });
                }
            }
            else
            {
                PartyFreePlayFlowCoordinator partyCoordinator = freePlayFlowCoordinator as PartyFreePlayFlowCoordinator;
                int controllers = 0;
                if (partyCoordinator.GetPrivateField <StandardLevelDetailViewController>("_levelDetailViewController").isInViewControllerHierarchy)
                {
                    controllers++;
                }
                if (controllers > 0)
                {
                    partyCoordinator.InvokePrivateMethod("PopViewControllersFromNavigationController", new object[] { partyCoordinator.GetPrivateField <DismissableNavigationController>("_navigationController"), controllers, null, false });
                }
            }
        }
 static void Postfix(ref PartyFreePlayFlowCoordinator __instance, LevelCompletionResults levelCompletionResults)
 {
     // Show end of song UI
     if (levelCompletionResults.levelEndAction == LevelCompletionResults.LevelEndAction.None)
     {
         EndLevelUiCreator.Show(__instance);
     }
 }
Пример #5
0
        private void SceneManager_activeSceneChanged(UnityEngine.SceneManagement.Scene arg0, UnityEngine.SceneManagement.Scene arg1)
        {
            if (arg1.name == "Menu")
            {
                if (_characteristicViewController == null)
                {
                    _characteristicViewController = Resources.FindObjectsOfTypeAll <BeatmapCharacteristicSelectionViewController>().FirstOrDefault();
                    if (_characteristicViewController == null)
                    {
                        return;
                    }

                    _characteristicViewController.didSelectBeatmapCharacteristicEvent += _characteristicViewController_didSelectBeatmapCharacteristicEvent;
                }

                if (_soloFlowCoordinator == null)
                {
                    _soloFlowCoordinator = Resources.FindObjectsOfTypeAll <SoloFreePlayFlowCoordinator>().FirstOrDefault();
                    if (_soloFlowCoordinator == null)
                    {
                        return;
                    }
                    _soloDetailView         = _soloFlowCoordinator.GetPrivateField <StandardLevelDetailViewController>("_levelDetailViewController");
                    _practiceViewController = _soloFlowCoordinator.GetPrivateField <PracticeViewController>("_practiceViewController");
                    if (_soloDetailView != null)
                    {
                        _soloDetailView.didPressPlayButtonEvent += _soloDetailView_didPressPlayButtonEvent;
                    }
                    else
                    {
                        Log("Detail View Null", Plugin.LogLevel.Info);
                    }
                    if (_practiceViewController != null)
                    {
                        _practiceViewController.didPressPlayButtonEvent += _practiceViewController_didPressPlayButtonEvent;
                    }
                    else
                    {
                        Log("Practice View Null", Plugin.LogLevel.Info);
                    }
                }

                if (_partyFlowCoordinator == null)
                {
                    _partyFlowCoordinator = Resources.FindObjectsOfTypeAll <PartyFreePlayFlowCoordinator>().FirstOrDefault();
                }

                if (saveRequested)
                {
                    Settings.Save();
                    saveRequested = false;
                }
            }
        }
Пример #6
0
 public MenuColorSwapper(Config.Menu menuConfig, MenuLightsManager menuLightsManager, MainFlowCoordinator mainFlowCoordinator, CampaignFlowCoordinator campaignFlowCoordinator,
                         SoloFreePlayFlowCoordinator soloFreePlayFlowCoordinator, PartyFreePlayFlowCoordinator partyFreePlayFlowCoordinator, CenterStageScreenController centerStageScreenController)
 {
     _menuConfig                   = menuConfig;
     _menuLightsManager            = menuLightsManager;
     _mainFlowCoordinator          = mainFlowCoordinator;
     _campaignFlowCoordinator      = campaignFlowCoordinator;
     _centerStageScreenController  = centerStageScreenController;
     _soloFreePlayFlowCoordinator  = soloFreePlayFlowCoordinator;
     _partyFreePlayFlowCoordinator = partyFreePlayFlowCoordinator;
 }
        public MockPartyViewController()
        {
            _partyFlowCoordinator = Resources.FindObjectsOfTypeAll <PartyFreePlayFlowCoordinator>().FirstOrDefault();
            LevelListViewController level = ReflectionUtil.GetPrivateField <LevelListViewController>(_partyFlowCoordinator, "_levelListViewController");

            detail = ReflectionUtil.GetPrivateField <StandardLevelDetailViewController>(_partyFlowCoordinator, "_levelDetailViewController");
            BeatmapDifficultyViewController beatmap = ReflectionUtil.GetPrivateField <BeatmapDifficultyViewController>(_partyFlowCoordinator, "_beatmapDifficultyViewController");

            _gameplaySetupViewController = ReflectionUtil.GetPrivateField <GameplaySetupViewController>(_partyFlowCoordinator, "_gameplaySetupViewController");

            level.didActivateEvent += (first, type) => {
                if (Data.Steam.SteamAPI.GetConnectionState() != SteamAPI.ConnectionState.CONNECTED || !_partyFlowCoordinator || !_partyFlowCoordinator.isActivated)
                {
                    return;
                }
                _partyFlowCoordinator.InvokePrivateMethod("SetRightScreenViewController", new object[] { MultiplayerLobby.Instance.rightViewController, true });
            };
            level.didSelectLevelEvent += didSelectLevel;

            beatmap.didSelectDifficultyEvent += didSelectBeatmap;
            mPlay = BeatSaberUI.CreateUIButton(detail.rectTransform, "CreditsButton", new Vector2(0f, -24f), new Vector2(40, 9f));

            mPlay.SetButtonText("Play with Lobby");
            mPlay.SetButtonTextSize(5f);
            mPlay.gameObject.SetActive(false);
            mPlay.ToggleWordWrapping(false);

            mPlay.onClick.AddListener(didSelectPlay);

            _mainMenuController = Resources.FindObjectsOfTypeAll <MainMenuViewController>().FirstOrDefault();
            Button    partyButton = ReflectionUtil.GetPrivateField <Button>(_mainMenuController, "_partyButton");
            HoverHint hint        = Resources.FindObjectsOfTypeAll <HoverHint>().Where(x => x.text == "Play with your friends locally!").First();

            _mainMenuController.didActivateEvent += (first, type) =>
            {
                if (Data.Steam.SteamAPI.GetConnectionState() != SteamAPI.ConnectionState.CONNECTED)
                {
                    partyButton.SetButtonText("Party");
                    if (hint)
                    {
                        hint.text = "Play with your friends locally!";
                    }
                }
                else
                {
                    partyButton.SetButtonText("Online Lobby");
                    if (hint)
                    {
                        hint.text = "Play with your friends in your steam lobby!";
                    }
                }
            };
        }
        public MockPartyViewController()
        {
            Instance = this;
            _partyFlowCoordinator = Resources.FindObjectsOfTypeAll <PartyFreePlayFlowCoordinator>().FirstOrDefault();
            LevelPackLevelsViewController     levels          = ReflectionUtil.GetPrivateField <LevelPackLevelsViewController>(_partyFlowCoordinator, "_levelPackLevelsViewController");
            LevelPacksViewController          levelPacks      = ReflectionUtil.GetPrivateField <LevelPacksViewController>(_partyFlowCoordinator, "_levelPacksViewController");
            LevelPackDetailViewController     levelPackDetail = ReflectionUtil.GetPrivateField <LevelPackDetailViewController>(_partyFlowCoordinator, "_levelPackDetailViewController");
            StandardLevelDetailViewController detail          = ReflectionUtil.GetPrivateField <StandardLevelDetailViewController>(_partyFlowCoordinator, "_levelDetailViewController");

            detailView = ReflectionUtil.GetPrivateField <StandardLevelDetailView>(detail, "_standardLevelDetailView");
            _gameplaySetupViewController = ReflectionUtil.GetPrivateField <GameplaySetupViewController>(_partyFlowCoordinator, "_gameplaySetupViewController");
            LocalLeaderboardViewController leaderboard = ReflectionUtil.GetPrivateField <LocalLeaderboardViewController>(_partyFlowCoordinator, "_localLeaderboardViewController");

            detail.didPresentContentEvent += (controller, type) =>
            {
                if (type == StandardLevelDetailViewController.ContentType.OwnedAndReady)
                {
                    didSelectLevel(detail.selectedDifficultyBeatmap);
                }
            };
            detail.didChangeDifficultyBeatmapEvent += didSelectDifficultyBeatmap;
            detail.didPressPlayButtonEvent         += didPressPlay;

            levelPackDetail.didActivateEvent += (firstActivation, type) => showLeaderboard();
            leaderboard.didActivateEvent     += (firstActivation, type) => showLeaderboard();

            _mainMenuController = Resources.FindObjectsOfTypeAll <MainMenuViewController>().FirstOrDefault();
            Button    partyButton = ReflectionUtil.GetPrivateField <Button>(_mainMenuController, "_partyButton");
            HoverHint hint        = Resources.FindObjectsOfTypeAll <HoverHint>().Where(x => x.text == "Play with your friends locally!").First();

            _mainMenuController.didActivateEvent += (first, type) =>
            {
                if (Data.Steam.SteamAPI.GetConnectionState() != SteamAPI.ConnectionState.CONNECTED)
                {
                    partyButton.SetButtonText("Party");
                    if (hint)
                    {
                        hint.text = "Play with your friends locally!";
                    }
                }
                else
                {
                    partyButton.SetButtonText("Online Lobby");
                    if (hint)
                    {
                        hint.text = "Play with your friends in your steam lobby!";
                    }
                }
            };
        }
Пример #9
0
        public static void InitializeCoordinators()
        {
            if (_characteristicViewController == null)
            {
                _characteristicViewController = Resources.FindObjectsOfTypeAll <BeatmapCharacteristicSelectionViewController>().FirstOrDefault();
                if (_characteristicViewController == null)
                {
                    return;
                }

                _characteristicViewController.didSelectBeatmapCharacteristicEvent += _characteristicViewController_didSelectBeatmapCharacteristicEvent;
            }

            if (_soloFlowCoordinator == null)
            {
                _soloFlowCoordinator = Resources.FindObjectsOfTypeAll <SoloFreePlayFlowCoordinator>().FirstOrDefault();
                if (_soloFlowCoordinator == null)
                {
                    return;
                }
                _soloDetailView         = _soloFlowCoordinator.GetField <StandardLevelDetailViewController>("_levelDetailViewController");
                _practiceViewController = _soloFlowCoordinator.GetField <PracticeViewController>("_practiceViewController");
                if (_soloDetailView != null)
                {
                    _soloDetailView.didPressPlayButtonEvent += _soloDetailView_didPressPlayButtonEvent;
                }
                else
                {
                    ChromaLogger.Log("Detail View Null", ChromaLogger.Level.WARNING);
                }
                if (_practiceViewController != null)
                {
                    _practiceViewController.didPressPlayButtonEvent += _practiceViewController_didPressPlayButtonEvent;
                }
                else
                {
                    ChromaLogger.Log("Practice View Null", ChromaLogger.Level.WARNING);
                }
            }

            if (_partyFlowCoordinator == null)
            {
                _partyFlowCoordinator = Resources.FindObjectsOfTypeAll <PartyFreePlayFlowCoordinator>().FirstOrDefault();
            }
        }
Пример #10
0
        public void OnActiveSceneChanged(Scene prevScene, Scene nextScene)
        {
            if (nextScene.name == "MenuCore")
            {
                if (_soloFlowCoordinator == null)
                {
                    _soloFlowCoordinator = Resources.FindObjectsOfTypeAll <SoloFreePlayFlowCoordinator>().FirstOrDefault();
                    if (_soloFlowCoordinator == null)
                    {
                        return;
                    }
                    _soloDetailView         = _soloFlowCoordinator.GetPrivateField <StandardLevelDetailViewController>("_levelDetailViewController");
                    _practiceViewController = _soloFlowCoordinator.GetPrivateField <PracticeViewController>("_practiceViewController");
                    if (_soloDetailView != null)
                    {
                        _soloDetailView.didPressPlayButtonEvent += _soloDetailView_didPressPlayButtonEvent;
                    }
                    else
                    {
                        Log("Detail View Null", Plugin.LogLevel.Info);
                    }
                    if (_practiceViewController != null)
                    {
                        _practiceViewController.didPressPlayButtonEvent += _practiceViewController_didPressPlayButtonEvent;
                    }
                    else
                    {
                        Log("Practice View Null", Plugin.LogLevel.Info);
                    }
                }

                if (_partyFlowCoordinator == null)
                {
                    _partyFlowCoordinator = Resources.FindObjectsOfTypeAll <PartyFreePlayFlowCoordinator>().FirstOrDefault();
                }

                if (saveRequested)
                {
                    Settings.Save();
                    saveRequested = false;
                }
            }
        }