| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- using Content.Server.Administration.Logs;
- using Content.Shared.Database;
- using Robust.Shared.Map;
- using Robust.Shared.Placement;
- using Robust.Shared.Player;
- namespace Content.Server.Placement;
- public sealed class PlacementLoggerSystem : EntitySystem
- {
- [Dependency] private readonly IAdminLogManager _adminLogger = default!;
- [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!;
- [Dependency] private readonly ISharedPlayerManager _player = default!;
- public override void Initialize()
- {
- base.Initialize();
- SubscribeLocalEvent<PlacementEntityEvent>(OnEntityPlacement);
- SubscribeLocalEvent<PlacementTileEvent>(OnTilePlacement);
- }
- private void OnEntityPlacement(PlacementEntityEvent ev)
- {
- _player.TryGetSessionById(ev.PlacerNetUserId, out var actor);
- var actorEntity = actor?.AttachedEntity;
- var logType = ev.PlacementEventAction switch
- {
- PlacementEventAction.Create => LogType.EntitySpawn,
- PlacementEventAction.Erase => LogType.EntityDelete,
- _ => LogType.Action
- };
- if (actorEntity != null)
- _adminLogger.Add(logType, LogImpact.High,
- $"{ToPrettyString(actorEntity.Value):actor} used placement system to {ev.PlacementEventAction.ToString().ToLower()} {ToPrettyString(ev.EditedEntity):subject} at {ev.Coordinates}");
- else if (actor != null)
- _adminLogger.Add(logType, LogImpact.High,
- $"{actor:actor} used placement system to {ev.PlacementEventAction.ToString().ToLower()} {ToPrettyString(ev.EditedEntity):subject} at {ev.Coordinates}");
- else
- _adminLogger.Add(logType, LogImpact.High,
- $"Placement system {ev.PlacementEventAction.ToString().ToLower()}ed {ToPrettyString(ev.EditedEntity):subject} at {ev.Coordinates}");
- }
- private void OnTilePlacement(PlacementTileEvent ev)
- {
- _player.TryGetSessionById(ev.PlacerNetUserId, out var actor);
- var actorEntity = actor?.AttachedEntity;
- if (actorEntity != null)
- _adminLogger.Add(LogType.Tile, LogImpact.High,
- $"{ToPrettyString(actorEntity.Value):actor} used placement system to set tile {_tileDefinitionManager[ev.TileType].Name} at {ev.Coordinates}");
- else if (actor != null)
- _adminLogger.Add(LogType.Tile, LogImpact.High,
- $"{actor} used placement system to set tile {_tileDefinitionManager[ev.TileType].Name} at {ev.Coordinates}");
- else
- _adminLogger.Add(LogType.Tile, LogImpact.High,
- $"Placement system set tile {_tileDefinitionManager[ev.TileType].Name} at {ev.Coordinates}");
- }
- }
|