Пример #1
0
        protected override void Update(GameTime gameTime)
        {
            KStateNow            = Keyboard.GetState();
            CurrentlyPressedKeys = KStateNow.GetPressedKeys();

            foreach (Keys k in FramePressedKeys)
            {
                Events.InvokeKeyPressed(k);
            }

            if (KStateNow != KStatePrior)
            {
                Events.InvokeKeyboardChanged(KStateNow);
                KStatePrior = KStateNow;
            }

            if (Game1.activeClickableMenu != null && Game1.activeClickableMenu != PreviousActiveMenu)
            {
                Events.InvokeMenuChanged(Game1.activeClickableMenu);
                PreviousActiveMenu = Game1.activeClickableMenu;
            }

            if (Game1.locations.GetHash() != PreviousGameLocations)
            {
                Events.InvokeLocationsChanged(Game1.locations);
                PreviousGameLocations = Game1.locations.GetHash();
            }

            if (Game1.currentLocation != PreviousGameLocation)
            {
                Events.InvokeCurrentLocationChanged(Game1.currentLocation);
                PreviousGameLocation = Game1.currentLocation;
            }

            if (CurrentLocation != null)
            {
                CurrentLocation.update(gameTime);
            }

            base.Update(gameTime);
            Events.InvokeUpdateTick();

            PreviouslyPressedKeys = CurrentlyPressedKeys;
        }
Пример #2
0
        private void CheckControlChanges()
        {
            KStateNow            = Keyboard.GetState();
            CurrentlyPressedKeys = KStateNow.GetPressedKeys();

            MStateNow = Mouse.GetState();

            foreach (var k in FramePressedKeys)
            {
                ControlEvents.InvokeKeyPressed(k);
            }

            foreach (var k in FrameReleasedKeys)
            {
                ControlEvents.InvokeKeyReleased(k);
            }

            for (var i = PlayerIndex.One; i <= PlayerIndex.Four; i++)
            {
                var buttons = GetFramePressedButtons(i);
                foreach (var b in buttons)
                {
                    if (b == Buttons.LeftTrigger || b == Buttons.RightTrigger)
                    {
                        ControlEvents.InvokeTriggerPressed(i, b, b == Buttons.LeftTrigger ? GamePad.GetState(i).Triggers.Left : GamePad.GetState(i).Triggers.Right);
                    }
                    else
                    {
                        ControlEvents.InvokeButtonPressed(i, b);
                    }
                }
            }

            for (PlayerIndex i = PlayerIndex.One; i <= PlayerIndex.Four; i++)
            {
                foreach (Buttons b in GetFrameReleasedButtons(i))
                {
                    if (b == Buttons.LeftTrigger || b == Buttons.RightTrigger)
                    {
                        ControlEvents.InvokeTriggerReleased(i, b, b == Buttons.LeftTrigger ? GamePad.GetState(i).Triggers.Left : GamePad.GetState(i).Triggers.Right);
                    }
                    else
                    {
                        ControlEvents.InvokeButtonReleased(i, b);
                    }
                }
            }


            if (KStateNow != KStatePrior)
            {
                ControlEvents.InvokeKeyboardChanged(KStatePrior, KStateNow);
                KStatePrior = KStateNow;
            }

            if (MStateNow != MStatePrior)
            {
                ControlEvents.InvokeMouseChanged(MStatePrior, MStateNow);
                MStatePrior = MStateNow;
            }

            PreviouslyPressedKeys = CurrentlyPressedKeys;
            for (PlayerIndex i = PlayerIndex.One; i <= PlayerIndex.Four; i++)
            {
                PreviouslyPressedButtons[(int)i] = GetButtonsDown(i);
            }
        }