using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Reflection; using System.Text; using System.Windows.Forms; using CS; using FilterAPI; using FilterCentralV2.LocalHandlers; using FilterCentralV2.LocalNetworking; using SHN; namespace FilterCentralV2 { static class Program { public static Config Conf; public static Database SQL; public static SHNFile ItemInfo; public static SHNFile MobInfo; public static SHNFile ActiveSkill; // for GameLogMonitor public static Dictionary ItemNames = new Dictionary(); public static Dictionary MobNames = new Dictionary(); public static Dictionary SkillNames = new Dictionary(); public static LocalHandlerLoader LocalHandlers; public static LocalClient LoginClient; public static LocalClient ManagerClient; public static LocalClient RestClient; public static Dictionary ZoneClients = new Dictionary(); public static LocalClient LauncherClient; public static MainWindow mainWindow; [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); mainWindow = new MainWindow(); try { Application.Run(mainWindow); } catch (Exception Error) { File.WriteAllLines(String.Format("{0}{1}Crash.txt", AppDomain.CurrentDomain.BaseDirectory, AppDomain.CurrentDomain.FriendlyName.Replace(".exe", "")), new String[] { Error.ToString() }); } } public static void WriteLine(ConsoleColor color, String Text) { if (mainWindow != null) { if (mainWindow.InvokeRequired) { mainWindow.BeginInvoke((MethodInvoker)(() => { mainWindow.MainWriteLine(color, Text); })); } else { mainWindow.MainWriteLine(color, Text); } } } internal static void GLMWriteLine(ConsoleColor color, String Text) { if (mainWindow != null) { if (mainWindow.InvokeRequired) { mainWindow.BeginInvoke((MethodInvoker)(() => { mainWindow.GLMWriteLine(color, Text); })); } else { mainWindow.GLMWriteLine(color, Text); } } } public static void LoadSHNs() { MethodInfo CryptoMethod = CSFile.LoadCode(Conf.GetConfigValue("SHNCryptoFile"), "SHN.SHNCrypto", Conf.GetConfigValue("SHNCryptoName")); ItemInfo = new SHNFile(String.Format("{0}ItemInfo.shn", Conf.GetConfigValue("ServerSHNPath")), CryptoMethod); if (ItemInfo.Type == SHNType.TextData) { ItemInfo.SHNEncoding = Encoding.ASCII; } else { ItemInfo.SHNEncoding = Encoding.GetEncoding("ISO-8859-1"); } if (ItemInfo.Type != SHNType.QuestData) { ItemInfo.Read(); } else { ItemInfo.ReadQuest(); } ItemInfo.DisallowRowChanges(); MobInfo = new SHNFile(String.Format("{0}MobInfo.shn", Conf.GetConfigValue("ServerSHNPath")), CryptoMethod); if (MobInfo.Type == SHNType.TextData) { MobInfo.SHNEncoding = Encoding.ASCII; } else { MobInfo.SHNEncoding = Encoding.GetEncoding("ISO-8859-1"); } if (MobInfo.Type != SHNType.QuestData) { MobInfo.Read(); } else { MobInfo.ReadQuest(); } MobInfo.DisallowRowChanges(); ActiveSkill = new SHNFile(String.Format("{0}ActiveSkill.shn", Conf.GetConfigValue("ServerSHNPath")), CryptoMethod); if (ActiveSkill.Type == SHNType.TextData) { ActiveSkill.SHNEncoding = Encoding.ASCII; } else { ActiveSkill.SHNEncoding = Encoding.GetEncoding("ISO-8859-1"); } if (ActiveSkill.Type != SHNType.QuestData) { ActiveSkill.Read(); } else { ActiveSkill.ReadQuest(); } ActiveSkill.DisallowRowChanges(); foreach (DataRow Row in ItemInfo.Table.Rows) { if (!ItemNames.ContainsKey(Convert.ToInt32(Row[0]))) { ItemNames.Add(Convert.ToInt32(Row[0]), Convert.ToString(Row[2])); } } foreach (DataRow Row in MobInfo.Table.Rows) { if (!MobNames.ContainsKey(Convert.ToInt32(Row[0]))) { MobNames.Add(Convert.ToInt32(Row[0]), Convert.ToString(Row[2])); } } foreach (DataRow Row in ActiveSkill.Table.Rows) { if (!SkillNames.ContainsKey(Convert.ToInt32(Row[0]))) { SkillNames.Add(Convert.ToInt32(Row[0]), Convert.ToString(Row[2])); } } } } }