2020-08-13 14:40:27 +02:00
using System ;
using System.Collections.Generic ;
using Robust.Server.Interfaces.Console ;
2020-06-24 10:52:52 -07:00
using Robust.Server.Interfaces.Player ;
using Robust.Shared.GameObjects ;
using Robust.Shared.Interfaces.GameObjects ;
using Robust.Shared.IoC ;
using Robust.Shared.Localization ;
namespace Content.Server.Administration
{
class DeleteEntitiesWithComponent : IClientCommand
{
public string Command = > "deleteewc" ;
public string Description
{
get
{
2020-09-17 09:55:50 +12:00
return Loc . GetString ( "Deletes entities with the specified components." ) ;
2020-06-24 10:52:52 -07:00
}
}
public string Help
{
get
{
2020-09-17 09:55:50 +12:00
return Loc . GetString ( "Usage: deleteewc <componentName_1> <componentName_2> ... <componentName_n>\nDeletes any entities with the components specified." ) ;
2020-06-24 10:52:52 -07:00
}
}
public void Execute ( IConsoleShell shell , IPlayerSession player , string [ ] args )
{
if ( args . Length < 1 )
{
shell . SendText ( player , Help ) ;
return ;
}
var factory = IoCManager . Resolve < IComponentFactory > ( ) ;
var components = new List < Type > ( ) ;
foreach ( var arg in args )
{
components . Add ( factory . GetRegistration ( arg ) . Type ) ;
}
var entityManager = IoCManager . Resolve < IEntityManager > ( ) ;
var entities = entityManager . GetEntities ( new MultipleTypeEntityQuery ( components ) ) ;
var count = 0 ;
foreach ( var entity in entities )
{
entity . Delete ( ) ;
count + = 1 ;
}
2020-09-17 09:55:50 +12:00
shell . SendText ( player , Loc . GetString ( "Deleted {0} entities" , count ) ) ;
2020-06-24 10:52:52 -07:00
}
}
}