Пример #1
0
        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);
        }
Пример #3
0
        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);
                }
            }
        }
Пример #4
0
        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);
        }