internal static void Initialize() { Console.WriteLine("Initializing environment..."); Console.WriteLine(); Console.WriteLine(); Stopwatch startWatch = Program.startWatch; isDebugging = System.Diagnostics.Debugger.IsAttached; rnd = new Random(); ServerStarted = DateTime.Now; DefaultEncoding = Encoding.GetEncoding("ISO-8859-1"); cultureInfo = CultureInfo.CreateSpecificCulture("en-GB"); LanguageLocale.Init(); try { ChatCommandRegister.Init(); PetCommandHandeler.Init(); PetLocale.Init(); LanguageLocale.InitSwearWord(); Stopwatch moduleWatch = new Stopwatch(); memoryRespository = new MemoryRespository(10); DirectoryInfo logDirInfo = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\\Logs"); foreach (FileInfo file in logDirInfo.GetFiles()) { file.Delete(); } Configuration = new ConfigurationData(Path.Combine(System.Windows.Forms.Application.StartupPath, @"Settings/configuration.ini")); Game = new Game(Configuration.ReadInt("game.tcp.conlimit")); Console.WriteLine("Pre-init -> ({0} ms)", startWatch.ElapsedMilliseconds); Console.Write("Connecting to database -> "); moduleWatch.Start(); manager = new DatabaseManager(Configuration.ReadUInt("db.pool.maxsize"), Configuration.ReadInt("db.pool.minsize"), DatabaseType.MySQL); manager.setServerDetails(); manager.init(); using (IQueryAdapter dbClient = manager.getQueryreactor()) { Console.WriteLine("({0} ms)", moduleWatch.ElapsedMilliseconds); moduleWatch.Restart(); Game.ContinueLoading(dbClient); moduleWatch.Restart(); ConnectionManager = new ConnectionHandeling(Configuration.ReadInt("game.tcp.port"), Configuration.ReadInt("game.tcp.conlimit"), Configuration.ReadInt("game.tcp.conperip"), Configuration.ReadBool("game.tcp.enablenagles")); ConnectionManager.init(); ConnectionManager.Start(); DataSocket.SetupListener(42); DataSocket.Start(); Console.WriteLine("Socket -> READY! ({0} ms)", moduleWatch.ElapsedMilliseconds); moduleWatch.Restart(); StaticClientMessageHandler.Initialize(); ClientMessageFactory.Init(); MusSystem = new MusSocket(Configuration.ReadInt("mus.tcp.port"), 500); MusSystem.WaitForConnections(); useSSO = Configuration.ReadBool("auth.ssodisabled"); GlobalCrypto = new HabboEncryption.HabboEncryption(); Console.WriteLine("MUS socket -> READY! ({0} ms)", moduleWatch.ElapsedMilliseconds); } Logging.WriteLine("ENVIRONMENT -> READY! (" + startWatch.ElapsedMilliseconds + " ms)"); if (ButterflyEnvironment.isDebugging) { Console.ForegroundColor = ConsoleColor.Yellow; Logging.WriteLine("Server is debugging: Console writing enabled"); Console.ForegroundColor = ConsoleColor.White; Logging.DisabledState = false; } else { Logging.WriteLine("Server is not debugging: Console writing disabled"); Logging.DisablePrimaryWriting(false); } Console.Title = "Butterfly Emulator"; } catch (ModuleInitializationException e) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Failed to initialize Butterfly Emulator:"); Console.WriteLine(e.Message); Console.WriteLine(); Console.WriteLine("Press any key to exit"); Console.ReadKey(); Environment.Exit(0); } catch (KeyNotFoundException e) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Please check your configuration file - some values appear to be missing."); Console.WriteLine("Press any key to shut down ..."); Console.WriteLine(e.ToString()); Console.ReadKey(true); Environment.Exit(0); } catch (InvalidOperationException e) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Failed to initialize ButterflyEmulator: " + e.Message); Console.WriteLine("Press any key to shut down ..."); Console.ReadKey(true); Environment.Exit(0); } catch (Exception e) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Fatal error during startup: " + e.ToString()); Console.WriteLine("Press a key to exit"); Console.ReadKey(); Environment.Exit(1); } }