protected override void DidActivate(bool firstActivation, bool addedToHierarchy, bool screenSystemEnabling) { if (firstActivation) { SetTitle("Qualifier Room", ViewController.AnimationType.None); showBackButton = true; _playerDataModel = Resources.FindObjectsOfTypeAll <PlayerDataModel>().First(); _menuLightsManager = Resources.FindObjectsOfTypeAll <MenuLightsManager>().First(); _soloFreePlayFlowCoordinator = Resources.FindObjectsOfTypeAll <SoloFreePlayFlowCoordinator>().First(); _campaignFlowCoordinator = Resources.FindObjectsOfTypeAll <CampaignFlowCoordinator>().First(); _resultsViewController = Resources.FindObjectsOfTypeAll <ResultsViewController>().First(); _scoreLights = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_resultsClearedLightsPreset"); _redLights = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_resultsFailedLightsPreset"); _defaultLights = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_defaultLightsPreset"); _songSelection = BeatSaberUI.CreateViewController <SongSelection>(); _songSelection.SongSelected += songSelection_SongSelected; _songDetail = BeatSaberUI.CreateViewController <SongDetail>(); _songDetail.PlayPressed += songDetail_didPressPlayButtonEvent; _songDetail.DisableCharacteristicControl = true; _songDetail.DisableDifficultyControl = true; _songDetail.DisablePlayButton = false; } if (addedToHierarchy) { _songSelection.SetSongs(Event.QualifierMaps.ToList()); ProvideInitialViewControllers(_songSelection); } }
public void Initialize() { defaultMenuLights = _menuLightsManager.GetField <MenuLightsPresetSO, MenuLightsManager>("_defaultPreset"); var playersPlace = GameObject.Find("PlayersPlace"); feetSprite = playersPlace.GetComponentInChildren <SpriteRenderer>(); UpdateColors(_menuConfig); }
public static void Postfix(MenuLightsManager __instance, ref MenuLightsPresetSO preset) { MenuLightsPreset = preset; if (preset.lightIdColorPairs.Length > 0) { BaseColor = preset.lightIdColorPairs[0].baseColor; } LightManager = __instance; }
public MenuLightsManager MenuLightsSO() { if (_mLSO == null) { _mLSO = Resources.FindObjectsOfTypeAll <MenuLightsManager>().First(); defaultPreset = Resources.FindObjectsOfTypeAll <MenuLightsPresetSO>().First(); return(_mLSO); } else { return(_mLSO); } }
public void SetBaseCampaignEnabled(bool enabled) { try { if (!enabled) { _mapScrollView.OnDestroy(); _mapScrollView.Awake(); if (!_missionNodesManager.IsInitialized) { _missionNodesManager.Awake(); } baseNodes = _missionNodesManager.GetPrivateField <MissionNode[]>("_allMissionNodes"); baseRoot = _missionNodesManager.GetPrivateField <MissionNode>("_rootMissionNode"); baseFinal = _missionNodesManager.GetPrivateField <MissionNode>("_finalMissionNode"); baseMissionStages = _missionStagesManager.GetPrivateField <MissionStage[]>("_missionStages"); baseBackground = _backgroundImage.sprite; baseBackAlpha = _backgroundImage.color.a; baseMapHeight = _mapScrollView.GetPrivateField <RectTransform>("_contentRectTransform").sizeDelta.y; baseDefaultLights = _campaignFlowCoordinator.GetPrivateField <MenuLightsPresetSO>("_defaultLightsPreset"); } foreach (MissionNode node in baseNodes) { node.transform.localPosition += new Vector3(0, enabled ? 10000 : -10000, 0); node.gameObject.SetActive(true); } if (enabled) { _missionNodesManager.SetPrivateField("_rootMissionNode", baseRoot); _missionNodesManager.SetPrivateField("_finalMissionNode", baseFinal); _missionStagesManager.SetPrivateField("_missionStages", baseMissionStages); _backgroundImage.sprite = baseBackground; _backgroundImage.color = new Color(1, 1, 1, baseBackAlpha); _campaignFlowCoordinator.SetPrivateField("_defaultLightsPreset", baseDefaultLights); _mapScrollView.GetPrivateField <RectTransform>("_contentRectTransform").SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, baseMapHeight); CampaignInit(); } _pageUpModifiersButton.gameObject.SetActive(!enabled); _pageDownModifiersButton.gameObject.SetActive(!enabled); _challengeName.gameObject.SetActive(!enabled); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); } }
public void OpenCampaign(Campaign campaign) { try { unlockAllMissions = campaign.info.allUnlocked; if (campaign.background == null) { _backgroundImage.color = new Color(1, 1, 1, 0); } else { _backgroundImage.color = new Color(1, 1, 1, campaign.info.backgroundAlpha); _backgroundImage.sprite = campaign.background; } MenuLightsPresetSO customLights = Instantiate(baseDefaultLights); SimpleColorSO color = ScriptableObject.CreateInstance <SimpleColorSO>(); color.SetColor(new Color(campaign.info.lightColor.r, campaign.info.lightColor.g, campaign.info.lightColor.b)); foreach (LightIdColorPair pair in customLights.lightIdColorPairs) { pair.baseColor = color; } _campaignFlowCoordinator.SetPrivateField("_defaultLightsPreset", customLights); MissionNode[] missionNodes = new MissionNode[campaign.info.mapPositions.Count]; curCampaignNodes = missionNodes; MissionStage[] missionStages; if (campaign.info.unlockGate.Count == 0 || unlockAllMissions) { //campaigns require an unlock gate so I make a fake one above the visible map area missionStages = new MissionStage[1]; missionStages[0] = Instantiate(baseMissionStages[0], _missionNodesManager.GetPrivateField <GameObject>("_missionNodesParentObject").transform); missionStages[0].SetPrivateField("_minimumMissionsToUnlock", 0); missionStages[0].GetPrivateField <RectTransform>("_rectTransform").localPosition = new Vector3(0, -baseMapHeight / 2 + campaign.info.mapHeight * EDITOR_TO_GAME_UNITS + HEIGHT_OFFSET / 2 + 1000, 0); } else { missionStages = new MissionStage[campaign.info.unlockGate.Count + 1]; for (int i = 0; i < missionStages.Length - 1; i++) { missionStages[i] = Instantiate(baseMissionStages[0], _missionNodesManager.GetPrivateField <GameObject>("_missionNodesParentObject").transform); missionStages[i].SetPrivateField("_minimumMissionsToUnlock", campaign.info.unlockGate[i].clearsToPass); missionStages[i].GetPrivateField <RectTransform>("_rectTransform").localPosition = new Vector3(campaign.info.unlockGate[i].x * EDITOR_TO_GAME_UNITS, -baseMapHeight / 2 + campaign.info.mapHeight * EDITOR_TO_GAME_UNITS + HEIGHT_OFFSET / 2 - campaign.info.unlockGate[i].y * EDITOR_TO_GAME_UNITS, 0); } //ghost unlock gate required for some reason as last unlock gate never gets cleared missionStages[campaign.info.unlockGate.Count] = Instantiate(baseMissionStages[0], _missionNodesManager.GetPrivateField <GameObject>("_missionNodesParentObject").transform); missionStages[campaign.info.unlockGate.Count].SetPrivateField("_minimumMissionsToUnlock", campaign.info.mapPositions.Count + 1); missionStages[campaign.info.unlockGate.Count].GetPrivateField <RectTransform>("_rectTransform").localPosition = new Vector3(0, -baseMapHeight / 2 + campaign.info.mapHeight * EDITOR_TO_GAME_UNITS + HEIGHT_OFFSET / 2 + 1000, 0); } curMissionStages = missionStages; _missionStagesManager.SetPrivateField("_missionStages", (from stage in missionStages orderby stage.minimumMissionsToUnlock select stage).ToArray()); for (int i = 0; i < missionNodes.Length; i++) { CampainMapPosition mapPosition = campaign.info.mapPositions[i]; missionNodes[i] = Instantiate(baseNodes[0], _missionNodesManager.GetPrivateField <GameObject>("_missionNodesParentObject").transform); missionNodes[i].gameObject.SetActive(true); missionNodes[i].SetPrivateField("_missionDataSO", campaign.challenges[i].GetMissionData(campaign)); missionNodes[i].GetPrivateField <RectTransform>("_rectTransform").localPosition = new Vector3(mapPosition.x * EDITOR_TO_GAME_UNITS, -baseMapHeight / 2 + campaign.info.mapHeight * EDITOR_TO_GAME_UNITS + HEIGHT_OFFSET / 2 - mapPosition.y * EDITOR_TO_GAME_UNITS, 0); missionNodes[i].GetPrivateField <RectTransform>("_rectTransform").sizeDelta = new Vector2(12 * mapPosition.scale, 12 * mapPosition.scale); missionNodes[i].SetPrivateField("_letterPartName", mapPosition.letterPortion); missionNodes[i].SetPrivateField("_numberPartName", mapPosition.numberPortion); } for (int i = 0; i < missionNodes.Length; i++) { MissionNode[] children = new MissionNode[campaign.info.mapPositions[i].childNodes.Length]; for (int j = 0; j < children.Length; j++) { children[j] = missionNodes[campaign.info.mapPositions[i].childNodes[j]]; } missionNodes[i].SetPrivateField("_childNodes", children); } _missionNodesManager.SetPrivateField("_rootMissionNode", missionNodes[0]); _mapScrollView.GetPrivateField <RectTransform>("_contentRectTransform").SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, campaign.info.mapHeight * EDITOR_TO_GAME_UNITS + HEIGHT_OFFSET); CampaignInit(); PresentFlowCoordinator(_campaignFlowCoordinator, delegate() { _campaignFlowCoordinator.InvokePrivateMethod("SetTitle", new object[] { campaign.info.name, ViewController.AnimationType.In }); _missionNodeSelectionManager.didSelectMissionNodeEvent -= _missionSelectionMapViewController.HandleMissionNodeSelectionManagerDidSelectMissionNode; _missionLevelDetailViewController.didPressPlayButtonEvent -= _missionSelectionNavigationController.HandleMissionLevelDetailViewControllerDidPressPlayButton; _missionResultsViewController.retryButtonPressedEvent += HandleMissionResultsViewControllerRetryButtonPressed; _missionResultsViewController.retryButtonPressedEvent -= _campaignFlowCoordinator.HandleMissionResultsViewControllerRetryButtonPressed; _campaignFlowCoordinator.didFinishEvent -= BeatSaberUI.MainFlowCoordinator.HandleCampaignFlowCoordinatorDidFinish; _campaignFlowCoordinator.didFinishEvent += CloseCampaign; _missionSelectionMapViewController.didSelectMissionLevelEvent += HandleMissionSelectionMapViewControllerDidSelectMissionLevel; _missionResultsViewController.continueButtonPressedEvent += HandleMissionResultsViewControllerContinueButtonPressed; _missionMapAnimationController.ScrollToTopMostNotClearedMission(); _playButton.interactable = true; }); _missionNodeSelectionManager.didSelectMissionNodeEvent += HandleMissionNodeSelectionManagerDidSelectMissionNode; (_campaignChallengeLeaderbaordViewController.table.transform.GetChild(1).GetChild(0).transform as RectTransform).localScale = new Vector3(1, 0.9f, 1); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); } }
protected override void DidActivate(bool firstActivation, ActivationType activationType) { if (firstActivation) { //Set up UI title = "Room Screen"; showBackButton = true; _playerDataModel = Resources.FindObjectsOfTypeAll <PlayerDataModel>().First(); _menuLightsManager = Resources.FindObjectsOfTypeAll <MenuLightsManager>().First(); _soloFreePlayFlowCoordinator = Resources.FindObjectsOfTypeAll <SoloFreePlayFlowCoordinator>().First(); _campaignFlowCoordinator = Resources.FindObjectsOfTypeAll <CampaignFlowCoordinator>().First(); _resultsViewController = Resources.FindObjectsOfTypeAll <ResultsViewController>().First(); _scoreLights = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_resultsLightsPreset"); _redLights = _campaignFlowCoordinator.GetField <MenuLightsPresetSO>("_newObjectiveLightsPreset"); _defaultLights = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_defaultLightsPreset"); _songSelection = BeatSaberUI.CreateViewController <SongSelection>(); _songSelection.SongSelected += songSelection_SongSelected; _splashScreen = BeatSaberUI.CreateViewController <SplashScreen>(); _songDetail = BeatSaberUI.CreateViewController <SongDetail>(); _songDetail.PlayPressed += songDetail_didPressPlayButtonEvent; _songDetail.DifficultyBeatmapChanged += songDetail_didChangeDifficultyBeatmapEvent; _playerList = BeatSaberUI.CreateViewController <PlayerList>(); } if (activationType == ActivationType.AddedToHierarchy) { tournamentMode = Match == null; if (tournamentMode) { _splashScreen.StatusText = $"Connecting to \"{Host.Name}\"..."; ProvideInitialViewControllers(_splashScreen); } else { //If we're not in tournament mode, then a client connection has already been made //by the room selection screen, so we can just assume Plugin.client isn't null //NOTE: This is *such* a hack. Oh my god. isHost = Match.Leader == Plugin.client.Self; _songSelection.SetSongs(SongUtils.masterLevelList); _playerList.Players = Match.Players; _splashScreen.StatusText = "Waiting for the host to select a song..."; if (isHost) { ProvideInitialViewControllers(_songSelection, _playerList); } else { ProvideInitialViewControllers(_splashScreen, _playerList); } } } //The ancestor sets up the server event listeners //It would be possible to recieve an event that does a ui update after this call //and before the rest of the ui is set up, if we did this at the top. //So, we do it last base.DidActivate(firstActivation, activationType); }
public void UpdateColors(Config.Menu menuConfig) { var defaultColor = CachedColor(Color); defaultMenuLights = CreateMenuLights(defaultColor); if (menuConfig.ColorPairs.TryGetValue("PlayersPlaceFeet", out Config.ColorPair playersFeetColorPair)) { feetSprite.color = playersFeetColorPair.Enabled ? playersFeetColorPair.Color : defaultColor.color; } if (menuConfig.ColorPairs.TryGetValue("Freeplay", out Config.ColorPair freeplay)) { if (freeplay.Enabled) { var lights = CreateMenuLights(freeplay.Color); _soloFreePlayFlowCoordinator.SetField("_defaultLightsPreset", lights); _partyFreePlayFlowCoordinator.SetField("_defaultLightsPreset", lights); } else { _soloFreePlayFlowCoordinator.SetField("_defaultLightsPreset", defaultMenuLights); _partyFreePlayFlowCoordinator.SetField("_defaultLightsPreset", defaultMenuLights); } } if (menuConfig.ColorPairs.TryGetValue("Results", out Config.ColorPair results)) { if (results.Enabled) { var lights = CreateMenuLights(results.Color); _soloFreePlayFlowCoordinator.SetField("_resultsClearedLightsPreset", lights); _partyFreePlayFlowCoordinator.SetField("_resultsClearedLightsPreset", lights); } else { _soloFreePlayFlowCoordinator.SetField("_resultsClearedLightsPreset", defaultMenuLights); _partyFreePlayFlowCoordinator.SetField("_resultsClearedLightsPreset", defaultMenuLights); } } if (menuConfig.ColorPairs.TryGetValue("Campaigns", out Config.ColorPair campaigns)) { if (campaigns.Enabled) { var lights = CreateMenuLights(campaigns.Color); _campaignFlowCoordinator.SetField("_defaultLightsPreset", lights); } else { _campaignFlowCoordinator.SetField("_defaultLightsPreset", defaultMenuLights); } } _centerStageScreenController.SetField("_defaultMenuLightsPreset", defaultMenuLights); if (menuConfig.ColorPairs.TryGetValue("Multiplayer", out Config.ColorPair multiplayer)) { if (multiplayer.Enabled) { var lights = CreateMenuLights(multiplayer.Color); _centerStageScreenController.SetField("_lobbyLightsPreset", lights); } } if (menuConfig.ColorPairs.TryGetValue("MultiplayerCountdown", out Config.ColorPair multiplayerCountdown)) { if (multiplayerCountdown.Enabled) { var lights = CreateMenuLights(multiplayerCountdown.Color); _centerStageScreenController.SetField("_countdownMenuLightsPreset", lights); } } _mainFlowCoordinator.SetField("_defaultLightsPreset", defaultMenuLights); }
public void SetColor(Color color) { defaultMenuLights = _menuLightsManager.GetField <MenuLightsPresetSO, MenuLightsManager>("_defaultPreset"); _menuLightsManager?.SetColorPreset(CreateMenuLights(color), true); _menuLightsManager?.RefreshColors(); }