Example #1
0
        //public static void Orig_DelayedRefresh(SplitScreenManager self, DictionaryExt<int, SplitPlayer> localUIs)
        //      {
        //    for (int i = 0; i < localUIs.Count; i++)
        //    {
        //        SplitPlayer splitPlayer = localUIs.Values[i];
        //        float foV = 0f;
        //        Vector3 default_OFFSET = CharacterCamera.DEFAULT_OFFSET;
        //        Vector2 zero = Vector2.zero;
        //        Vector2 zero2 = Vector2.zero;
        //        Rect splitRect = new Rect(0f, 0f, 0f, 0f);
        //        RawImage rawImage = self.RenderInImage ? GameDisplayInUI.Instance.Screens[i] : null;
        //        if (localUIs.Count == 1)
        //        {
        //            splitRect.position = Vector2.zero;
        //            splitRect.size = Vector2.one;
        //            foV = OptionManager.Instance.GetFoVSolo(i);
        //            if (self.RenderInImage)
        //            {
        //                rawImage.rectTransform.localScale = Vector3.one;
        //                GameDisplayInUI.Instance.Screens[1].gameObject.SetActive(false);
        //            }
        //            GameDisplayInUI.Instance.SetMultiDisplayActive(false);
        //        }
        //        else if (localUIs.Count == 2)
        //        {
        //            if (self.CurrentSplitType == SplitScreenManager.SplitType.Horizontal)
        //            {
        //                if (self.RenderInImage)
        //                {
        //                    splitRect.position = ((i == 0) ? new Vector2(0.5f, 0.5f) : Vector2.zero);
        //                    splitRect.size = new Vector2(1f, 0.5f);
        //                }
        //                else
        //                {
        //                    splitRect.position = new Vector2(0f, 0.5f * (float)((i == 0) ? 1 : -1));
        //                    splitRect.size = Vector2.one;
        //                }
        //                foV = OptionManager.Instance.GetFoVSplit(i);
        //                default_OFFSET.z = -5f;
        //                default_OFFSET.y = 0.6f;
        //                zero2.y = -0.5f;
        //                zero.y = (float)((i % 2 == 1) ? 1 : -1) * 0.5f;
        //                GameDisplayInUI.Instance.SetMultiDisplayActive(false);
        //                if (self.RenderInImage)
        //                {
        //                    rawImage.rectTransform.localScale = new Vector3(1f, 0.5f, 1f);
        //                }
        //            }
        //            else if (self.CurrentSplitType == SplitScreenManager.SplitType.Vertical)
        //            {
        //                if (self.RenderInImage)
        //                {
        //                    splitRect.position = ((i == 0) ? Vector2.zero : new Vector2(0.5f, 0f));
        //                    splitRect.size = new Vector2(0.5f, 1f);
        //                }
        //                else
        //                {
        //                    splitRect.position = new Vector2(0.5f * (float)((i == 0) ? -1 : 1), 0f);
        //                    splitRect.size = Vector2.one;
        //                }
        //                foV = self.VSplitFoV;
        //                default_OFFSET.z = -2.5f;
        //                zero2.x = -0.5f;
        //                zero.x = (float)((i % 2 == 1) ? 1 : -1) * 0.5f;
        //            }
        //            else if (self.CurrentSplitType == SplitScreenManager.SplitType.MultiDisplay)
        //            {
        //                splitRect.position = Vector2.zero;
        //                splitRect.size = Vector2.one;
        //                foV = OptionManager.Instance.GetFoVSolo(i);
        //                if (self.RenderInImage)
        //                {
        //                    rawImage.rectTransform.localScale = Vector3.one;
        //                }
        //                GameDisplayInUI.Instance.SetMultiDisplayActive(true);
        //            }
        //            if (self.RenderInImage)
        //            {
        //                GameDisplayInUI.Instance.Screens[1].gameObject.SetActive(true);
        //            }
        //        }
        //        else
        //        {
        //            splitRect.size = new Vector2(0.5f, 0.5f);
        //            Vector2 zero3 = Vector2.zero;
        //            zero3.x = ((i == 0 || i == 2) ? 0f : 0.5f);
        //            zero3.y = ((i < 2) ? 0.5f : 0f);
        //            splitRect.position = zero3;
        //            zero2.y = -0.5f;
        //            zero.y = (float)((i % 2 == 1) ? 1 : -1) * 0.5f;
        //            zero2.x = -0.5f;
        //            zero.x = (float)((i % 2 == 1) ? 1 : -1) * 0.5f;
        //        }
        //        CameraSettings settings;
        //        settings.FoV = foV;
        //        settings.SplitRect = splitRect;
        //        settings.Offset = default_OFFSET;
        //        settings.CameraDepth = 2 * i;
        //        settings.Image = rawImage;
        //        splitPlayer.RefreshSplitScreen(zero, zero2, settings);
        //    }
        //}

        public static void RefreshHorizontal(SplitScreenManager self)
        {
            if ((bool)CONFIG.GetValue(Settings.moveGlobalUiToPlayer1.ToString()))
            {
                var zero  = Vector2.zero;
                var zero2 = Vector2.zero;
                if (self.LocalPlayers.Count == 2)
                {
                    zero2.y = -0.5f;
                    zero.y  = -0.5f;
                }

                var vector           = Vector2.Scale(zero2, MenuManager.Instance.ScreenSize);
                var anchoredPosition = Vector2.Scale(zero, vector);

                if (At.GetField(MenuManager.Instance, "m_masterLoading") is LoadingFade loadingFade)
                {
                    if (loadingFade.GetComponentInChildren <RectTransform>() is RectTransform loadingRect)
                    {
                        loadingRect.sizeDelta        = vector;
                        loadingRect.anchoredPosition = anchoredPosition;
                    }
                }

                if (At.GetField(MenuManager.Instance, "m_prologueScreen") is ProloguePanel prologuePanel)
                {
                    var rectTransform = prologuePanel.RectTransform;
                    rectTransform.sizeDelta        = vector;
                    rectTransform.anchoredPosition = anchoredPosition;
                }
            }
        }
