using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; using CLre_server.API.Engines; using Game.DataLoader; using GameServer; using HarmonyLib; using Svelto.Context; using Svelto.DataStructures; using Svelto.ECS; using User.Server; namespace CLre_server.API.MainServer { class ServerReadyEngine : ServerEnginePostBuild, IWaitForFrameworkInitialization, IWaitForFrameworkDestruction { internal static event EventHandler serverEngineReady; internal static event EventHandler serverFrameworkReady; internal static event EventHandler serverFrameworkDestroyed; public override void Ready() { GameServerSettings gss = Server.Instance.GameServerSettings; if (serverEngineReady != null) serverEngineReady(this, new StartedEventArgs { photonVersion = PhotonNetwork.gameVersion, photonRegion = PhotonNetwork.CloudRegion, gameGuid = gss == null ? "" : gss.GetGameGuid(), worldName = gss == null ? "" : gss.GetWorldName(), }); } public void OnFrameworkInitialized() { GameServerSettings gss = Server.Instance.GameServerSettings; if (serverFrameworkReady != null) serverFrameworkReady(this, new StartedEventArgs { photonVersion = PhotonNetwork.gameVersion, photonRegion = PhotonNetwork.CloudRegion, gameGuid = gss == null ? "" : gss.GetGameGuid(), worldName = gss == null ? "" : gss.GetWorldName(), }); } public void OnFrameworkDestroyed() { if (serverFrameworkDestroyed != null) serverFrameworkDestroyed(this, new StopEventArgs{}); } } class ServerDatabaseQueryEngine : ServerEnginePostBuild { public override void Ready() { } public AccountIdServerNode[] GetConnectedAccounts() { FieldInfo f = AccessTools.Field(AccessTools.TypeByName("User.Server.AccountExclusiveGroups"), "accountGroup"); ExclusiveGroup accountGroup = (ExclusiveGroup) f.GetValue(null); ReadOnlyCollectionStruct accounts = entitiesDB.QueryEntityViews(accountGroup); List list = new List(); foreach (var a in accounts) { list.Add(a); } return list.ToArray(); } } }