using System; using RobocraftX.Common.Input; using RobocraftX.Players; using Svelto.ECS; using GamecraftModdingAPI.Utility; using GamecraftModdingAPI.Engines; namespace GamecraftModdingAPI.Input { public class FakeInputEngine : IApiEngine { public string Name { get; } = "GamecraftModdingAPIFakeInputEngine"; public EntitiesDB entitiesDB { set; private get; } public bool isRemovable => false; public bool IsReady = false; public void Dispose() { IsReady = false; } public void Ready() { IsReady = true; } public bool SendCustomInput(LocalInputEntityStruct input, uint playerID, bool remote = false) { EGID egid = new EGID(playerID, remote ? InputExclusiveGroups.RemotePlayers : InputExclusiveGroups.LocalPlayers); if (entitiesDB.Exists(egid)) { ref LocalInputEntityStruct ies = ref entitiesDB.QueryEntity(egid); ies = input; return true; } else return false; } public LocalInputEntityStruct GetInput(uint playerID, bool remote = false) { EGID egid = new EGID(playerID, remote ? InputExclusiveGroups.RemotePlayers : InputExclusiveGroups.LocalPlayers); if (entitiesDB.Exists(egid)) { return entitiesDB.QueryEntity(egid); } else return default(LocalInputEntityStruct); } public ref LocalInputEntityStruct GetInputRef(uint playerID, bool remote = false) { EGID egid = new EGID(playerID, remote ? InputExclusiveGroups.RemotePlayers : InputExclusiveGroups.LocalPlayers); return ref entitiesDB.QueryEntity(egid); } public uint GetLocalPlayerID() { return LocalPlayerIDUtility.GetLocalPlayerID(entitiesDB); } } }