Example #2
0
 public static void Prefix(SplitScreenManager __instance)
 {
     if (__instance.LocalPlayerCount == 2)
     {
         MinimapScript.P1_OnSplitEnd();
     }
 }
Example #3
0
        static void SplitScreenManager_Awake_Post(SplitScreenManager __instance)
        {
            #region quit
            if (!_extraGamepadQuickslots)
            {
                return;
            }
            #endregion

            CharacterUI charUIPrefab = __instance.m_charUIPrefab;
            GameObject.DontDestroyOnLoad(charUIPrefab);
            SetupQuickslotPanels(charUIPrefab);
        }
Example #4
0
            public static bool Prefix(SplitScreenManager __instance, DictionaryExt <int, SplitPlayer> ___m_localCharacterUIs)
            {
                if (__instance.CurrentSplitType == SplitScreenManager.SplitType.Horizontal)
                {
                    //Orig_DelayedRefresh(__instance, ___m_localCharacterUIs);
                    return(true);
                }
                else
                {
                    RefreshVertical(__instance, ___m_localCharacterUIs);
                }

                return(false);
            }
    void Start()
    {
        if (m_instance == null)
        {
            m_instance = this;
            DontDestroyOnLoad(gameObject);
        }
        else if (m_instance != null)
        {
            Destroy(gameObject);
        }

        m_splitCameras = new List <Camera>();

        if (!GameManager.m_instance.GetScene().name.Equals("Main Menu"))
        {
            UpdateSplitScreen(m_currentNumberOfCameras);
        }
    }
Example #6
0
            public static void Postfix(SplitScreenManager __instance)
            {
                SL.Log("DelayedRefresh Postfix");

                if (__instance.CurrentSplitType == SplitScreenManager.SplitType.Horizontal)
                {
                    RefreshHorizontal(__instance);
                }

                CanvasScaler[] componentsInChildren = MenuManager.Instance.GetComponentsInChildren <CanvasScaler>();
                for (int i = 0; i < componentsInChildren.Length; i++)
                {
                    componentsInChildren[i].matchWidthOrHeight = ((Screen.height > Screen.width) ? 0f : 1f);
                }

                Canvas[] componentsInChildren2 = MenuManager.Instance.GetComponentsInChildren <Canvas>();
                for (int j = 0; j < componentsInChildren2.Length; j++)
                {
                    componentsInChildren2[j].scaleFactor = (float)CONFIG.GetValue(Settings.scaleFactor.ToString());
                }
            }
