2023-08-15 00:11:54 -05:00
using Content.Server.Administration.Logs ;
using Content.Shared.Database ;
using Robust.Shared.Map ;
using Robust.Shared.Placement ;
2023-11-11 13:08:10 +11:00
using Robust.Shared.Player ;
2023-08-15 00:11:54 -05:00
namespace Content.Server.Placement ;
public sealed class PlacementLoggerSystem : EntitySystem
{
[Dependency] private readonly IAdminLogManager _adminLogger = default ! ;
[Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default ! ;
2023-11-11 13:08:10 +11:00
[Dependency] private readonly ISharedPlayerManager _player = default ! ;
2023-08-15 00:11:54 -05:00
public override void Initialize ( )
{
base . Initialize ( ) ;
SubscribeLocalEvent < PlacementEntityEvent > ( OnEntityPlacement ) ;
SubscribeLocalEvent < PlacementTileEvent > ( OnTilePlacement ) ;
}
private void OnEntityPlacement ( PlacementEntityEvent ev )
{
2023-11-11 13:08:10 +11:00
_player . TryGetSessionById ( ev . PlacerNetUserId , out var actor ) ;
var actorEntity = actor ? . AttachedEntity ;
2023-08-15 00:11:54 -05:00
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 )
{
2023-11-11 13:08:10 +11:00
_player . TryGetSessionById ( ev . PlacerNetUserId , out var actor ) ;
var actorEntity = actor ? . AttachedEntity ;
2023-08-15 00:11:54 -05:00
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}" ) ;
}
}