//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; } } }
public static void Prefix(SplitScreenManager __instance) { if (__instance.LocalPlayerCount == 2) { MinimapScript.P1_OnSplitEnd(); } }
static void SplitScreenManager_Awake_Post(SplitScreenManager __instance) { #region quit if (!_extraGamepadQuickslots) { return; } #endregion CharacterUI charUIPrefab = __instance.m_charUIPrefab; GameObject.DontDestroyOnLoad(charUIPrefab); SetupQuickslotPanels(charUIPrefab); }
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); } }
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()); } }
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; } }
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); }
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; } } }
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); }
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; } } }
// 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; } } }
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; } }