Exemple #1
0
 private void LoadConfiguration()
 {
     configurationProvider.LoadFromFile("configs/RealmServer.ini");
     logger.Debug("Realm configuration has been loaded");
 }
Exemple #2
0
 private void LoadConfiguration()
 {
     configurationProvider.LoadFromFile("configs/WorldCluster.ini");
     logger.Debug("Cluster configuration has been loaded");
 }
Exemple #3
0
        public async Task StartAsync()
        {
            xmlConfigurationProvider.LoadFromFile("configs/WorldServer.ini");

            Console.BackgroundColor = ConsoleColor.Black;
            Console.Title           = $"{((AssemblyTitleAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), inherit: false)[0]).Title} v{Assembly.GetExecutingAssembly().GetName().Version}";
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("{0}", ((AssemblyProductAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), inherit: false)[0]).Product);
            Console.WriteLine(((AssemblyCopyrightAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), inherit: false)[0]).Copyright);
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("  __  __      _  _  ___  ___  ___   __   __ ___               ");
            Console.WriteLine(" |  \\/  |__ _| \\| |/ __|/ _ \\/ __|  \\ \\ / /| _ )      We Love ");
            Console.WriteLine(" | |\\/| / _` | .` | (_ | (_) \\__ \\   \\ V / | _ \\   Vanilla Wow");
            Console.WriteLine(" |_|  |_\\__,_|_|\\_|\\___|\\___/|___/    \\_/  |___/              ");
            Console.WriteLine("                                                              ");
            Console.WriteLine(" Website / Forum / Support: https://getmangos.eu/          ");
            Console.WriteLine("");
            Console.ForegroundColor = ConsoleColor.Magenta;
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine(((AssemblyTitleAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), inherit: false)[0]).Title);
            Console.WriteLine(" version {0}", Assembly.GetExecutingAssembly().GetName().Version);
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("");
            Console.ForegroundColor = ConsoleColor.Gray;
            DateTime dateTimeStarted = DateAndTime.Now;

            Log.WriteLine(LogType.INFORMATION, "[{0}] World Server Starting...", Strings.Format(DateAndTime.TimeOfDay, "hh:mm:ss"));
            AppDomain currentDomain = AppDomain.CurrentDomain;

            currentDomain.UnhandledException += GenericExceptionHandler;
            LoadConfig();
            Console.ForegroundColor       = ConsoleColor.Gray;
            AccountDatabase.SQLMessage   += AccountSQLEventHandler;
            CharacterDatabase.SQLMessage += CharacterSQLEventHandler;
            WorldDatabase.SQLMessage     += WorldSQLEventHandler;
            int ReturnValues = AccountDatabase.Connect();

            if (ReturnValues > 0)
            {
                Console.WriteLine("[{0}] An SQL Error has occurred", Strings.Format(DateAndTime.TimeOfDay, "hh:mm:ss"));
                Console.WriteLine("*************************");
                Console.WriteLine("* Press any key to exit *");
                Console.WriteLine("*************************");
                Console.ReadKey();
                ProjectData.EndApp();
            }
            AccountDatabase.Update("SET NAMES 'utf8';");
            ReturnValues = CharacterDatabase.Connect();
            if (ReturnValues > 0)
            {
                Console.WriteLine("[{0}] An SQL Error has occurred", Strings.Format(DateAndTime.TimeOfDay, "hh:mm:ss"));
                Console.WriteLine("*************************");
                Console.WriteLine("* Press any key to exit *");
                Console.WriteLine("*************************");
                Console.ReadKey();
                ProjectData.EndApp();
            }
            CharacterDatabase.Update("SET NAMES 'utf8';");
            ReturnValues = WorldDatabase.Connect();
            if (ReturnValues > 0)
            {
                Console.WriteLine("[{0}] An SQL Error has occurred", Strings.Format(DateAndTime.TimeOfDay, "hh:mm:ss"));
                Console.WriteLine("*************************");
                Console.WriteLine("* Press any key to exit *");
                Console.WriteLine("*************************");
                Console.ReadKey();
                ProjectData.EndApp();
            }
            WorldDatabase.Update("SET NAMES 'utf8';");
            bool areDbVersionsOk = true;

            if (!WorldServiceLocator._CommonGlobalFunctions.CheckRequiredDbVersion(AccountDatabase, ServerDb.Realm))
            {
                areDbVersionsOk = false;
            }
            if (!WorldServiceLocator._CommonGlobalFunctions.CheckRequiredDbVersion(CharacterDatabase, ServerDb.Character))
            {
                areDbVersionsOk = false;
            }
            if (!WorldServiceLocator._CommonGlobalFunctions.CheckRequiredDbVersion(WorldDatabase, ServerDb.World))
            {
                areDbVersionsOk = false;
            }
            if (!areDbVersionsOk)
            {
                Console.WriteLine("*************************");
                Console.WriteLine("* Press any key to exit *");
                Console.WriteLine("*************************");
                Console.ReadKey();
                ProjectData.EndApp();
            }
            await WorldServiceLocator._WS_DBCDatabase.InitializeInternalDatabaseAsync();

            WorldServiceLocator._WS_Handlers.IntializePacketHandlers();
            ALLQUESTS.LoadAllQuests();
            await AllGraveYards.InitializeGraveyardsAsync();

            WorldServiceLocator._WS_Transports.LoadTransports();
            ClsWorldServer = new WS_Network.WorldServerClass(WorldServiceLocator._DataStoreProvider);
            WorldServerConfiguration configuration = WorldServiceLocator._ConfigurationProvider.GetConfiguration();

            server = new ProxyServer <WS_Network.WorldServerClass>(Dns.GetHostAddresses(configuration.LocalConnectHost)[0], configuration.LocalConnectPort, ClsWorldServer);
            ClsWorldServer.ClusterConnect();
            Log.WriteLine(LogType.INFORMATION, "Interface UP at: {0}", ClsWorldServer.LocalURI);
            GC.Collect();
            if (Process.GetCurrentProcess().PriorityClass == ProcessPriorityClass.High)
            {
                Log.WriteLine(LogType.WARNING, "Setting Process Priority to HIGH..[done]");
            }
            else
            {
                Log.WriteLine(LogType.WARNING, "Setting Process Priority to NORMAL..[done]");
            }
            Log.WriteLine(LogType.INFORMATION, " Load Time:   {0}", Strings.Format(DateAndTime.DateDiff(DateInterval.Second, dateTimeStarted, DateAndTime.Now), "0 seconds"));
            Log.WriteLine(LogType.INFORMATION, " Used Memory: {0}", Strings.Format(GC.GetTotalMemory(forceFullCollection: false), "### ### ##0 bytes"));
            WaitConsoleCommand();
            try
            {
            }
            catch (Exception ex2)
            {
                ProjectData.SetProjectError(ex2);
                Exception ex = ex2;
                WorldServiceLocator._WS_TimerBasedEvents.Regenerator.Dispose();
                AreaTriggers.Dispose();
                ProjectData.ClearProjectError();
            }
        }