AdminTestArenaSystem.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Robust.Shared.EntitySerialization.Systems;
  2. using Robust.Shared.Network;
  3. using Robust.Shared.Player;
  4. using Robust.Shared.Utility;
  5. namespace Content.Server.Administration.Systems;
  6. /// <summary>
  7. /// This handles the administrative test arena maps, and loading them.
  8. /// </summary>
  9. public sealed class AdminTestArenaSystem : EntitySystem
  10. {
  11. [Dependency] private readonly MapLoaderSystem _loader = default!;
  12. [Dependency] private readonly MetaDataSystem _metaDataSystem = default!;
  13. [Dependency] private readonly SharedMapSystem _maps = default!;
  14. public const string ArenaMapPath = "/Maps/Test/admin_test_arena.yml";
  15. public Dictionary<NetUserId, EntityUid> ArenaMap { get; private set; } = new();
  16. public Dictionary<NetUserId, EntityUid?> ArenaGrid { get; private set; } = new();
  17. public (EntityUid Map, EntityUid? Grid) AssertArenaLoaded(ICommonSession admin)
  18. {
  19. if (ArenaMap.TryGetValue(admin.UserId, out var arenaMap) && !Deleted(arenaMap) && !Terminating(arenaMap))
  20. {
  21. if (ArenaGrid.TryGetValue(admin.UserId, out var arenaGrid) && !Deleted(arenaGrid) && !Terminating(arenaGrid.Value))
  22. {
  23. return (arenaMap, arenaGrid);
  24. }
  25. ArenaGrid[admin.UserId] = null;
  26. return (arenaMap, null);
  27. }
  28. var path = new ResPath(ArenaMapPath);
  29. var mapUid = _maps.CreateMap(out var mapId);
  30. if (!_loader.TryLoadGrid(mapId, path, out var grid))
  31. {
  32. QueueDel(mapUid);
  33. throw new Exception($"Failed to load admin arena");
  34. }
  35. ArenaMap[admin.UserId] = mapUid;
  36. _metaDataSystem.SetEntityName(mapUid, $"ATAM-{admin.Name}");
  37. ArenaGrid[admin.UserId] = grid.Value.Owner;
  38. _metaDataSystem.SetEntityName(grid.Value.Owner, $"ATAG-{admin.Name}");
  39. return (mapUid, grid.Value.Owner);
  40. }
  41. }