internal static void CharacterSelectControllerAwake(On.RoR2.UI.CharacterSelectController.orig_Awake orig, CharacterSelectController self) { orig(self); var leftHandPanel = self.transform.Find("SafeArea/LeftHandPanel (Layer: Main)"); if (!CachedPrefab) { CachePrefabFromSurvivorGrid(leftHandPanel, "SurvivorChoiceGrid, Panel"); } var randomizePanel = GameObject.Instantiate(CachedPrefab, self.transform.Find("SafeArea"), false); HGGamepadInputEvent cscRightInputEventOne; HGGamepadInputEvent cscRightInputEventTwo; var cscInputEvents = self.GetComponents <HGGamepadInputEvent>(); if (RandomCharacterSelectionPlugin.InLobbyConfigLoaded) { var rightInputs = cscInputEvents.Where(el => el.actionName == "UISubmenuRight"); cscRightInputEventOne = rightInputs.ElementAt(0); cscRightInputEventTwo = rightInputs.ElementAt(1); } else { cscRightInputEventOne = cscInputEvents.First(el => el.actionName == "UISubmenuRight"); cscRightInputEventOne.requiredTopLayer = leftHandPanel.GetComponent <UILayerKey>(); cscRightInputEventTwo = self.gameObject.AddComponent <HGGamepadInputEvent>(); cscRightInputEventTwo.actionName = cscRightInputEventOne.actionName; cscRightInputEventTwo.actionEvent = cscRightInputEventOne.actionEvent; cscRightInputEventTwo.requiredTopLayer = leftHandPanel.Find("SurvivorInfoPanel, Active (Layer: Secondary)").GetComponent <UILayerKey>(); cscRightInputEventTwo.enabledObjectsIfActive = Array.Empty <GameObject>(); } var randomizePanelRightInputEvent = randomizePanel.GetComponents <HGGamepadInputEvent>().First(input => input.actionName == "UISubmenuRight"); var cscLeftInputEventOne = self.gameObject.AddComponent <HGGamepadInputEvent>(); cscLeftInputEventOne.actionName = "UISubmenuLeft"; cscLeftInputEventOne.actionEvent = randomizePanel.GetComponent <EventHolder>().unityEvent; cscLeftInputEventOne.requiredTopLayer = cscRightInputEventOne.requiredTopLayer; cscLeftInputEventOne.enabledObjectsIfActive = Array.Empty <GameObject>(); var cscLeftInputEventTwo = self.gameObject.AddComponent <HGGamepadInputEvent>(); cscLeftInputEventTwo.actionName = cscLeftInputEventOne.actionName; cscLeftInputEventTwo.actionEvent = cscLeftInputEventOne.actionEvent; cscLeftInputEventTwo.requiredTopLayer = cscRightInputEventTwo.requiredTopLayer; cscLeftInputEventTwo.enabledObjectsIfActive = Array.Empty <GameObject>(); var randomizePanelCancelInputEvent = randomizePanel.AddComponent <HGGamepadInputEvent>(); randomizePanelCancelInputEvent.actionName = "UICancel"; randomizePanelCancelInputEvent.actionEvent = randomizePanelRightInputEvent.actionEvent; randomizePanelCancelInputEvent.requiredTopLayer = randomizePanelRightInputEvent.requiredTopLayer; randomizePanelCancelInputEvent.enabledObjectsIfActive = randomizePanelRightInputEvent.enabledObjectsIfActive; }
internal static void CharacterSelectControllerRebuildAwake(On.RoR2.UI.CharacterSelectController.orig_Awake orig, RoR2.UI.CharacterSelectController self) { orig(self); if (defaultTranslucentMaterial) { return; } defaultTranslucentMaterial = GameObject.Instantiate(self.transform.Find("SafeArea/LeftHandPanel (Layer: Main)/BlurPanel").GetComponent <TranslucentImage>().material); }
private void CharacterSelectController_Awake(On.RoR2.UI.CharacterSelectController.orig_Awake orig, RoR2.UI.CharacterSelectController self) { orig(self); var directionalLight = GameObject.Find("Directional Light"); var ui_main = GameObject.Find("CharacterSelectUI").transform; var SafeArea = ui_main.Find("SafeArea").transform; var ui_left = SafeArea.Find("LeftHandPanel (Layer: Main)"); var ui_right = SafeArea.Find("RightHandPanel"); // UI // if (HideFade.Value) { ui_main.Find("BottomSideFade").gameObject.SetActive(false); ui_main.Find("TopSideFade").gameObject.SetActive(false); } if (UIScale.Value != 1f) { ui_left.localScale *= UIScale.Value; ui_right.localScale *= UIScale.Value; } if (BlurValue.Value != 255) { var newBlurValue = Mathf.Clamp(BlurValue.Value, 0f, 255f); var leftBlurColor = ui_left.Find("BlurPanel").GetComponent <TranslucentImage>().color; var rightBlurColor = ui_right.Find("RuleVerticalLayout").Find("BlurPanel").GetComponent <TranslucentImage>().color; leftBlurColor.a = newBlurValue; rightBlurColor.a = newBlurValue; } if (BlurValue.Value == 255) // UNUSED / TESTING { var SurvivorChoiceGrid = ui_left.Find("SurvivorChoiceGrid, Panel"); ui_left.GetComponent <UnityEngine.UI.VerticalLayoutGroup>().enabled = false; var KingEnderBrine = SurvivorChoiceGrid.Find("SurvivorChoiseGridContainer"); if (KingEnderBrine) { KingEnderBrine.GetComponent <UnityEngine.UI.HorizontalLayoutGroup>().enabled = false; KingEnderBrine.transform.position = new Vector3(-70, 55, 100); } else { } } //TESTING // Overlay // // Post Processing // GameObject.Find("PP").SetActive(!PostProcessing.Value); // Light // if (Light_Color.Value != "default" && TryParseHtmlString(Light_Color.Value, out Color color)) { Methods.ChangeLobbyLightColor(color); } directionalLight.gameObject.GetComponent <Light>().intensity = Light_Intensity.Value; directionalLight.gameObject.GetComponent <FlickerLight>().enabled = !Light_Flicker_Disable.Value; // Character Pad Displays // if (CharacterPadScale.Value != 1f) { if (LobbyViewType != StaticValues.LobbyViewType.Zoom) //if Zoom is selected, then this will NRE //here { GameObject.Find("CharacterPadAlignments").transform.localScale *= CharacterPadScale.Value; } } // Background Elements // if (MeshProps.Value) { GameObject.Find("HANDTeaser")?.SetActive(false); GameObject.Find("MeshProps").SetActive(false); GameObject.Find("HumanCrate1Mesh").SetActive(false); GameObject.Find("HumanCrate2Mesh").SetActive(false); GameObject.Find("HumanCanister1Mesh").SetActive(false); } else if (PhysicsProps.Value) { var thing = GameObject.Find("MeshProps").transform; foreach (string text in new string[] { "PropAnchor", "ExtinguisherMesh", "FolderMesh", "LaptopMesh (1)", "ChairPropAnchor", "ChairMesh", "ChairWeight", "PropAnchor (1)", "ExtinguisherMesh (1)", "ExtinguisherMesh (2)", "FolderMesh (1)", "LaptopMesh (2)" }) { thing.Find(text)?.gameObject.SetActive(false); } } // CUSTOM BACKGROUND // // SURVIVORS IN LOBBY // if (SurvivorsInLobby.Value) { var component = self.gameObject.AddComponent <LAI_BGCHARCOMP>(); var characterHolder = new GameObject("HOLDER: Characters"); var survivorDisplays = component.survivorDisplays; foreach (var setting in StaticValues.characterDisplaySettings) { CreateDisplayMaster(setting.Key, setting.Value[0], setting.Value[1], characterHolder.transform, survivorDisplays); } if (LobbyViewType == StaticValues.LobbyViewType.Zoom) //here { GameObject.Find("CharacterPadAlignments").SetActive(false); } } }
private static void CharacterSelectControllerAwake(On.RoR2.UI.CharacterSelectController.orig_Awake orig, CharacterSelectController self) { try { #region LoadButton var quitButton = self.transform.GetChild(2).GetChild(4).GetChild(0).gameObject; lobbyButton = GameObject.Instantiate(quitButton, quitButton.transform.parent); foreach (var filter in self.GetComponents <InputSourceFilter>()) { if (filter.requiredInputSource == MPEventSystem.InputSource.MouseAndKeyboard) { Array.Resize(ref filter.objectsToFilter, filter.objectsToFilter.Length + 1); filter.objectsToFilter[filter.objectsToFilter.Length - 1] = lobbyButton; break; } } lobbyButton.name = "[ProperSave] Load"; var rectTransform = lobbyButton.GetComponent <RectTransform>(); rectTransform.anchorMin = new Vector2(1F, 1.5F); rectTransform.anchorMax = new Vector2(1F, 1.5F); var buttonComponent = lobbyButton.GetComponent <HGButton>(); buttonComponent.hoverToken = LanguageConsts.PS_TITLE_CONTINUE_DESC; var languageComponent = lobbyButton.GetComponent <LanguageTextMeshController>(); languageComponent.token = LanguageConsts.PS_TITLE_LOAD; buttonComponent.onClick = new Button.ButtonClickedEvent(); buttonComponent.onClick.AddListener(LoadOnInputEvent); #endregion #region Load GlypAndDescription var submenuLegend = self.transform.GetChild(2).GetChild(4).GetChild(1).gameObject; lobbySubmenuLegend = GameObject.Instantiate(submenuLegend, submenuLegend.transform.parent); foreach (var filter in self.GetComponents <InputSourceFilter>()) { if (filter.requiredInputSource == MPEventSystem.InputSource.Gamepad) { Array.Resize(ref filter.objectsToFilter, filter.objectsToFilter.Length + 1); filter.objectsToFilter[filter.objectsToFilter.Length - 1] = lobbySubmenuLegend; break; } } lobbySubmenuLegend.name = "[ProperSave] SubmenuLegend"; var uiJuiceComponent = lobbySubmenuLegend.GetComponent <UIJuice>(); var enableEventComponent = lobbySubmenuLegend.GetComponent <OnEnableEvent>(); enableEventComponent.action.RemoveAllListeners(); enableEventComponent.action.AddListener(uiJuiceComponent.TransitionPanFromTop); enableEventComponent.action.AddListener(uiJuiceComponent.TransitionAlphaFadeIn); var rectTransformComponent = lobbySubmenuLegend.GetComponent <RectTransform>(); rectTransformComponent.anchorMin = new Vector2(1, 1); rectTransformComponent.anchorMax = new Vector2(1, 2); lobbyGlyphAndDescription = lobbySubmenuLegend.transform.GetChild(0).gameObject; var glyph = lobbyGlyphAndDescription.transform.GetChild(0).GetComponent <InputBindingDisplayController>(); glyph.actionName = "UISubmenuUp"; var description = lobbyGlyphAndDescription.transform.GetChild(1).GetComponent <LanguageTextMeshController>(); description.token = LanguageConsts.PS_TITLE_LOAD; for (var i = 1; i < lobbySubmenuLegend.transform.childCount; i++) { GameObject.Destroy(lobbySubmenuLegend.transform.GetChild(i).gameObject); } #endregion UpdateLobbyControls(); var gamepadInputEvent = self.gameObject.AddComponent <HGGamepadInputEvent>(); gamepadInputEvent.actionName = "UISubmenuUp"; gamepadInputEvent.enabledObjectsIfActive = Array.Empty <GameObject>(); gamepadInputEvent.actionEvent = new UnityEngine.Events.UnityEvent(); gamepadInputEvent.actionEvent.AddListener(LoadOnInputEvent); } catch (Exception e) { ProperSavePlugin.InstanceLogger.LogWarning("Failed while adding lobby buttons"); ProperSavePlugin.InstanceLogger.LogError(e); } orig(self); }