Example #7
0
            public static void Prefix(SplitScreenManager __instance)
            {
                if (Input.GetKey(KeyCode.Home))
                {
                    if (Input.GetKeyUp(KeyCode.H))
                    {
                        CONFIG.SetValue(Settings.moveGlobalUiToPlayer1.ToString(), false);
                        CONFIG.SetValue(Settings.scaleFactor.ToString(), 0.9f);
                        __instance.CurrentSplitType = SplitScreenManager.SplitType.Vertical;
                        m_refreshWanted             = true;
                    }
                    else if (Input.GetKeyUp(KeyCode.V))
                    {
                        CONFIG.SetValue(Settings.moveGlobalUiToPlayer1.ToString(), true);
                        CONFIG.SetValue(Settings.scaleFactor.ToString(), 1.0f);
                        __instance.CurrentSplitType = SplitScreenManager.SplitType.Horizontal;
                        m_refreshWanted             = true;
                    }
                    else if (Input.GetKeyUp(KeyCode.M))
                    {
                        CONFIG.SetValue(Settings.moveGlobalUiToPlayer1.ToString(), !(bool)CONFIG.GetValue(Settings.moveGlobalUiToPlayer1.ToString()));
                        m_refreshWanted = true;
                    }
                }

                if (lastScreenHeight != Screen.height || lastScreenWidth != Screen.width)
                {
                    m_refreshWanted  = true;
                    lastScreenHeight = Screen.height;
                    lastScreenWidth  = Screen.width;
                }

                if (m_refreshWanted)
                {
                    m_refreshWanted = false;
                    __instance.ForceRefreshRatio = true;
                }
            }
