| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- using Content.Server.Players.PlayTimeTracking;
- using Content.Shared.Administration;
- using Content.Shared.Players.PlayTimeTracking;
- using Robust.Server.Player;
- using Robust.Shared.Console;
- namespace Content.Server.Administration.Commands;
- [AdminCommand(AdminFlags.Moderator)]
- public sealed class PlayTimeAddOverallCommand : IConsoleCommand
- {
- [Dependency] private readonly IPlayerManager _playerManager = default!;
- [Dependency] private readonly PlayTimeTrackingManager _playTimeTracking = default!;
- public string Command => "playtime_addoverall";
- public string Description => Loc.GetString("cmd-playtime_addoverall-desc");
- public string Help => Loc.GetString("cmd-playtime_addoverall-help", ("command", Command));
- public async void Execute(IConsoleShell shell, string argStr, string[] args)
- {
- if (args.Length != 2)
- {
- shell.WriteError(Loc.GetString("cmd-playtime_addoverall-error-args"));
- return;
- }
- if (!int.TryParse(args[1], out var minutes))
- {
- shell.WriteError(Loc.GetString("parse-minutes-fail", ("minutes", args[1])));
- return;
- }
- if (!_playerManager.TryGetSessionByUsername(args[0], out var player))
- {
- shell.WriteError(Loc.GetString("parse-session-fail", ("username", args[0])));
- return;
- }
- _playTimeTracking.AddTimeToOverallPlaytime(player, TimeSpan.FromMinutes(minutes));
- var overall = _playTimeTracking.GetOverallPlaytime(player);
- shell.WriteLine(Loc.GetString(
- "cmd-playtime_addoverall-succeed",
- ("username", args[0]),
- ("time", overall)));
- }
- public CompletionResult GetCompletion(IConsoleShell shell, string[] args)
- {
- if (args.Length == 1)
- return CompletionResult.FromHintOptions(CompletionHelper.SessionNames(),
- Loc.GetString("cmd-playtime_addoverall-arg-user"));
- if (args.Length == 2)
- return CompletionResult.FromHint(Loc.GetString("cmd-playtime_addoverall-arg-minutes"));
- return CompletionResult.Empty;
- }
- }
- [AdminCommand(AdminFlags.Moderator)]
- public sealed class PlayTimeAddRoleCommand : IConsoleCommand
- {
- [Dependency] private readonly IPlayerManager _playerManager = default!;
- [Dependency] private readonly PlayTimeTrackingManager _playTimeTracking = default!;
- public string Command => "playtime_addrole";
- public string Description => Loc.GetString("cmd-playtime_addrole-desc");
- public string Help => Loc.GetString("cmd-playtime_addrole-help", ("command", Command));
- public async void Execute(IConsoleShell shell, string argStr, string[] args)
- {
- if (args.Length != 3)
- {
- shell.WriteError(Loc.GetString("cmd-playtime_addrole-error-args"));
- return;
- }
- var userName = args[0];
- if (!_playerManager.TryGetSessionByUsername(userName, out var player))
- {
- shell.WriteError(Loc.GetString("parse-session-fail", ("username", userName)));
- return;
- }
- var role = args[1];
- var m = args[2];
- if (!int.TryParse(m, out var minutes))
- {
- shell.WriteError(Loc.GetString("parse-minutes-fail", ("minutes", minutes)));
- return;
- }
- _playTimeTracking.AddTimeToTracker(player, role, TimeSpan.FromMinutes(minutes));
- var time = _playTimeTracking.GetPlayTimeForTracker(player, role);
- shell.WriteLine(Loc.GetString("cmd-playtime_addrole-succeed",
- ("username", userName),
- ("role", role),
- ("time", time)));
- }
- public CompletionResult GetCompletion(IConsoleShell shell, string[] args)
- {
- if (args.Length == 1)
- {
- return CompletionResult.FromHintOptions(
- CompletionHelper.SessionNames(players: _playerManager),
- Loc.GetString("cmd-playtime_addrole-arg-user"));
- }
- if (args.Length == 2)
- {
- return CompletionResult.FromHintOptions(
- CompletionHelper.PrototypeIDs<PlayTimeTrackerPrototype>(),
- Loc.GetString("cmd-playtime_addrole-arg-role"));
- }
- if (args.Length == 3)
- return CompletionResult.FromHint(Loc.GetString("cmd-playtime_addrole-arg-minutes"));
- return CompletionResult.Empty;
- }
- }
- [AdminCommand(AdminFlags.Moderator)]
- public sealed class PlayTimeGetOverallCommand : IConsoleCommand
- {
- [Dependency] private readonly IPlayerManager _playerManager = default!;
- [Dependency] private readonly PlayTimeTrackingManager _playTimeTracking = default!;
- public string Command => "playtime_getoverall";
- public string Description => Loc.GetString("cmd-playtime_getoverall-desc");
- public string Help => Loc.GetString("cmd-playtime_getoverall-help", ("command", Command));
- public async void Execute(IConsoleShell shell, string argStr, string[] args)
- {
- if (args.Length != 1)
- {
- shell.WriteError(Loc.GetString("cmd-playtime_getoverall-error-args"));
- return;
- }
- var userName = args[0];
- if (!_playerManager.TryGetSessionByUsername(userName, out var player))
- {
- shell.WriteError(Loc.GetString("parse-session-fail", ("username", userName)));
- return;
- }
- var value = _playTimeTracking.GetOverallPlaytime(player);
- shell.WriteLine(Loc.GetString(
- "cmd-playtime_getoverall-success",
- ("username", userName),
- ("time", value)));
- }
- public CompletionResult GetCompletion(IConsoleShell shell, string[] args)
- {
- if (args.Length == 1)
- {
- return CompletionResult.FromHintOptions(
- CompletionHelper.SessionNames(players: _playerManager),
- Loc.GetString("cmd-playtime_getoverall-arg-user"));
- }
- return CompletionResult.Empty;
- }
- }
- [AdminCommand(AdminFlags.Moderator)]
- public sealed class PlayTimeGetRoleCommand : IConsoleCommand
- {
- [Dependency] private readonly IPlayerManager _playerManager = default!;
- [Dependency] private readonly PlayTimeTrackingManager _playTimeTracking = default!;
- public string Command => "playtime_getrole";
- public string Description => Loc.GetString("cmd-playtime_getrole-desc");
- public string Help => Loc.GetString("cmd-playtime_getrole-help", ("command", Command));
- public async void Execute(IConsoleShell shell, string argStr, string[] args)
- {
- if (args.Length is not (1 or 2))
- {
- shell.WriteLine(Loc.GetString("cmd-playtime_getrole-error-args"));
- return;
- }
- var userName = args[0];
- if (!_playerManager.TryGetSessionByUsername(userName, out var session))
- {
- shell.WriteError(Loc.GetString("parse-session-fail", ("username", userName)));
- return;
- }
- if (args.Length == 1)
- {
- var timers = _playTimeTracking.GetTrackerTimes(session);
- if (timers.Count == 0)
- {
- shell.WriteLine(Loc.GetString("cmd-playtime_getrole-no"));
- return;
- }
- foreach (var (role, time) in timers)
- {
- shell.WriteLine(Loc.GetString("cmd-playtime_getrole-role", ("role", role), ("time", time)));
- }
- }
- if (args.Length >= 2)
- {
- if (args[1] == "Overall")
- {
- var timer = _playTimeTracking.GetOverallPlaytime(session);
- shell.WriteLine(Loc.GetString("cmd-playtime_getrole-overall", ("time", timer)));
- return;
- }
- var time = _playTimeTracking.GetPlayTimeForTracker(session, args[1]);
- shell.WriteLine(Loc.GetString("cmd-playtime_getrole-succeed", ("username", session.Name),
- ("time", time)));
- }
- }
- public CompletionResult GetCompletion(IConsoleShell shell, string[] args)
- {
- if (args.Length == 1)
- {
- return CompletionResult.FromHintOptions(
- CompletionHelper.SessionNames(players: _playerManager),
- Loc.GetString("cmd-playtime_getrole-arg-user"));
- }
- if (args.Length == 2)
- {
- return CompletionResult.FromHintOptions(
- CompletionHelper.PrototypeIDs<PlayTimeTrackerPrototype>(),
- Loc.GetString("cmd-playtime_getrole-arg-role"));
- }
- return CompletionResult.Empty;
- }
- }
- /// <summary>
- /// Saves the timers for a particular player immediately
- /// </summary>
- [AdminCommand(AdminFlags.Moderator)]
- public sealed class PlayTimeSaveCommand : IConsoleCommand
- {
- [Dependency] private readonly IPlayerManager _playerManager = default!;
- [Dependency] private readonly PlayTimeTrackingManager _playTimeTracking = default!;
- public string Command => "playtime_save";
- public string Description => Loc.GetString("cmd-playtime_save-desc");
- public string Help => Loc.GetString("cmd-playtime_save-help", ("command", Command));
- public async void Execute(IConsoleShell shell, string argStr, string[] args)
- {
- if (args.Length != 1)
- {
- shell.WriteLine(Loc.GetString("cmd-playtime_save-error-args"));
- return;
- }
- var name = args[0];
- if (!_playerManager.TryGetSessionByUsername(name, out var pSession))
- {
- shell.WriteError(Loc.GetString("parse-session-fail", ("username", name)));
- return;
- }
- _playTimeTracking.SaveSession(pSession);
- shell.WriteLine(Loc.GetString("cmd-playtime_save-succeed", ("username", name)));
- }
- public CompletionResult GetCompletion(IConsoleShell shell, string[] args)
- {
- if (args.Length == 1)
- {
- return CompletionResult.FromHintOptions(
- CompletionHelper.SessionNames(players: _playerManager),
- Loc.GetString("cmd-playtime_save-arg-user"));
- }
- return CompletionResult.Empty;
- }
- }
- [AdminCommand(AdminFlags.Debug)]
- public sealed class PlayTimeFlushCommand : IConsoleCommand
- {
- [Dependency] private readonly IPlayerManager _playerManager = default!;
- [Dependency] private readonly PlayTimeTrackingManager _playTimeTracking = default!;
- public string Command => "playtime_flush";
- public string Description => Loc.GetString("cmd-playtime_flush-desc");
- public string Help => Loc.GetString("cmd-playtime_flush-help", ("command", Command));
- public void Execute(IConsoleShell shell, string argStr, string[] args)
- {
- if (args.Length is not (0 or 1))
- {
- shell.WriteError(Loc.GetString("cmd-playtime_flush-error-args"));
- return;
- }
- if (args.Length == 0)
- {
- _playTimeTracking.FlushAllTrackers();
- return;
- }
- var name = args[0];
- if (!_playerManager.TryGetSessionByUsername(name, out var pSession))
- {
- shell.WriteError(Loc.GetString("parse-session-fail", ("username", name)));
- return;
- }
- _playTimeTracking.FlushTracker(pSession);
- }
- public CompletionResult GetCompletion(IConsoleShell shell, string[] args)
- {
- if (args.Length == 1)
- {
- return CompletionResult.FromHintOptions(
- CompletionHelper.SessionNames(players: _playerManager),
- Loc.GetString("cmd-playtime_flush-arg-user"));
- }
- return CompletionResult.Empty;
- }
- }
|