private static void SetMessage(SplashScreen screen, string msg) { //screen.message.Text = msg; }
private static void ThreadMain() { try { using (m_Screen = new SplashScreen()) { Application.Run(m_Screen); } m_Screen = null; } catch { } }
public static void Load() { Culture = new CultureInfo("en-US", false); Culture.NumberFormat.NumberDecimalSeparator = "."; Culture.NumberFormat.NumberGroupSeparator = ","; /* Load localization files */ string defLang = Config.GetAppSetting <string>("DefaultLanguage"); if (defLang == null) { defLang = "ENU"; } if (Client.IsOSI) { Ultima.Files.ReLoadDirectory(); Ultima.Files.LoadMulPath(); } if (!Language.Load(defLang)) { MessageBox.Show( $"WARNING: Razor was unable to load the file Language/Razor_lang.{defLang}\n.", "Language Load Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } m_Running = true; /* Load settings from configuration file */ Ultima.Files.SetMulPath(Config.GetAppSetting <string>("UODataDir")); Ultima.Multis.PostHSFormat = UsePostHSChanges; Client.Instance.ClientEncrypted = Config.GetAppSetting <int>("ClientEncrypted") == 1; Client.Instance.ServerEncrypted = Config.GetAppSetting <int>("ServerEncrypted") == 1; Language.LoadCliLoc(); /* Initialize engine */ SplashScreen.Message = LocString.Initializing; Initialize(typeof(Engine).Assembly); /* Load Profile */ SplashScreen.Message = LocString.LoadingLastProfile; Config.LoadCharList(); if (!Config.LoadLastProfile()) { MessageBox.Show( "The selected profile could not be loaded, using default instead.", "Profile Load Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } /* Start client */ SplashScreen.Message = LocString.LoadingClient; string clientPath = Ultima.Files.GetFilePath("client.exe"); if (clientPath == null || !File.Exists(clientPath)) { MessageBox.Show(SplashScreen.Instance, $"Unable to find the client specified.\n\"{(clientPath != null ? clientPath : "-null-")}\"", "Could Not Find Client", MessageBoxButtons.OK, MessageBoxIcon.Stop); SplashScreen.End(); return; } var result = Client.Instance.LaunchClient(clientPath); if (result != Client.Loader_Error.SUCCESS) { MessageBox.Show(SplashScreen.Instance, String.Format("Unable to launch the client specified. (Error: {1})\n \"{0}\"", clientPath != null ? clientPath : "-null-", result), "Could Not Start Client", MessageBoxButtons.OK, MessageBoxIcon.Stop); SplashScreen.End(); return; } string addr = Config.GetAppSetting <string>("LastServer"); int port = Config.GetAppSetting <int>("LastPort"); IPAddress ip = Resolve(addr); if (ip == IPAddress.None || port == 0) { MessageBox.Show(SplashScreen.Instance, Language.GetString(LocString.BadServerAddr), "Bad Server Address", MessageBoxButtons.OK, MessageBoxIcon.Stop); SplashScreen.End(); return; } Client.Instance.SetConnectionInfo(ip, port); SplashScreen.Message = LocString.WaitingForClient; }
public static unsafe void Install(PluginHeader *plugin) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); AppDomain.CurrentDomain.AssemblyResolve += (sender, e) => { string[] fields = e.Name.Split(','); string name = fields[0]; string culture = fields[2]; if (name.EndsWith(".resources") && !culture.EndsWith("neutral")) { return(null); } AssemblyName askedassembly = new AssemblyName(e.Name); bool isdll = File.Exists(Path.Combine(RootPath, askedassembly.Name + ".dll")); return(Assembly.LoadFile(Path.Combine(RootPath, askedassembly.Name + (isdll ? ".dll" : ".exe")))); }; SplashScreen.Start(); m_ActiveWnd = SplashScreen.Instance; Client.Init(false); if (!(Client.Instance as ClassicUOClient).Install(plugin)) { Process.GetCurrentProcess().Kill(); return; } // load ultimasdk before or the Language.Load will throw the cliloc not found warning every time you run cuo string clientPath = ((OnGetUOFilePath)Marshal.GetDelegateForFunctionPointer(plugin->GetUOFilePath, typeof(OnGetUOFilePath)) )(); // just replicating the static .ctor Ultima.Files.ReLoadDirectory(); Ultima.Files.LoadMulPath(); Ultima.Files.SetMulPath(clientPath); Ultima.Multis.PostHSFormat = UsePostHSChanges; Client.Instance.ClientEncrypted = false; Client.Instance.ServerEncrypted = false; /* Load localization files */ if (!Language.Load("ENU")) { SplashScreen.End(); MessageBox.Show( "WARNING: Razor was unable to load the file Language/Razor_lang.ENU\n.", "Language Load Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } m_Running = true; Language.LoadCliLoc(); /* Initialize engine */ SplashScreen.Message = LocString.Initializing; Initialize(typeof(Engine).Assembly); /* Load Profile */ SplashScreen.Message = LocString.LoadingLastProfile; Config.LoadCharList(); Overrides.Load(); if (!Config.LoadLastProfile()) { MessageBox.Show( "The selected profile could not be loaded, using default instead.", "Profile Load Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } SplashScreen.Message = LocString.WaitingForClient; SplashScreen.End(); Thread t = new Thread(() => { RunUI(); }); t.SetApartmentState(ApartmentState.STA); t.IsBackground = true; t.Start(); }
internal static void Start(RazorEnhanced.Shard selected) { ClientCommunication.ClientEncrypted = selected.PatchEnc; ClientCommunication.ServerEncrypted = selected.OSIEnc; string clientPath = selected.ClientPath; string dataDir = selected.ClientFolder; string addr = selected.Host; int port = selected.Port; Ultima.Files.Directory = selected.ClientFolder; if (!Language.Load("ENU")) { SplashScreen.End(); MessageBox.Show("Unable to load required file Language/Razor_lang.enu", "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error); RazorEnhanced.Settings.General.WriteBool("NotShowLauncher", false); return; } if (dataDir != null && Directory.Exists(dataDir)) { Ultima.Files.SetMulPath(dataDir); } else { MessageBox.Show("Unable to find the Data Folder " + dataDir, "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error); RazorEnhanced.Settings.General.WriteBool("NotShowLauncher", false); return; } Language.LoadCliLoc(); Initialize(typeof(Assistant.Engine).Assembly); ClientCommunication.SetConnectionInfo(IPAddress.None, -1); ClientCommunication.Loader_Error result = ClientCommunication.Loader_Error.UNKNOWN_ERROR; if (clientPath != null && File.Exists(clientPath)) { result = ClientCommunication.LaunchClient(clientPath); } if (result != ClientCommunication.Loader_Error.SUCCESS) { if (clientPath == null && File.Exists(clientPath)) { MessageBox.Show(SplashScreen.Instance, "Unable to find the client " + clientPath, "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show(SplashScreen.Instance, "Unable to launch the client " + clientPath, "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error); } SplashScreen.End(); RazorEnhanced.Settings.General.WriteBool("NotShowLauncher", false); return; } // if these are null then the registry entry does not exist (old razor version) m_ip = Resolve(addr); if (m_ip == IPAddress.None || port == 0) { MessageBox.Show(Language.GetString(LocString.BadServerAddr), "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error); SplashScreen.End(); RazorEnhanced.Settings.General.WriteBool("NotShowLauncher", false); return; } ClientBuild = FileVersionInfo.GetVersionInfo(clientPath).FileBuildPart; ClientMajor = FileVersionInfo.GetVersionInfo(clientPath).FileMajorPart; SplashScreen.Start(); m_ActiveWnd = SplashScreen.Instance; ClientCommunication.SetConnectionInfo(m_ip, port); Ultima.Multis.PostHSFormat = UsePostHSChanges; MainWnd = new MainForm(); Application.Run(MainWnd); m_Running = false; RazorEnhanced.Settings.General.SaveExitData(); // Chiuto toolbar if (RazorEnhanced.ToolBar.ToolBarForm != null) { RazorEnhanced.ToolBar.ToolBarForm.Close(); } // Chiuto Spellgrid if (RazorEnhanced.SpellGrid.SpellGridForm != null) { RazorEnhanced.SpellGrid.SpellGridForm.Close(); } // Stoppo tick timer agent if (RazorEnhanced.Scripts.Timer != null) { RazorEnhanced.Scripts.Timer.Close(); } // Stop forzato di tutti i thread agent RazorEnhanced.AutoLoot.AutoMode = false; RazorEnhanced.Scavenger.AutoMode = false; RazorEnhanced.BandageHeal.AutoMode = false; if (Assistant.Engine.MainWindow.OrganizerStop.Enabled == true) { Assistant.Engine.MainWindow.OrganizerStop.PerformClick(); } if (Assistant.Engine.MainWindow.DressStopButton.Enabled == true) { Assistant.Engine.MainWindow.DressStopButton.PerformClick(); } if (Assistant.Engine.MainWindow.RestockStop.Enabled == true) { Assistant.Engine.MainWindow.RestockStop.PerformClick(); } RazorEnhanced.UI.EnhancedScriptEditor.End(); ClientCommunication.Close(); }
public static void Main(string[] Args) { m_Running = true; Thread.CurrentThread.Name = "Razor Main Thread"; #if !DEBUG AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); Directory.SetCurrentDirectory(Config.GetInstallDirectory()); #endif CheckUpdaterFiles(); if (ClientCommunication.InitializeLibrary(Engine.Version) == 0) { throw new InvalidOperationException("InitializeLibrary: This Razor installation is corrupted."); } if (!File.Exists(Path.Combine(Config.GetInstallDirectory(), "Updater.exe"))) { throw new InvalidOperationException("UpdaterMissing: This Razor installation is corrupted."); } try { Engine.ShardList = Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "ShardList"); } catch { } DateTime lastCheck = DateTime.MinValue; try { lastCheck = DateTime.FromFileTime(Convert.ToInt64(Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "UpdateCheck"), 16)); } catch { } if (lastCheck + TimeSpan.FromHours(3.0) < DateTime.Now) { SplashScreen.Start(); m_ActiveWnd = SplashScreen.Instance; CheckForUpdates(); Config.SetRegString(Microsoft.Win32.Registry.CurrentUser, "UpdateCheck", String.Format("{0:X16}", DateTime.Now.ToFileTime())); } bool patch = Utility.ToInt32(Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "PatchEncy"), 1) != 0; bool showWelcome = Utility.ToInt32(Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "ShowWelcome"), 1) != 0; ClientLaunch launch = ClientLaunch.TwoD; int attPID = -1; string dataDir; ClientCommunication.ClientEncrypted = false; // check if the new ServerEncryption option is in the registry yet dataDir = Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "ServerEnc"); if (dataDir == null) { // if not, add it (copied from UseOSIEnc) dataDir = Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "UseOSIEnc"); if (dataDir == "1") { ClientCommunication.ServerEncrypted = true; Config.SetRegString(Microsoft.Win32.Registry.CurrentUser, "ServerEnc", "1"); } else { Config.SetRegString(Microsoft.Win32.Registry.CurrentUser, "ServerEnc", "0"); ClientCommunication.ServerEncrypted = false; } Config.SetRegString(Microsoft.Win32.Registry.CurrentUser, "PatchEncy", "1"); // reset the patch encryption option to TRUE patch = true; Config.DeleteRegValue(Microsoft.Win32.Registry.CurrentUser, "UseOSIEnc"); // delete the old value } else { ClientCommunication.ServerEncrypted = Utility.ToInt32(dataDir, 0) != 0; } dataDir = null; bool advCmdLine = false; for (int i = 0; i < Args.Length; i++) { string arg = Args[i].ToLower(); if (arg == "--nopatch") { patch = false; } else if (arg == "--clientenc") { ClientCommunication.ClientEncrypted = true; advCmdLine = true; patch = false; } else if (arg == "--serverenc") { ClientCommunication.ServerEncrypted = true; advCmdLine = true; } else if (arg == "--welcome") { showWelcome = true; } else if (arg == "--nowelcome") { showWelcome = false; } else if (arg == "--pid" && i + 1 < Args.Length) { i++; patch = false; attPID = Utility.ToInt32(Args[i], 0); } else if (arg.Substring(0, 5) == "--pid" && arg.Length > 5) //support for uog 1.8 (damn you fixit) { patch = false; attPID = Utility.ToInt32(arg.Substring(5), 0); } else if (arg == "--uodata" && i + 1 < Args.Length) { i++; dataDir = Args[i]; } else if (arg == "--server" && i + 1 < Args.Length) { i++; string[] split = Args[i].Split(',', ':', ';', ' '); if (split.Length >= 2) { Config.SetRegString(Microsoft.Win32.Registry.CurrentUser, "LastServer", split[0]); Config.SetRegString(Microsoft.Win32.Registry.CurrentUser, "LastPort", split[1]); showWelcome = false; } } else if (arg == "--debug") { ScavengerAgent.Debug = true; DragDropManager.Debug = true; } } if (attPID > 0 && !advCmdLine) { ClientCommunication.ServerEncrypted = false; ClientCommunication.ClientEncrypted = false; } if (!Language.Load("ENU")) { SplashScreen.End(); MessageBox.Show("Fatal Error: Unable to load required file Language/Razor_lang.enu\nRazor cannot continue.", "No Language Pack", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } string defLang = Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "DefaultLanguage"); if (defLang != null && !Language.Load(defLang)) { MessageBox.Show(String.Format("WARNING: Razor was unable to load the file Language/Razor_lang.{0}\nENU will be used instead.", defLang), "Language Load Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } string clientPath = ""; // welcome only needed when not loaded by a launcher (ie uogateway) if (attPID == -1) { if (!showWelcome) { int cli = Utility.ToInt32(Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "DefClient"), 0); if (cli < 0 || cli > 1) { launch = ClientLaunch.Custom; clientPath = Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, String.Format("Client{0}", cli - 1)); if (clientPath == null || clientPath == "") { showWelcome = true; } } else { launch = (ClientLaunch)cli; } } if (showWelcome) { SplashScreen.End(); WelcomeForm welcome = new WelcomeForm(); m_ActiveWnd = welcome; if (welcome.ShowDialog() == DialogResult.Cancel) { return; } patch = welcome.PatchEncryption; launch = welcome.Client; dataDir = welcome.DataDirectory; if (launch == ClientLaunch.Custom) { clientPath = welcome.ClientPath; } SplashScreen.Start(); m_ActiveWnd = SplashScreen.Instance; } } if (dataDir != null && Directory.Exists(dataDir)) { Ultima.Files.SetMulPath(dataDir); } Language.LoadCliLoc(); SplashScreen.Message = LocString.Initializing; //m_TimerThread = new Thread( new ThreadStart( Timer.TimerThread.TimerMain ) ); //m_TimerThread.Name = "Razor Timers"; Initialize(typeof(Assistant.Engine).Assembly); //Assembly.GetExecutingAssembly() SplashScreen.Message = LocString.LoadingLastProfile; Config.LoadCharList(); if (!Config.LoadLastProfile()) { MessageBox.Show("The selected profile could not be loaded, using default instead.", "Profile Load Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } if (attPID == -1) { ClientCommunication.SetConnectionInfo(IPAddress.None, -1); ClientCommunication.Loader_Error result = ClientCommunication.Loader_Error.UNKNOWN_ERROR; SplashScreen.Message = LocString.LoadingClient; if (launch == ClientLaunch.TwoD) { clientPath = Ultima.Files.GetFilePath("client.exe"); } else if (launch == ClientLaunch.ThirdDawn) { clientPath = Ultima.Files.GetFilePath("uotd.exe"); } if (!advCmdLine) { ClientCommunication.ClientEncrypted = patch; } if (clientPath != null && File.Exists(clientPath)) { result = ClientCommunication.LaunchClient(clientPath); } if (result != ClientCommunication.Loader_Error.SUCCESS) { if (clientPath == null && File.Exists(clientPath)) { MessageBox.Show(SplashScreen.Instance, String.Format("Unable to find the client specified.\n{0}: \"{1}\"", launch.ToString(), clientPath != null ? clientPath : "-null-"), "Could Not Start Client", MessageBoxButtons.OK, MessageBoxIcon.Stop); } else { MessageBox.Show(SplashScreen.Instance, String.Format("Unable to launch the client specified. (Error: {2})\n{0}: \"{1}\"", launch.ToString(), clientPath != null ? clientPath : "-null-", result), "Could Not Start Client", MessageBoxButtons.OK, MessageBoxIcon.Stop); } SplashScreen.End(); return; } string addr = Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "LastServer"); int port = Utility.ToInt32(Config.GetRegString(Microsoft.Win32.Registry.CurrentUser, "LastPort"), 0); // if these are null then the registry entry does not exist (old razor version) IPAddress ip = Resolve(addr); if (ip == IPAddress.None || port == 0) { MessageBox.Show(SplashScreen.Instance, Language.GetString(LocString.BadServerAddr), "Bad Server Address", MessageBoxButtons.OK, MessageBoxIcon.Stop); SplashScreen.End(); return; } ClientCommunication.SetConnectionInfo(ip, port); } else { string error = "Error attaching to the UO client."; bool result = false; try { result = ClientCommunication.Attach(attPID); } catch (Exception e) { result = false; error = e.Message; } if (!result) { MessageBox.Show(SplashScreen.Instance, String.Format("{1}\nThe specified PID '{0}' may be invalid.", attPID, error), "Attach Error", MessageBoxButtons.OK, MessageBoxIcon.Error); SplashScreen.End(); return; } ClientCommunication.SetConnectionInfo(IPAddress.Any, 0); } Ultima.Multis.PostHSFormat = UsePostHSChanges; if (Utility.Random(4) != 0) { SplashScreen.Message = LocString.WaitingForClient; } else { SplashScreen.Message = LocString.RememberDonate; } m_MainWnd = new MainForm(); Application.Run(m_MainWnd); m_Running = false; try { PacketPlayer.Stop(); } catch {} try { AVIRec.Stop(); } catch {} ClientCommunication.Close(); Counter.Save(); Macros.MacroManager.Save(); Config.Save(); }