using System.Linq;
using Content.Server.Administration.Logs;
using Content.Server.Pointing.Components;
+using Content.Shared.CCVar;
using Content.Shared.Database;
using Content.Shared.Examine;
using Content.Shared.Eye;
using JetBrains.Annotations;
using Robust.Server.GameObjects;
using Robust.Server.Player;
+using Robust.Shared.Configuration;
using Robust.Shared.Enums;
using Robust.Shared.GameStates;
using Robust.Shared.Input.Binding;
[UsedImplicitly]
internal sealed class PointingSystem : SharedPointingSystem
{
+ [Dependency] private readonly IConfigurationManager _config = default!;
[Dependency] private readonly IReplayRecordingManager _replay = default!;
[Dependency] private readonly IMapManager _mapManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
[Dependency] private readonly ExamineSystemShared _examine = default!;
- private static readonly TimeSpan PointDelay = TimeSpan.FromSeconds(0.5f);
+ private TimeSpan _pointDelay = TimeSpan.FromSeconds(0.5f);
/// <summary>
/// A dictionary of players to the last time that they
}
if (_pointers.TryGetValue(session, out var lastTime) &&
- _gameTiming.CurTime < lastTime + PointDelay)
+ _gameTiming.CurTime < lastTime + _pointDelay)
{
return false;
}
CommandBinds.Builder
.Bind(ContentKeyFunctions.Point, new PointerInputCmdHandler(TryPoint))
.Register<PointingSystem>();
+
+ Subs.CVar(_config, CCVars.PointingCooldownSeconds, v => _pointDelay = TimeSpan.FromSeconds(v), true);
}
private void OnPointAttempt(PointingAttemptEvent ev, EntitySessionEventArgs args)
public static readonly CVarDef<string> TippyEntity =
CVarDef.Create("tippy.entity", "Tippy", CVar.SERVER | CVar.REPLICATED);
+ /// <summary>
+ /// The number of seconds that must pass for a single entity to be able to point at something again.
+ /// </summary>
+ public static readonly CVarDef<float> PointingCooldownSeconds =
+ CVarDef.Create("pointing.cooldown_seconds", 0.5f, CVar.SERVERONLY);
+
/*
* DEBUG
*/