Beispiel #1
0
        static void StartGui( )
        {
            if ( !Environment.UserInteractive )
                return;

            Application.EnableVisualStyles( );
            Application.SetCompatibleTextRenderingDefault( false );
            if ( ServerExtenderForm == null || ServerExtenderForm.IsDisposed )
                ServerExtenderForm = new SEServerExtender( Server );
            else if ( ServerExtenderForm.Visible )
                return;

            Application.Run( ServerExtenderForm );
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            //Setup error handling for unmanaged exceptions
            AppDomain.CurrentDomain.UnhandledException += AppDomain_UnhandledException;
            Application.ThreadException += Application_ThreadException;
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

            CommandLineArgs extenderArgs = new CommandLineArgs();

            //Setup the default args
            extenderArgs.autoStart = false;
            extenderArgs.worldName = "";
            extenderArgs.instanceName = "";
            extenderArgs.noGUI = false;
            extenderArgs.noConsole = false;
            extenderArgs.debug = false;
            extenderArgs.gamePath = "";
            extenderArgs.noWCF = false;
            extenderArgs.autosave = 0;
            extenderArgs.wcfPort = 0;
            extenderArgs.path = "";

            //Process the args
            foreach (string arg in args)
            {
                if (arg.Split('=').Length > 1)
                {
                    string argName = arg.Split('=')[0];
                    string argValue = arg.Split('=')[1];

                    Console.WriteLine("Name-Value Arg: name='" + argName + "' value='" + argValue + "'");

                    if (argName.ToLower().Equals("instance"))
                    {
                        if (argValue[argValue.Length - 1] == '"')
                            argValue = argValue.Substring(0, argValue.Length - 1);
                        extenderArgs.instanceName = argValue;
                    }
                    if (argName.ToLower().Equals("gamepath"))
                    {
                        if (argValue[argValue.Length - 1] == '"')
                            argValue = argValue.Substring(0, argValue.Length - 1);
                        extenderArgs.gamePath = argValue;
                    }
                    if (argName.ToLower().Equals("autosave"))
                    {
                        try
                        {
                            extenderArgs.autosave = int.Parse(argValue);
                        }
                        catch (Exception)
                        {
                            //Do nothing
                        }
                    }
                    if (argName.ToLower().Equals("wcfport"))
                    {
                        try
                        {
                            extenderArgs.wcfPort = ushort.Parse(argValue);
                        }
                        catch (Exception)
                        {
                            //Do nothing
                        }
                    }
                    if (argName.ToLower().Equals("path"))
                    {
                        if (argValue[argValue.Length - 1] == '"')
                            argValue = argValue.Substring(0, argValue.Length - 1);
                        extenderArgs.path = argValue;
                    }
                }
                else
                {
                    if (arg.ToLower().Equals("autostart"))
                    {
                        extenderArgs.autoStart = true;
                    }
                    if (arg.ToLower().Equals("nogui"))
                    {
                        extenderArgs.noGUI = true;

                        //Implies autostart
                        extenderArgs.autoStart = true;
                    }
                    if (arg.ToLower().Equals("noconsole"))
                    {
                        extenderArgs.noConsole = true;

                        //Implies nogui and autostart
                        extenderArgs.noGUI = true;
                        extenderArgs.autoStart = true;
                    }
                    if (arg.ToLower().Equals("debug"))
                    {
                        extenderArgs.debug = true;
                    }
                    if (arg.ToLower().Equals("nowcf"))
                    {
                        extenderArgs.noWCF = true;
                    }
                }
            }

            if (extenderArgs.noWCF)
                extenderArgs.wcfPort = 0;

            if (!string.IsNullOrEmpty(extenderArgs.path))
            {
                extenderArgs.instanceName = "";
            }

            if (!Environment.UserInteractive)
            {
                extenderArgs.noConsole = true;
                extenderArgs.noGUI = true;
            }

            if (extenderArgs.debug)
                SandboxGameAssemblyWrapper.IsDebugging = true;

            try
            {
                bool unitTestResult = BasicUnitTestManager.Instance.Run();
                if (!unitTestResult)
                    SandboxGameAssemblyWrapper.IsInSafeMode = true;

                m_server = Server.Instance;
                m_server.CommandLineArgs = extenderArgs;
                m_server.IsWCFEnabled = !extenderArgs.noWCF;
                m_server.Init();
                if (extenderArgs.autoStart)
                {
                    m_server.StartServer();
                }

                if (!extenderArgs.noGUI)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    m_serverExtenderForm = new SEServerExtender(m_server);
                    Application.Run(m_serverExtenderForm);
                }
            }
            catch (AutoException eEx)
            {
                if(!extenderArgs.noConsole)
                    Console.WriteLine("AutoException - " + eEx.AdditionnalInfo + "\n\r" + eEx.GetDebugString());
                if (!extenderArgs.noGUI)
                    MessageBox.Show(eEx.AdditionnalInfo + "\n\r" + eEx.GetDebugString(), @"SEServerExtender", MessageBoxButtons.OK, MessageBoxIcon.Error);

                if (extenderArgs.noConsole && extenderArgs.noGUI)
                    throw eEx.GetBaseException();
            }
            catch (TargetInvocationException ex)
            {
                if (!extenderArgs.noConsole)
                    Console.WriteLine("TargetInvocationException - " + ex.ToString() + "\n\r" + ex.InnerException.ToString());
                if (!extenderArgs.noGUI)
                    MessageBox.Show(ex.ToString() + "\n\r" + ex.InnerException.ToString(), @"SEServerExtender", MessageBoxButtons.OK, MessageBoxIcon.Error);

                if (extenderArgs.noConsole && extenderArgs.noGUI)
                    throw ex;
            }
            catch (Exception ex)
            {
                if (!extenderArgs.noConsole)
                    Console.WriteLine("Exception - " + ex.ToString());
                if (!extenderArgs.noGUI)
                    MessageBox.Show(ex.ToString(), @"SEServerExtender", MessageBoxButtons.OK, MessageBoxIcon.Error);

                if (extenderArgs.noConsole && extenderArgs.noGUI)
                    throw ex;
            }
        }
        public SEServerExtender( Server server )
        {
            m_instance = this;
            m_server = server;
            m_sectorEntities = new HashSet<MyEntity>( );
            m_cubeGridEntities = new List<MyCubeGrid>( );
            m_characterEntities = new List<MyCharacter>( );
            m_voxelMapEntities = new List<MyVoxelBase>( );
            m_floatingObjectEntities = new List<MyEntity>( );
            m_meteorEntities = new List<MyEntity>( );

            //Run init functionsS
            InitializeComponent( );
            if ( !SetupTimers( ) )
                Close( );
            if ( !SetupControls( ) )
                Close( );
            if ( !m_server.IsRunning )
                m_server.LoadServerConfig( );
            UpdateControls( );
            PG_Control_Server_Properties.SelectedObject = m_server.Config;

            //Update the title bar text with the assembly version
            Text = string.Format( "SEServerExtender {0}", Assembly.GetExecutingAssembly( ).GetName( ).Version );

            FormClosing += OnFormClosing;

            if ( m_server.IsRunning )
                _genericUpdateTimer.Start( );

            if (Program.IsStable)
                TAB_MainTabs.TabPages.Remove(TAB_Profiler);
        }
        static void Main(string[] args)
        {
            try
            {
                //Setup error handling for unmanaged exceptions
                AppDomain.CurrentDomain.UnhandledException += AppDomain_UnhandledException;
                Application.ThreadException += Application_ThreadException;
                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

                //Setup the default args
                CommandLineArgs extenderArgs = new CommandLineArgs();
                extenderArgs.autoStart = false;
                extenderArgs.worldName = "";
                extenderArgs.instanceName = "";
                extenderArgs.noGUI = false;
                extenderArgs.noConsole = false;
                extenderArgs.debug = false;
                extenderArgs.gamePath = "";

                //Process the args
                foreach (string arg in args)
                {
                    if (arg.Split('=').Length > 1)
                    {
                        string argName = arg.Split('=')[0];
                        string argValue = arg.Split('=')[1];

                        Console.WriteLine("Name-Value Arg: name='" + argName + "' value='" + argValue + "'");

                        if (argName.ToLower().Equals("instance"))
                        {
                            extenderArgs.instanceName = argValue;
                        }
                        if (argName.ToLower().Equals("gamepath"))
                        {
                            extenderArgs.gamePath = argValue;
                        }
                    }
                    else
                    {
                        if (arg.ToLower().Equals("autostart"))
                        {
                            extenderArgs.autoStart = true;
                        }
                        if (arg.ToLower().Equals("nogui"))
                        {
                            extenderArgs.noGUI = true;

                            //Implies autostart
                            extenderArgs.autoStart = true;
                        }
                        if (arg.ToLower().Equals("noconsole"))
                        {
                            extenderArgs.noGUI = true;

                            //Implies nogui and autostart
                            extenderArgs.noGUI = true;
                            extenderArgs.autoStart = true;
                        }
                        if (arg.ToLower().Equals("debug"))
                        {
                            extenderArgs.debug = true;
                        }
                    }
                }

                m_server = new Server(extenderArgs);
                if (extenderArgs.autoStart)
                {
                    m_server.StartServer();
                }

                if (!extenderArgs.noGUI)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    m_serverExtenderForm = new SEServerExtender(m_server);
                    Application.Run(m_serverExtenderForm);
                }
            }
            catch (AutoException eEx)
            {
                Console.WriteLine("AutoException - " + eEx.AdditionnalInfo + "\n\r" + eEx.GetDebugString());
                MessageBox.Show(eEx.AdditionnalInfo + "\n\r" + eEx.GetDebugString(), @"SEServerExtender", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (TargetInvocationException ex)
            {
                Console.WriteLine("TargetInvocationException - " + ex.ToString() + "\n\r" + ex.InnerException.ToString());
                MessageBox.Show(ex.ToString() + "\n\r" + ex.InnerException.ToString(), @"SEServerExtender", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception - " + ex.ToString());
                MessageBox.Show(ex.ToString(), @"SEServerExtender", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }