Add RaiseEvent action to CGL. Machines raise a MachineDeconstructedEvent.

The latter is very useful for any special machine cleanup that needs to happen when a machine is deconstructed.
The former will be useful for so many things!
This commit is contained in:
Vera Aguilera Puerto
2021-11-01 17:28:42 +01:00
parent 0f744447d0
commit fea41c539e
3 changed files with 42 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
using Content.Shared.Construction;
using JetBrains.Annotations;
using Robust.Shared.GameObjects;
using Robust.Shared.Serialization.Manager.Attributes;
namespace Content.Server.Construction.Completions
{
[UsedImplicitly]
public class RaiseEvent : IGraphAction
{
[DataField("event", required:true)]
public EntityEventArgs? Event { get; } = null;
[DataField("directed")]
public bool Directed { get; } = true;
[DataField("broadcast")]
public bool Broadcast { get; } = true;
public void PerformAction(EntityUid uid, EntityUid? userUid, IEntityManager entityManager)
{
if (Event == null || !Directed && !Broadcast)
return;
if(Directed)
entityManager.EventBus.RaiseLocalEvent(uid, (object)Event, false);
if(Broadcast)
entityManager.EventBus.RaiseEvent(EventSource.Local, (object)Event);
}
}
}

View File

@@ -8,6 +8,7 @@ using Robust.Server.GameObjects;
using Robust.Shared.Containers;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Serialization.Manager.Attributes;
using Robust.Shared.ViewVariables;
namespace Content.Server.Construction.Components
@@ -357,4 +358,9 @@ namespace Content.Server.Construction.Components
return false;
}
}
[DataDefinition]
public class MachineDeconstructedEvent : EntityEventArgs
{
}
}

View File

@@ -81,6 +81,10 @@
container: machine_board
edges:
- to: machineFrame
completed:
- !type:RaiseEvent
event: !type:MachineDeconstructedEvent
broadcast: false
conditions:
- !type:EntityAnchored
- !type:WirePanel