public GameServer GetHandlers() { try { GameServer server = (GameServer)GameState.ActiveState; if (server == null) { return(null); } mainLog.Info("IRSE: Loaded GameServer Instance!"); ControllerManager = server.Controllers; var universe = ControllerManager.Universe as Game.Server.UniverseController; mainLog.Info("IRSE: Waiting for Universe To Populate.."); while (!universe.IsInitialized) { Thread.Sleep(1000); if (universe.IsInitialized) { break; } } mainLog.Info("IRSE: Loading Handlers.."); NetworkHandler = new NetworkHandler(ControllerManager); NetworkHandler.SetupNetworkHandler(server); PlayerHandler = new PlayerHandler(ControllerManager); PlayerHandler.SetupPlayerHandler(server); ChatHandler = new ChatHandler(ControllerManager); ChatHandler.SetupChatMessageHandler(NetworkHandler); UniverseHandler = new UniverseHandler(ControllerManager); UniverseHandler.SetupHandler(server); mainLog.Info("IRSE: Loaded Universe!"); return(server); } catch (ArgumentException ex) { mainLog.Error("Failed to get handlers [Argument Exception] \r\n Exception:" + ex.ToString()); return(null); } catch (Exception ex) { mainLog.Error("Failed to get handlers \r\n Exception: " + ex.ToString()); return(null); } }
public NetworkHandler(Game.Server.ControllerManager controllerManager) { try { mainLog = NLog.LogManager.GetCurrentClassLogger(); mainLog.Info("IRSE: Loading NetworkHandler..."); } catch (Exception ex) { mainLog.Error(ex.ToString()); } }
internal void Hook() { m_launchedTime = DateTime.Now; try { Program.SetTitle(true); m_handlerManager = new HandlerManager(m_assembly, m_frameworkAssembly); WaitForHandlers(); Game.Server.ControllerManager controllerManager = m_handlerManager.ControllerManager; // Intercept events to copy and invoke EventManager.Instance.Intercept(controllerManager); // command loader mainLog.Info("IRSE: Loading Game Console Commands.."); // soon ConsoleCommandManager.InitCommands(controllerManager); // start gamelogic coroutine Program.ConsoleCoroutine = CommandSystem.Singleton.Logic(controllerManager, Game.Configuration.Globals.NoConsoleAutoComplete); SendKeys.SendWait("{ENTER}"); // activates the game console commands // plugin loader mainLog.Info("IRSE: Initializing Plugins..."); m_pluginManager = new PluginManager(); m_pluginManager.InitializeAllPlugins(); // Wait 5 seconds before activating ServerInstance.Instance.IsRunning mainLog.Info("IRSE: Startup Procedure Complete!"); IsRunning = true; // Server is running by now } catch (Exception ex) { mainLog.Info("IRSE: Startup Procedure FAILED!"); mainLog.Info("IRSE: Haulting Server.. Major problem detected!!!!!!!! - Exception:"); mainLog.Error(ex.ToString()); Console.ReadLine(); Stop(); } }
public UniverseHandler(Game.Server.ControllerManager controllerManager) { m_controllers = controllerManager; Universe = m_controllers.Universe as Game.Server.UniverseController; try { mainLog = NLog.LogManager.GetCurrentClassLogger(); NLog.LogManager.GetCurrentClassLogger().Info("IRSE: Loading UniverseHandler..."); } catch (Exception ex) { mainLog.Error(ex.ToString()); } }
public UniverseHandler(Game.Server.ControllerManager controllerManager) { Universe = controllerManager.Universe as Game.Server.UniverseController; //Console.WriteLine(test.ActiveSystems.FirstOrDefault()); try { mainLog = NLog.LogManager.GetCurrentClassLogger(); NLog.LogManager.GetCurrentClassLogger().Info("IRSE: Loading UniverseHandler..."); } catch (Exception ex) { mainLog.Error(ex.ToString()); } }
public Object GetHandlers() { try { m_gameStateType = m_frameworkAssembly.GetType("Game.GameStates.GameState"); PropertyInfo m_activeState = m_gameStateType.GetProperty("ActiveState"); object server = m_activeState.GetValue(null); if (server == null) { return(null); } mainLog.Info("IRSE: Loaded GameServer Instance!"); FieldInfo m_controllerManagerField = server.GetType().GetField("m_controllers", BindingFlags.NonPublic | BindingFlags.Instance); m_controllerManager = m_controllerManagerField.GetValue(server) as Game.Server.ControllerManager; var universe = m_controllerManager.Universe as Game.Server.UniverseController; mainLog.Info("IRSE: Waiting for Universe To Populate.."); // will be removed when they fix the ghost client spawner ServerInstance.Instance.SpawnGhostClients(m_controllerManager); while (m_controllerManager.Players.AllPlayers().Count() < 1) { Thread.Sleep(1000); if (m_controllerManager.Players.AllPlayers().Count() <= 1) { break; } } mainLog.Info("IRSE: Loading Handlers.."); NetworkHandler = new NetworkHandler(m_controllerManager); NetworkHandler.SetupNetworkHandler(server); PlayerHandler = new PlayerHandler(m_controllerManager); PlayerHandler.SetupPlayerHandler(server); ChatHandler = new ChatHandler(m_controllerManager); ChatHandler.SetupChatMessageHandler(NetworkHandler); UniverseHandler = new UniverseHandler(m_controllerManager); UniverseHandler.SetupHandler(server); mainLog.Info("IRSE: Loaded Universe!"); return(true); } catch (ArgumentException ex) { mainLog.Error("Failed to get handlers [Argument Exception] \r\n Exception:" + ex.ToString()); return(null); } catch (Exception ex) { mainLog.Error("Failed to get handlers \r\n Exception: " + ex.ToString()); return(null); } }
public void SpawnGhostClients(Game.Server.ControllerManager controllers) { SystemNames.ForEach((systemIdent) => { Task.Run((Action)(() => { SolarSystem system = controllers.Universe.Galaxy.GetSystem(systemIdent); using (WriteLock.CreateLock(m_startingGhostClientsLock)) m_startingGhostClients.Add(systemIdent); GhostClientState ghostClientState; //if(m_ghostClients.Count() != 5) this.m_ghostClients.TryGetValue(systemIdent, out ghostClientState); if (ghostClientState == null || !ghostClientState.PreventStart) { string str1 = ServerConfig.Singleton.GhostClientConsoleVisible ? "-console " : ""; string str2 = "-ip 127.0.0.1 "; string str3 = "-port " + controllers.Network.NetGeneric.GetPort().ToString(); string str4 = " -GhostSystemName " + systemIdent; try { if (ghostClientState == null) { ghostClientState = new GhostClientState(controllers); using (WriteLock.CreateLock(m_delayedAddUpdatablesLock)) m_delayedAddUpdatables.Add((IUpdatable)ghostClientState); } ghostClientState.Process = Process.Start(new ProcessStartInfo(Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "IRGhostClient.exe"), "-ghostclient " + str1 + str2 + str3 + str4) { UseShellExecute = false, CreateNoWindow = !ServerConfig.Singleton.GhostClientConsoleVisible }); ghostClientState.SystemName = systemIdent; ghostClientState.ResetHeartbeat(); ++ghostClientState.StartCount; using (WriteLock.CreateLock(m_ghostClientsLock)) this.m_ghostClients[systemIdent] = ghostClientState; if (ServerConfig.Singleton.GhostClientStartCountThresholdEnabled && ghostClientState.StartCount >= ServerConfig.Singleton.GhostClientStartCountThreshold) { Console.WriteLine(string.Format("Ghost client for '{0}' started {1} in {2} seconds! Preventing start for {3}.", new object[4] { (object)systemIdent, (object)ghostClientState.StartCount, (object)ServerConfig.Singleton.GhostClientStartCountResetDurationInSeconds, (object)ServerConfig.Singleton.GhostClientPreventStartDurationInSeconds }), "Saving", (Exception)null); ghostClientState.PreventStart = true; } } catch (Exception ex) { Console.WriteLine(string.Format("Failed to start ghost client. Path: {0}, Arguments: {1}", (object)Assembly.GetEntryAssembly().Location, (object)("-ghostclient " + str1 + str2 + str3 + str4)), "Exceptions", ex); } } using (WriteLock.CreateLock(this.m_startingGhostClientsLock)) this.m_startingGhostClients.Remove(systemIdent); })); }); //Process.Start(@"F:\IRSE2020\InterstellarRiftServerExtender\InterstellarRiftServerExtender\bin\Debug\IRGhostClient.exe", $"-ghostclient -ip 127.0.0.1 -port {controllers.Network.NetGeneric.GetPort()} -GhostSystemName {system1.Identifier}"); //Process.Start(@"F:\IRSE2020\InterstellarRiftServerExtender\InterstellarRiftServerExtender\bin\Debug\IRGhostClient.exe", $"-ghostclient -ip 127.0.0.1 -port {controllers.Network.NetGeneric.GetPort()} -GhostSystemName {system2.Identifier}"); //Process.Start(@"F:\IRSE2020\InterstellarRiftServerExtender\InterstellarRiftServerExtender\bin\Debug\IRGhostClient.exe", $"-ghostclient -ip 127.0.0.1 -port {controllers.Network.NetGeneric.GetPort()} -GhostSystemName {system3.Identifier}"); //Process.Start(@"F:\IRSE2020\InterstellarRiftServerExtender\InterstellarRiftServerExtender\bin\Debug\IRGhostClient.exe", $"-ghostclient -ip 127.0.0.1 -port {controllers.Network.NetGeneric.GetPort()} -GhostSystemName {system4.Identifier}"); // dont remove this, its for after SP fixes a bug //MethodInfo clientMethod = server.GetType().GetMethod("StartGhostClient", BindingFlags.Instance | BindingFlags.Public); //clientMethod.Invoke(server, new object[] { system1 }); //clientMethod.Invoke(server, new object[] { system2 }); //clientMethod.Invoke(server, new object[] { system3 }); //clientMethod.Invoke(server, new object[] { system4 }); }