- using System;
-
- using RobocraftX.Common;
- using Svelto.ECS;
-
- using GamecraftModdingAPI.Engines;
- using GamecraftModdingAPI.Utility;
-
- namespace GamecraftModdingAPI.Blocks
- {
- public class BlockEventsEngine : IReactionaryEngine<DBEntityStruct>
- {
- public event EventHandler<BlockPlacedRemovedEventArgs> Placed;
- public event EventHandler<BlockPlacedRemovedEventArgs> Removed;
-
- public void Ready()
- {
- }
-
- public EntitiesDB entitiesDB { get; set; }
-
- public void Dispose()
- {
- }
-
- public string Name { get; } = "GamecraftModdingAPIBlockEventsEngine";
- public bool isRemovable { get; } = false;
-
- private bool shouldAddRemove;
- public void Add(ref DBEntityStruct entityComponent, EGID egid)
- {
- if (!(shouldAddRemove = !shouldAddRemove))
- return;
- ExceptionUtil.InvokeEvent(Placed, this,
- new BlockPlacedRemovedEventArgs {ID = egid, Type = (BlockIDs) entityComponent.DBID});
- }
-
- public void Remove(ref DBEntityStruct entityComponent, EGID egid)
- {
- if (!(shouldAddRemove = !shouldAddRemove))
- return;
- ExceptionUtil.InvokeEvent(Removed, this,
- new BlockPlacedRemovedEventArgs {ID = egid, Type = (BlockIDs) entityComponent.DBID});
- }
- }
-
- public struct BlockPlacedRemovedEventArgs
- {
- public EGID ID;
- public BlockIDs Type;
- private Block block;
-
- public Block Block => block ?? (block = new Block(ID));
- }
- }
|