protected override void DidActivate(bool firstActivation, ActivationType activationType) { if (firstActivation) { channelSelectionNavController = BeatSaberUI.CreateViewController <MultiplayerNavigationController>(); channelSelectionNavController.didFinishEvent += () => { PluginUI.instance.modeSelectionFlowCoordinator.InvokeMethod("DismissFlowCoordinator", this, null, false); }; channelSelectionViewController = BeatSaberUI.CreateViewController <ChannelSelectionViewController>(); channelSelectionViewController.nextPressedEvent += () => { currentChannel++; if (currentChannel >= _channelInfos.Count) { currentChannel = 0; } channelSelectionViewController.SetContent(_channelInfos[currentChannel]); }; channelSelectionViewController.prevPressedEvent += () => { currentChannel--; if (currentChannel < 0) { currentChannel = _channelInfos.Count - 1; } channelSelectionViewController.SetContent(_channelInfos[currentChannel]); }; channelSelectionViewController.joinPressedEvent += (channel) => { if (!mainScreenViewControllers.Any(x => x.GetPrivateField <bool>("_isInTransition"))) { PresentFlowCoordinator(PluginUI.instance.radioFlowCoordinator, null, false, false); PluginUI.instance.radioFlowCoordinator.JoinChannel(channel.ip, channel.port, channel.channelId); PluginUI.instance.radioFlowCoordinator.didFinishEvent -= DismissRadio; PluginUI.instance.radioFlowCoordinator.didFinishEvent += DismissRadio; } }; } SetViewControllerToNavigationConctroller(channelSelectionNavController, channelSelectionViewController); ProvideInitialViewControllers(channelSelectionNavController, null, null); StartCoroutine(GetChannelsList()); }