SetAdminOOC.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using Content.Server.Database;
  2. using Content.Server.Preferences.Managers;
  3. using Content.Shared.Administration;
  4. using Robust.Shared.Console;
  5. namespace Content.Server.Administration.Commands
  6. {
  7. [AdminCommand(AdminFlags.NameColor)]
  8. internal sealed class SetAdminOOC : IConsoleCommand
  9. {
  10. public string Command => "setadminooc";
  11. public string Description => Loc.GetString("set-admin-ooc-command-description", ("command", Command));
  12. public string Help => Loc.GetString("set-admin-ooc-command-help-text", ("command", Command));
  13. public void Execute(IConsoleShell shell, string argStr, string[] args)
  14. {
  15. if (shell.Player == null)
  16. {
  17. shell.WriteError(Loc.GetString("shell-cannot-run-command-from-server"));
  18. return;
  19. }
  20. if (args.Length < 1)
  21. return;
  22. var colorArg = string.Join(" ", args).Trim();
  23. if (string.IsNullOrEmpty(colorArg))
  24. return;
  25. var color = Color.TryFromHex(colorArg);
  26. if (!color.HasValue)
  27. {
  28. shell.WriteError(Loc.GetString("shell-invalid-color-hex"));
  29. return;
  30. }
  31. var userId = shell.Player.UserId;
  32. // Save the DB
  33. var dbMan = IoCManager.Resolve<IServerDbManager>();
  34. dbMan.SaveAdminOOCColorAsync(userId, color.Value);
  35. // Update the cached preference
  36. var prefManager = IoCManager.Resolve<IServerPreferencesManager>();
  37. var prefs = prefManager.GetPreferences(userId);
  38. prefs.AdminOOCColor = color.Value;
  39. }
  40. }
  41. }