public override bool HandleCmdMessage(ICommonSession?session, InputCmdMessage message)
            {
                if (message is not FullInputCmdMessage full)
                {
                    return(false);
                }

                Get <SharedMoverSystem>().HandleDirChange(session, _dir, message.SubTick, full.State == BoundKeyState.Down);
                return(false);
            }
Esempio n. 2
0
            public override bool HandleCmdMessage(ICommonSession?session, InputCmdMessage message)
            {
                if (!(message is FullInputCmdMessage full))
                {
                    return(false);
                }

                HandleRunChange(session, full.SubTick, full.State == BoundKeyState.Down);
                return(false);
            }
Esempio n. 3
0
            public override bool HandleCmdMessage(ICommonSession?session, InputCmdMessage message)
            {
                if (message is not FullInputCmdMessage full)
                {
                    return(false);
                }

                _handler.Invoke(session, _button, full.State == BoundKeyState.Down);
                return(false);
            }
        private bool HandleInputMessage(ICommonSession session, InputCmdMessage message)
        {
            if (!(message is FullInputCmdMessage msg))
            {
                return(false);
            }

            void SendMsg(BoundKeyFunction function, BoundKeyState state)
            {
                var functionId = _inputManager.NetworkBindMap.KeyFunctionID(function);

                var sendMsg = new FullInputCmdMessage(msg.Tick, functionId, state,
                                                      msg.Coordinates, msg.ScreenCoordinates, msg.Uid);

                _inputSystem.HandleInputCommand(session, function, sendMsg);
            }

            // If we are not in combat mode, relay it as a regular Use instead.
            if (!IsInCombatMode())
            {
                SendMsg(EngineKeyFunctions.Use, msg.State);
                return(true);
            }

            if (msg.State == BoundKeyState.Down)
            {
                UseOrAttackIsDown = true;
                _timeHeld         = 0;
                return(true);
            }

            // Up.
            if (UseOrAttackIsDown && _timeHeld >= AttackTimeThreshold)
            {
                // Attack.
                SendMsg(ContentKeyFunctions.Attack, BoundKeyState.Down);
                SendMsg(ContentKeyFunctions.Attack, BoundKeyState.Up);
            }
            else
            {
                // Use.
                SendMsg(EngineKeyFunctions.Use, BoundKeyState.Down);
                SendMsg(EngineKeyFunctions.Use, BoundKeyState.Up);
            }

            UseOrAttackIsDown = false;

            return(true);
        }
Esempio n. 5
0
        private void InputMessageHandler(InputCmdMessage message, EntitySessionEventArgs eventArgs)
        {
            if (!(message is FullInputCmdMessage msg))
            {
                return;
            }

            //Client Sanitization: out of bounds functionID
            if (!_playerManager.KeyMap.TryGetKeyFunction(msg.InputFunctionId, out var function))
            {
                return;
            }

            //Client Sanitization: bad enum key state value
            if (!Enum.IsDefined(typeof(BoundKeyState), msg.State))
            {
                return;
            }

            var session = (IPlayerSession)eventArgs.SenderSession;

            if (_lastProcessedInputCmd[session] < msg.InputSequence)
            {
                _lastProcessedInputCmd[session] = msg.InputSequence;
            }

            // set state, only bound key functions get state changes
            var states = GetInputStates(session);

            states.SetState(function, msg.State);

            // route the cmdMessage to the proper bind
            //Client Sanitization: unbound command, just ignore
            foreach (var handler in BindRegistry.GetHandlers(function))
            {
                if (handler.HandleCmdMessage(session, msg))
                {
                    return;
                }
            }
        }
            public override bool HandleCmdMessage(ICommonSession?session, InputCmdMessage message)
            {
                if (!(message is FullInputCmdMessage msg))
                {
                    return(false);
                }

                switch (msg.State)
                {
                case BoundKeyState.Up:
                    Disabled(session);
                    return(Handle);

                case BoundKeyState.Down:
                    Enabled(session);
                    return(Handle);
                }

                //Client Sanitization: unknown key state, just ignore
                return(false);
            }
Esempio n. 7
0
        private void InputMessageHandler(InputCmdMessage message)
        {
            var channel = message.NetChannel;

            if (channel == null)
            {
                return;
            }

            if (!(message is FullInputCmdMessage msg))
            {
                return;
            }

            //Client Sanitization: out of bounds functionID
            if (!_playerManager.KeyMap.TryGetKeyFunction(msg.InputFunctionId, out var function))
            {
                return;
            }

            var session = _playerManager.GetSessionByChannel(channel);

            //Client Sanitization: bad enum key state value
            if (!Enum.IsDefined(typeof(BoundKeyState), msg.State))
            {
                return;
            }

            // route the cmdMessage to the proper bind
            //Client Sanitization: unbound command, just ignore
            if (_bindMap.TryGetHandler(function, out var command))
            {
                // set state, only bound key functions get state changes
                var states = GetInputStates(session);
                states.SetState(function, msg.State);

                command.HandleCmdMessage(session, msg);
            }
        }
 public override bool HandleCmdMessage(ICommonSession?session, InputCmdMessage message)
 {
     return(false);
 }
 public override bool HandleCmdMessage(ICommonSession session, InputCmdMessage message)
 {
     return(_combatModeSystem.HandleInputMessage(session, message));
 }
Esempio n. 10
0
 public abstract bool HandleCmdMessage(ICommonSession?session, InputCmdMessage message);