1
0

AcceptFactionInviteCommand.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using Content.Shared.Civ14.CivFactions;
  2. using JetBrains.Annotations;
  3. using Robust.Shared.Console;
  4. using Robust.Shared.GameObjects;
  5. using Robust.Shared.IoC;
  6. using Robust.Shared.Network;
  7. namespace Content.Client.Commands
  8. {
  9. [UsedImplicitly]
  10. public sealed class AcceptFactionInviteCommand : IConsoleCommand
  11. {
  12. [Dependency] private readonly IEntityManager _entityManager = default!;
  13. public string Command => "acceptfactioninvite";
  14. public string Description => "Accepts an invitation to join a faction.";
  15. public string Help => $"Usage: {Command} \"<faction_name>\"";
  16. public void Execute(IConsoleShell shell, string argStr, string[] args)
  17. {
  18. if (args.Length != 1)
  19. {
  20. shell.WriteError("Invalid number of arguments.");
  21. shell.WriteLine(Help);
  22. return;
  23. }
  24. var factionName = args[0];
  25. var inviterUserIdStr = args[1];
  26. if (string.IsNullOrWhiteSpace(factionName))
  27. {
  28. shell.WriteError("Faction name cannot be empty.");
  29. return;
  30. }
  31. if (!Guid.TryParse(inviterUserIdStr, out var inviterGuid))
  32. {
  33. shell.WriteError($"Invalid inviter user ID format: {inviterUserIdStr}");
  34. return;
  35. }
  36. var inviterNetId = new NetUserId(inviterGuid);
  37. // Create and raise the network event to the server
  38. // AcceptFactionInviteEvent is defined in Content.Shared.Civ14.CivFactions
  39. // The server (CivFactionsSystem) handles this event.
  40. var acceptEvent = new AcceptFactionInviteEvent(factionName, inviterNetId);
  41. _entityManager.RaisePredictiveEvent(acceptEvent);
  42. shell.WriteLine($"Sent request to join faction: '{factionName}' (invited by: {inviterNetId}).");
  43. }
  44. }
  45. }