Beispiel #1
0
        private void OnKeyBindStateChanged(ViewportBoundKeyEventArgs args)
        {
            if (_baseClient.RunLevel != ClientRunLevel.InGame)
            {
                return;
            }

            if (!_entitySystemManager.TryGetEntitySystem <InputSystem>(out var inputSystem))
            {
                return;
            }

            var keyArgs       = args.KeyEventArgs;
            var inputFunction = _inputManager.NetworkBindMap.KeyFunctionID(keyArgs.Function);

            EntityCoordinates coords = EntityCoordinates.Invalid;
            EntityUid         entity = EntityUid.Invalid;

            if (args.Viewport is ScalingViewport viewport)
            {
                MapCoordinates mapCoords = viewport.ScreenToMap(keyArgs.PointerLocation.Position);

                entity = GetEntityUnderMouse(viewport, keyArgs.PointerLocation.Position, mapCoords);
                coords = _mapManager.TryFindGridAt(mapCoords, out var grid) ? grid.MapToGrid(mapCoords) :
                         EntityCoordinates.FromMap(_mapManager, mapCoords);
            }

            var message = new FullInputCmdMessage(_gameTiming.CurTick, _gameTiming.TickFraction, inputFunction, keyArgs.State, coords, keyArgs.PointerLocation, entity);

            if (inputSystem.HandleInputCommand(_playerManager.LocalPlayer.Session, keyArgs.Function, message))
            {
                keyArgs.Handle();
            }
        }
Beispiel #2
0
        private void OnKeyBindStateChanged(ViewportBoundKeyEventArgs args)
        {
            if (_baseClient.RunLevel < ClientRunLevel.InGame)
            {
                return;
            }

            if (!_entitySystemManager.TryGetEntitySystem <InputSystem>(out var inputSystem))
            {
                return;
            }

            var message = new FullInputCmdMessage(_gameTiming.CurTick, _gameTiming.TickFraction, _inputManager.NetworkBindMap.KeyFunctionID(args.KeyEventArgs.Function), args.KeyEventArgs.State, EntityCoordinates.Invalid, args.KeyEventArgs.PointerLocation, EntityUid.Invalid);

            if (inputSystem.HandleInputCommand(_playerManager.LocalPlayer !.Session, args.KeyEventArgs.Function, message))
            {
                args.KeyEventArgs.Handle();
            }
        }