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); }
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); }
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); }
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); }
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)); }
public abstract bool HandleCmdMessage(ICommonSession?session, InputCmdMessage message);