Example #8
0
        static void Main(string[] args)
        {
            Config = Config.LoadConfig();
            if (Config?.AutomaticallyCheckForUpdatesOnStartup ?? true)
            {
                UpdateChecker.CheckUpdateDialog(false);
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            Form      = new Form1();
            Form_hWnd = Form.Handle;
            Form.SetAutomaticallyCheckUpdatesChecked(Config?.AutomaticallyCheckForUpdatesOnStartup ?? true);

            Options = new OptionsStructure();

            Core.Options.LoadOptions();

            SplitScreenManager = new SplitScreenManager();
            SplitScreenManager.Init();

            MessageProcessor = new MessageProcessor();

            i = new Intercept();
            var x = new RawInputManager(Form_hWnd);

            InputDisabler.Init();

            Application.Run(Form);            //Not required for RegisterRawInputDevices to work

            SplitScreenManager.DeactivateSplitScreen();

            Logger.WriteLine("Exiting application");
            Environment.Exit(0);
        }
Example #9
0
        public static void RefreshVertical(SplitScreenManager self, DictionaryExt <int, SplitPlayer> localUIs)
        {
            if (GameDisplayInUI.Instance.gameObject.activeSelf != self.RenderInImage)
            {
                GameDisplayInUI.Instance.gameObject.SetActive(self.RenderInImage);
            }

            for (int i = 0; i < localUIs.Count; i++)
            {
                SplitPlayer splitPlayer    = localUIs.Values[i];
                Vector3     default_OFFSET = CharacterCamera.DEFAULT_OFFSET;
                Vector2     zero           = Vector2.zero;
                Vector2     zero2          = Vector2.zero;
                Rect        splitRect      = new Rect(0f, 0f, 0f, 0f);
                RawImage    rawImage       = (!self.RenderInImage) ? null : GameDisplayInUI.Instance.Screens[i];
                float       foV;
                if (localUIs.Count == 1)
                {
                    splitRect.position = Vector2.zero;
                    splitRect.size     = Vector2.one;
                    foV = OptionManager.Instance.GetFoVSolo(i);
                    if (self.RenderInImage)
                    {
                        rawImage.rectTransform.localScale = Vector3.one;
                        GameDisplayInUI.Instance.Screens[1].gameObject.SetActive(false);
                    }
                    GameDisplayInUI.Instance.SetMultiDisplayActive(false);
                }
                else
                {
                    if (localUIs.Count != 2)
                    {
                        throw new NotImplementedException("Support for more than 2 players is not implemented.");
                    }

                    int num = i + 1;
                    if (self.RenderInImage)
                    {
                        splitRect.position = ((i != 0) ? new Vector2(0.5f, 0f) : Vector2.zero);
                        splitRect.size     = new Vector2(0.5f, 1f);
                    }
                    else
                    {
                        splitRect.position = new Vector2(0.5f * (float)((i != 0) ? 1 : -1), 0f);
                        splitRect.size     = Vector2.one;
                    }

                    foV = OptionManager.Instance.GetFoVSplit(i);
                    default_OFFSET.z = -2.5f;
                    zero2.x          = -0.5f;
                    zero.x           = (float)((num % 2 != 1) ? -1 : 1) * 0.5f;

                    if (self.RenderInImage)
                    {
                        GameDisplayInUI.Instance.Screens[1].gameObject.SetActive(true);
                    }
                }

                CameraSettings settings;
                settings.FoV         = foV;
                settings.SplitRect   = splitRect;
                settings.Offset      = default_OFFSET;
                settings.CameraDepth = 2 * i;
                settings.Image       = rawImage;
                splitPlayer.RefreshSplitScreen(zero, zero2, settings);
            }

            if ((bool)CONFIG.GetValue(Settings.moveGlobalUiToPlayer1.ToString()))
            {
                Vector2 zero3 = Vector2.zero;
                Vector2 zero4 = Vector2.zero;
                if (self.LocalPlayers.Count == 2)
                {
                    zero4.x = -0.5f;
                    zero3.x = 0.5f;
                }

                Vector2 vector           = Vector2.Scale(zero4, MenuManager.Instance.ScreenSize);
                Vector2 anchoredPosition = Vector2.Scale(zero3, vector);

                if (At.GetField(MenuManager.Instance, "m_masterLoading") is LoadingFade loadingFade)
                {
                    RectTransform componentInChildren = loadingFade.GetComponentInChildren <RectTransform>();
                    bool          flag7 = componentInChildren != null;
                    if (flag7)
                    {
                        componentInChildren.sizeDelta        = vector;
                        componentInChildren.anchoredPosition = anchoredPosition;
                    }
                }

                if (At.GetField(MenuManager.Instance, "m_prologueScreen") is ProloguePanel prologuePanel)
                {
                    RectTransform rectTransform = prologuePanel.RectTransform;
                    rectTransform.sizeDelta        = vector;
                    rectTransform.anchoredPosition = anchoredPosition;
                }
            }
        }
Example #10
0
        public static void SplitScreenManager_Update(On.SplitScreenManager.orig_Update orig, SplitScreenManager self)
        {
            if (Input.GetKey(KeyCode.Home) && Input.GetKeyUp(KeyCode.V))
            {
                moveGlobalUiToPlayer1 = false;
                self.CurrentSplitType = SplitScreenManager.SplitType.Vertical;
                scaleFactor           = 0.9f;
            }

            if (Input.GetKey(KeyCode.Home) && Input.GetKeyUp(KeyCode.H))
            {
                moveGlobalUiToPlayer1 = true;
                self.CurrentSplitType = SplitScreenManager.SplitType.Horizontal;
                scaleFactor           = 1f;
            }

            if (Input.GetKey(KeyCode.Home) && Input.GetKeyUp(KeyCode.M))
            {
                moveGlobalUiToPlayer1 = !moveGlobalUiToPlayer1;
            }

            if (Input.GetKey(KeyCode.Home) && Input.GetKeyUp(KeyCode.KeypadPlus))
            {
                scaleFactor           += 0.05f;
                self.ForceRefreshRatio = true;
                orig(self);
            }

            if (Input.GetKey(KeyCode.Home) && Input.GetKeyUp(KeyCode.KeypadMinus))
            {
                scaleFactor           -= 0.05f;
                self.ForceRefreshRatio = true;
                orig(self);
            }

            if (Input.GetKeyUp(KeyCode.Home))
            {
                self.ForceRefreshRatio = true;
            }

            if (Screen.height != lastScreenHeight)
            {
                lastScreenHeight       = Screen.height;
                self.ForceRefreshRatio = true;
            }

            if (Screen.width != lastScreenWidth)
            {
                lastScreenWidth        = Screen.width;
                self.ForceRefreshRatio = true;
            }

            orig(self);
        }
Example #11
0
        public static void SplitScreenManager_DelayedRefreshSplitScreen_Vertical(On.SplitScreenManager.orig_DelayedRefreshSplitScreen orig, SplitScreenManager self)
        {
            self.CurrentSplitType = SplitScreenManager.SplitType.Vertical;
            DictionaryExt <int, SplitPlayer> privatePart = Utils.GetPrivatePart <DictionaryExt <int, SplitPlayer>, SplitScreenManager>(self, "m_localCharacterUIs");

            if (GameDisplayInUI.Instance.gameObject.activeSelf != self.RenderInImage)
            {
                GameDisplayInUI.Instance.gameObject.SetActive(self.RenderInImage);
            }

            for (int i = 0; i < privatePart.Count; i++)
            {
                SplitPlayer splitPlayer    = privatePart.Values[i];
                Vector3     default_OFFSET = CharacterCamera.DEFAULT_OFFSET;
                Vector2     zero           = Vector2.zero;
                Vector2     zero2          = Vector2.zero;
                Rect        splitRect      = new Rect(0f, 0f, 0f, 0f);
                RawImage    rawImage       = (!self.RenderInImage) ? null : GameDisplayInUI.Instance.Screens[i];
                float       foV;
                if (privatePart.Count == 1)
                {
                    splitRect.position = Vector2.zero;
                    splitRect.size     = Vector2.one;
                    foV = OptionManager.Instance.GetFoVSolo(i);
                    if (self.RenderInImage)
                    {
                        rawImage.rectTransform.localScale = Vector3.one;
                        GameDisplayInUI.Instance.Screens[1].gameObject.SetActive(false);
                    }

                    GameDisplayInUI.Instance.SetMultiDisplayActive(false);
                }
                else
                {
                    if (privatePart.Count != 2)
                    {
                        throw new NotImplementedException("Support for more than 2 players is not implemented.");
                    }

                    int num = i + 1;
                    if (self.RenderInImage)
                    {
                        splitRect.position = ((i != 0) ? new Vector2(0.5f, 0f) : Vector2.zero);
                        splitRect.size     = new Vector2(0.5f, 1f);
                    }
                    else
                    {
                        splitRect.position = new Vector2(0.5f * (float)((i != 0) ? 1 : -1), 0f);
                        splitRect.size     = Vector2.one;
                    }

                    foV = OptionManager.Instance.GetFoVSplit(i);
                    default_OFFSET.z = -2.5f;
                    zero2.x          = -0.5f;
                    zero.x           = (float)((num % 2 != 1) ? -1 : 1) * 0.5f;
                    if (self.RenderInImage)
                    {
                        GameDisplayInUI.Instance.Screens[1].gameObject.SetActive(true);
                    }
                }

                CameraSettings cameraSettings;
                cameraSettings.FoV         = foV;
                cameraSettings.SplitRect   = splitRect;
                cameraSettings.Offset      = default_OFFSET;
                cameraSettings.CameraDepth = 2 * i;
                cameraSettings.Image       = rawImage;
                splitPlayer.RefreshSplitScreen(zero, zero2, cameraSettings);
            }

            if (moveGlobalUiToPlayer1)
            {
                Vector2 zero3 = Vector2.zero;
                Vector2 zero4 = Vector2.zero;
                if (self.LocalPlayers.Count == 2)
                {
                    zero4.x = -0.5f;
                    zero3.x = 0.5f;
                }

                Vector2     vector           = Vector2.Scale(zero4, MenuManager.Instance.ScreenSize);
                Vector2     anchoredPosition = Vector2.Scale(zero3, vector);
                LoadingFade privatePart2     = Utils.GetPrivatePart <LoadingFade, MenuManager>(MenuManager.Instance, "m_masterLoading");
                if (privatePart2 != null)
                {
                    RectTransform componentInChildren = privatePart2.GetComponentInChildren <RectTransform>();
                    if (componentInChildren != null)
                    {
                        componentInChildren.sizeDelta        = vector;
                        componentInChildren.anchoredPosition = anchoredPosition;
                    }
                }

                ProloguePanel privatePart3 = Utils.GetPrivatePart <ProloguePanel, MenuManager>(MenuManager.Instance, "m_prologueScreen");
                if (privatePart3 != null)
                {
                    RectTransform rectTransform = privatePart3.RectTransform;
                    rectTransform.sizeDelta        = vector;
                    rectTransform.anchoredPosition = anchoredPosition;
                }
            }
        }
Example #12
0
        // Token: 0x06000009 RID: 9 RVA: 0x000023A0 File Offset: 0x000005A0
        public static void SplitScreenManager_DelayedRefreshSplitScreen_Horizontal(On.SplitScreenManager.orig_DelayedRefreshSplitScreen orig, SplitScreenManager self)
        {
            self.CurrentSplitType = SplitScreenManager.SplitType.Horizontal;
            orig(self);
            if (moveGlobalUiToPlayer1)
            {
                Vector2 zero  = Vector2.zero;
                Vector2 zero2 = Vector2.zero;
                if (self.LocalPlayers.Count == 2)
                {
                    zero2.y = -0.5f;
                    zero.y  = -0.5f;
                }

                Vector2     vector           = Vector2.Scale(zero2, MenuManager.Instance.ScreenSize);
                Vector2     anchoredPosition = Vector2.Scale(zero, vector);
                LoadingFade privatePart      = Utils.GetPrivatePart <LoadingFade, MenuManager>(MenuManager.Instance, "m_masterLoading");
                if (privatePart != null)
                {
                    RectTransform componentInChildren = privatePart.GetComponentInChildren <RectTransform>();
                    if (componentInChildren != null)
                    {
                        componentInChildren.sizeDelta        = vector;
                        componentInChildren.anchoredPosition = anchoredPosition;
                    }
                }

                ProloguePanel privatePart2 = Utils.GetPrivatePart <ProloguePanel, MenuManager>(MenuManager.Instance, "m_prologueScreen");
                if (privatePart2 != null)
                {
                    RectTransform rectTransform = privatePart2.RectTransform;
                    rectTransform.sizeDelta        = vector;
                    rectTransform.anchoredPosition = anchoredPosition;
                }
            }
        }
Example #13
0
        public static void SplitScreenManager_DelayedRefreshSplitScreen(On.SplitScreenManager.orig_DelayedRefreshSplitScreen orig, SplitScreenManager self)
        {
            if (self.CurrentSplitType == SplitScreenManager.SplitType.Horizontal)
            {
                SplitScreenManager_DelayedRefreshSplitScreen_Horizontal(orig, self);
            }
            else if (self.CurrentSplitType == SplitScreenManager.SplitType.Vertical)
            {
                SplitScreenManager_DelayedRefreshSplitScreen_Vertical(orig, self);
            }

            CanvasScaler[] componentsInChildren = MenuManager.Instance.GetComponentsInChildren <CanvasScaler>();
            for (int i = 0; i < componentsInChildren.Length; i++)
            {
                componentsInChildren[i].matchWidthOrHeight = ((Screen.height > Screen.width) ? 0f : 1f);
            }

            Canvas[] componentsInChildren2 = MenuManager.Instance.GetComponentsInChildren <Canvas>();
            for (int i = 0; i < componentsInChildren2.Length; i++)
            {
                componentsInChildren2[i].scaleFactor = scaleFactor;
            }
        }