示例#1
0
 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;
        }
示例#3
0
        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");
            }
        }
示例#4
0
 public AttachKeyboardUI(MultipleKeyboardManager keyboardManager)
 {
     this.keyboardManager = keyboardManager;
 }