using HISP.Game; using HISP.Game.Horse; using HISP.Game.Items; using HISP.Game.Services; using HISP.Game.SwfModules; using HISP.Game.Chat; using HISP.Security; using System; using System.Diagnostics; using System.Threading; namespace HISP.Server { public static class Entry { // "Entry Point" private static void defaultOnShutdownCallback() { Process.GetCurrentProcess().Close(); } public static Action OnShutdown = defaultOnShutdownCallback; public static void SetShutdownCallback(Action callback) { OnShutdown = callback; } public static void Start() { #if (!DEBUG) AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); #endif Console.Title = ServerVersion.GetBuildString(); ConfigReader.OpenConfig(); CrossDomainPolicy.GetPolicy(); Database.OpenDatabase(); GameDataJson.ReadGamedata(); Map.OpenMap(); World.ReadWorldData(); Treasure.Init(); DroppedItems.Init(); WildHorse.Init(); Drawingroom.LoadAllDrawingRooms(); Brickpoet.LoadPoetryRooms(); Multiroom.CreateMultirooms(); Auction.LoadAllAuctionRooms(); Item.DoSpecialCases(); Command.RegisterCommands(); GameServer.StartServer(); } private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { Exception execpt = (Exception)e.ExceptionObject; Logger.ErrorPrint("HISP HAS CRASHED :("); Logger.ErrorPrint("Unhandled Exception: " + execpt.ToString()); Logger.ErrorPrint(execpt.StackTrace); new EventWaitHandle(false, EventResetMode.ManualReset).WaitOne(); } } }