public static KeyboardState Postfix(KeyboardState m, KeyboardState __result) { if (MultipleKeyboardManager.HasAttachedKeyboard()) { return(MultipleKeyboardManager.GetAttachedKeyboardState() ?? default(KeyboardState)); } else if (!Utility.TrueIsWindowActive()) { return(default(KeyboardState)); } else { return(__result); } }
public UIController(MultipleKeyboardManager keyboardManager, MultipleMiceManager miceManager) { this.keyboardManager = keyboardManager; this.miceManager = miceManager; deviceSelectorInterface = new UserInterface(); attachMouseUI = new AttachMouseUI(miceManager); //attachMouseUI.Activate(); attachMouseUI.IsActive = false; attachMouseUI.OnDeactivated += delegate { mainIsActive = false; }; lockMouseUI = new LockMouseUI(); //lockMouseUI.Activate(); lockMouseUI.IsActive = false; lockMouseUI.OnDeactivated += delegate { deviceSelectorInterface.SetState(attachMouseUI); attachMouseUI.IsActive = true; attachMouseUI.ShouldLockMouse = lockMouseUI.ShouldLock; }; attachKeyboardUI = new AttachKeyboardUI(keyboardManager); //attachKeyboardUI.Activate(); attachKeyboardUI.IsActive = false; attachKeyboardUI.OnDeactivated += delegate { deviceSelectorInterface.SetState(lockMouseUI); lockMouseUI.IsActive = true; }; gamePadSelectorUI = new GamePadSelectorUI(); //gamePadSelectorUI.Activate(); gamePadSelectorUI.IsActive = false; gamePadSelectorUI.OnDeactivated += delegate { if (PlayerIndexController.Index == null) { deviceSelectorInterface.SetState(attachKeyboardUI); attachKeyboardUI.IsActive = true; } }; deviceSelectorInterface.SetState(gamePadSelectorUI); deviceSelectorInterface.IsVisible = false; mainIsActive = false; }
public override void Load() { Monitor.Log("Loading..."); Events = new Events(); //Disables FPS throttling when window is unfocused Terraria.Main.instance.InactiveSleepTime = new TimeSpan(0); //Make sure it doesnt start in borderless fullscreen Terraria.Main.screenBorderless = false; SplitScreen.Events.QuitGame += (o, e) => Terraria.Main.screenBorderless = false; toggleBorders = new ToggleBorders(); SplitScreen.Events.SecondaryLoad += delegate { //Multiple keyboard/mice keyboardManager = new MultipleKeyboardManager(); miceManager = new MultipleMiceManager(); miceManager.RegisterMice(); uiController = new UIController(keyboardManager, miceManager); Events.PreUpdate += OnPreUpdate; }; SplitScreen.Events.JoinedServer += delegate { uiController.ActivateUI(); keyboardManager.Initialize(); }; try { HarmonyInstance harmony = HarmonyInstance.Create("me.ilyaki.terrariaSplitScreen"); //Run AFTER subscribing to Events harmony.PatchAll(Assembly.GetExecutingAssembly()); }catch (Exception) { Monitor.Log("Could not patch with Harmony. This is probably because of a mod reload instead of a fresh restart"); } }
public AttachKeyboardUI(MultipleKeyboardManager keyboardManager) { this.keyboardManager = keyboardManager; }