using System; using Unity.Jobs; using RobocraftX.SimulationModeState; using RobocraftX.StateSync; using Svelto.ECS; using TechbloxModdingAPI.Utility; namespace TechbloxModdingAPI.Events { /// /// Event emitter engine for switching to to build mode. /// [Obsolete] public class GameStateBuildEmitterEngine : IEventEmitterEngine, IUnorderedInitializeOnTimeStoppedModeEntered { public string Name { get; } = "TechbloxModdingAPIGameStateBuildEventEmitter" ; public EntitiesDB entitiesDB { set; private get; } public int type { get; } = (int)EventType.BuildSwitchedTo; public bool isRemovable { get; } = false; public IEntityFactory Factory { set; private get; } public void Dispose() { } public void Emit() { Logging.Log("Dispatching Build Switched To event"); if (Factory == null) { return; } Factory.BuildEntity(ApiExclusiveGroups.eventID++, ApiExclusiveGroups.eventsExclusiveGroup) .Init(new ModEventEntityStruct { type = type }); } public void EmitIfBuildMode() { //Logging.MetaDebugLog($"nextSimulationMode: {entitiesDB.QueryUniqueEntity(SimulationModeStateExclusiveGroups.GAME_STATE_GROUP).nextSimulationMode}"); if (entitiesDB.QueryUniqueEntity(SimulationModeStateExclusiveGroups.GAME_STATE_GROUP).nextSimulationMode == SimulationMode.TimeStopped) { Emit(); } } public JobHandle OnInitializeTimeStoppedMode(JobHandle inputDeps) { Emit(); return inputDeps; } public void Ready() { } } }