Fix AdminTestArenaSystem (#11082)

This commit is contained in:
Leon Friedrich
2022-09-07 14:19:26 +12:00
committed by GitHub
parent 60f9d556dc
commit d320ad950b
2 changed files with 19 additions and 10 deletions

View File

@@ -1,4 +1,4 @@
using System.Linq; using System.Linq;
using Robust.Server.Maps; using Robust.Server.Maps;
using Robust.Server.Player; using Robust.Server.Player;
using Robust.Shared.Map; using Robust.Shared.Map;
@@ -17,16 +17,26 @@ public sealed class AdminTestArenaSystem : EntitySystem
public const string ArenaMapPath = "/Maps/Test/admin_test_arena.yml"; public const string ArenaMapPath = "/Maps/Test/admin_test_arena.yml";
public Dictionary<NetUserId, EntityUid> ArenaMap { get; private set; } = new(); public Dictionary<NetUserId, EntityUid> ArenaMap { get; private set; } = new();
public Dictionary<NetUserId, EntityUid> ArenaGrid { get; private set; } = new(); public Dictionary<NetUserId, EntityUid?> ArenaGrid { get; private set; } = new();
public (EntityUid, EntityUid) AssertArenaLoaded(IPlayerSession admin) public (EntityUid Map, EntityUid? Grid) AssertArenaLoaded(IPlayerSession admin)
{ {
if (ArenaMap.TryGetValue(admin.UserId, out var arenaMap) && !Deleted(arenaMap) && !Terminating(arenaMap)) if (ArenaMap.TryGetValue(admin.UserId, out var arenaMap) && !Deleted(arenaMap) && !Terminating(arenaMap))
return (arenaMap, ArenaGrid[admin.UserId]); {
if (ArenaGrid.TryGetValue(admin.UserId, out var arenaGrid) && !Deleted(arenaGrid) && !Terminating(arenaGrid.Value))
{
return (arenaMap, arenaGrid);
}
else
{
ArenaGrid[admin.UserId] = null;
return (arenaMap, null);
}
}
ArenaMap[admin.UserId] = _mapManager.GetMapEntityId(_mapManager.CreateMap()); ArenaMap[admin.UserId] = _mapManager.GetMapEntityId(_mapManager.CreateMap());
var (grids, _) = _mapLoader.LoadMap(Comp<MapComponent>(ArenaMap[admin.UserId]).WorldMap, ArenaMapPath); var (_, grids) = _mapLoader.LoadMap(Comp<MapComponent>(ArenaMap[admin.UserId]).WorldMap, ArenaMapPath);
ArenaGrid[admin.UserId] = grids.First(); ArenaGrid[admin.UserId] = grids.Count == 0 ? null : grids[0];
return (ArenaMap[admin.UserId], ArenaGrid[admin.UserId]); return (ArenaMap[admin.UserId], ArenaGrid[admin.UserId]);
} }

View File

@@ -1,4 +1,3 @@

using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using System.Linq; using System.Linq;
using Content.Server.Administration.Commands; using Content.Server.Administration.Commands;
@@ -376,11 +375,11 @@ public sealed partial class AdminVerbSystem
Text = "Send to test arena", Text = "Send to test arena",
Category = VerbCategory.Tricks, Category = VerbCategory.Tricks,
IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png", IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png",
Act = () => Act = () =>
{ {
var (_, arenaGrid) = _adminTestArenaSystem.AssertArenaLoaded(player); var (mapUid, gridUid) = _adminTestArenaSystem.AssertArenaLoaded(player);
Transform(args.Target).Coordinates = new EntityCoordinates(gridUid ?? mapUid, Vector2.One);
Transform(args.Target).Coordinates = new EntityCoordinates(arenaGrid, Vector2.One);
}, },
Impact = LogImpact.Medium, Impact = LogImpact.Medium,
Message = Loc.GetString("admin-trick-send-to-test-arena-description"), Message = Loc.GetString("admin-trick-send-to-test-arena-description"),