|
- using RobocraftX.Character;
- using RobocraftX.Character.Movement;
- using RobocraftX.Common.Input;
- using Svelto.ECS;
-
- using TechbloxModdingAPI.Engines;
-
- namespace TechbloxModdingAPI.Players
- {
- public class PlayerEventsEngine : IApiEngine, IReactOnSwap<CharacterPilotSeatEntityStruct>, IReactOnAddAndRemove<PlayerIDStruct>
- {
- public void Ready()
- {
- }
-
- public EntitiesDB entitiesDB { get; set; }
- public void Dispose()
- {
- }
-
- public string Name => "TechbloxModdingAPIPlayerEventsEngine";
- public bool isRemovable => false;
-
- public void MovedTo(ref CharacterPilotSeatEntityStruct entityComponent, ExclusiveGroupStruct previousGroup, EGID egid)
- {
- entitiesDB.TryGetEGID(entityComponent.pilotSeatEntity, out var seatId); //TODO: Can't get EGID
- var player = Player.GetInstance(egid.entityID);
- if (previousGroup == CharacterExclusiveGroups.InPilotSeatGroup)
- player.seatExited.Invoke(this, new PlayerSeatEventArgs { SeatId = seatId});
- else if (egid.groupID == CharacterExclusiveGroups.InPilotSeatGroup)
- player.seatEntered.Invoke(this, new PlayerSeatEventArgs { SeatId = seatId });
- }
-
- public void Add(ref PlayerIDStruct entityComponent, EGID egid)
- {
- Player.joined.Invoke(this, new PlayerEventArgs { PlayerId = egid });
- }
-
- public void Remove(ref PlayerIDStruct entityComponent, EGID egid)
- {
- Player.left.Invoke(this, new PlayerEventArgs { PlayerId = egid });
- }
- }
- }
|