public static bool Initialize(out string message)
        {
            message = "";
            try
            {
                Instance = ReadJson();
                if (Instance != null)
                {
                    EngineLog.Write(EngineLogLevel.Startup, "Successfully read Network config.");
                    return(true);
                }

                if (!Write(out var pConfig))
                {
                    message = "Failed to create default NetworkConfiguration.";
                    return(false);
                }
                pConfig.WriteJson();

                EngineLog.Write(EngineLogLevel.Startup, "Successfully created Network config.");
                message = "No NetworkConfiguration found! Please edit generated config.";
                return(false);
            }
            catch (Exception ex)
            {
                EngineLog.Write(EngineLogLevel.Exception, "Failed to load Network config:\n {0}", ex);
                message = $"Failed to load NetworkConfiguration:\n {ex.StackTrace}";
                return(false);
            }
        }
Beispiel #2
0
        public static void Initialize()
        {
            var stopwatch = new Stopwatch();

            stopwatch.Start();

            InternalInstance = new ServerMain();
            InternalInstance.WriteConsoleLogo();

            EngineLog.Write(EngineLogLevel.Startup, "Starting LoginServer");

            // Configuration
            if (!NetworkConfiguration.Initialize(out var netConfigMsg))
            {
                throw new StartupException(netConfigMsg);
            }
            NetConfig = NetworkConfiguration.Instance;

            if (!DatabaseConfiguration.Initialize(out var dbConfigMsg))
            {
                throw new StartupException(dbConfigMsg);
            }
            DbConfig = DatabaseConfiguration.Instance;

            if (!LoginConfiguration.Initialize(out var loginConfigMsg))
            {
                throw new StartupException(loginConfigMsg);
            }
            LoginConfig = LoginConfiguration.Instance;

            // Database
            if (!DB.AddManager(DatabaseType.Account, DatabaseConfiguration.Instance))
            {
                throw new StartupException("Database connection failure! See above error.");
            }

            // Handlers
            StoreHandlers();

            // Networking
            WorldServer.Listen(NetConfig.LoginNetConfig.S2SListenIP, (ushort)NetConfig.LoginNetConfig.S2SListenPort);
            ClientServer.Listen(NetConfig.LoginNetConfig.ListenIP, (ushort)NetConfig.LoginNetConfig.ListenPort);
            // TODO: gamelogserver
            // GameLogServer.Connect(NetConfig.GameLogNetConfig.S2SListenIP, (ushort)NetConfig.GameLogNetConfig.S2SListenPort);

            stopwatch.Stop();
            EngineLog.Write(EngineLogLevel.Startup, $"Time taken to start: {stopwatch.ElapsedMilliseconds}ms");

            // Main server loop
            new Thread(() =>
            {
                while (true)
                {
                    Update(Time.Milliseconds);
                    Thread.Sleep(10);
                }
            }).Start();

            // Console commands?
        }
Beispiel #3
0
        public int RunSQL(DatabaseType type, string sql, params object[] parameters)
        {
            using (var mClient = DB.GetDatabaseClient(type))
            {
                var sqlString = new StringBuilder();
                // Fix for floating point problems on some languages
                sqlString.AppendFormat(CultureInfo.GetCultureInfo("en-US").NumberFormat, sql, parameters);

                SqlCommand sqlCommand = null;
                try
                {
                    sqlCommand = new SqlCommand(sqlString.ToString());
                    sqlCommand.Parameters.AddRange(parameters);
                    mClient.mCommand = sqlCommand;

                    return(mClient.ExecuteNonQuery());
                }
                catch (SqlException ex)
                {
                    EngineLog.Write(ex, $"Failed to Execute Query {sqlCommand?.CommandText}");
                    return(0);
                }
            }
        }
Beispiel #4
0
 private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
 {
     EngineLog.Write(EngineLogLevel.Exception, e.ExceptionObject.ToString());
 }