public override bool Save() { base.Save(); IniSettings.ScrollRate.Value = ReverseScrollRate(trbScrollRate.Value); IniSettings.ScrollCoasting.Value = Convert.ToInt32(!chkScrollCoasting.Checked); IniSettings.TargetLines.Value = chkTargetLines.Checked; IniSettings.Tooltips.Value = chkTooltips.Checked; #if YR IniSettings.ShowHiddenObjects.Value = chkShowHiddenObjects.Checked; #endif #if DTA || TS || TI IniSettings.MoveToUndeploy.Value = !chkAltToUndeploy.Checked; if (chkBlackChatBackground.Checked) { IniSettings.TextBackgroundColor.Value = TEXT_BACKGROUND_COLOR_BLACK; } else { IniSettings.TextBackgroundColor.Value = TEXT_BACKGROUND_COLOR_TRANSPARENT; } #endif string playerName = NameValidator.GetValidOfflineName(tbPlayerName.Text); if (playerName.Length > 0) { IniSettings.PlayerName.Value = playerName; } return(false); }
protected override void Initialize() { Logger.Log("Initializing GameClass."); string windowTitle = ClientConfiguration.Instance.WindowTitle; Window.Title = string.IsNullOrEmpty(windowTitle) ? string.Format("{0} Client", MainClientConstants.GAME_NAME_SHORT) : windowTitle; base.Initialize(); string primaryNativeCursorPath = ProgramConstants.GetResourcePath() + "cursor.cur"; string alternativeNativeCursorPath = ProgramConstants.GetBaseResourcePath() + "cursor.cur"; AssetLoader.Initialize(GraphicsDevice, content); AssetLoader.AssetSearchPaths.Add(ProgramConstants.GetResourcePath()); AssetLoader.AssetSearchPaths.Add(ProgramConstants.GetBaseResourcePath()); AssetLoader.AssetSearchPaths.Add(ProgramConstants.GamePath); #if !XNA && !WINDOWSGL // Try to create and load a texture to check for MonoGame 3.7.1 compatibility try { Texture2D texture = new Texture2D(GraphicsDevice, 100, 100, false, SurfaceFormat.Color); Color[] colorArray = new Color[100 * 100]; texture.SetData(colorArray); UISettings.ActiveSettings.CheckBoxClearTexture = AssetLoader.LoadTextureUncached("checkBoxClear.png"); } catch (Exception ex) { if (ex.Message.Contains("DeviceRemoved")) { Logger.Log("Creating texture on startup failed! Creating .dxfail file and re-launching client launcher."); if (!Directory.Exists(ProgramConstants.GamePath + "Client")) { Directory.CreateDirectory(ProgramConstants.GamePath + "Client"); } // Create .dxfail file that the launcher can check for this error // and handle it by redirecting the user to the XNA version instead File.WriteAllBytes(ProgramConstants.GamePath + "Client" + Path.DirectorySeparatorChar + ".dxfail", new byte[] { 1 }); string launcherExe = ClientConfiguration.Instance.LauncherExe; if (string.IsNullOrEmpty(launcherExe)) { // LauncherExe is unspecified, just throw the exception forward // because we can't handle it Logger.Log("No LauncherExe= specified in ClientDefinitions.ini! " + "Forwarding exception to regular exception handler."); throw ex; } else { Logger.Log("Starting " + launcherExe + " and exiting."); Process.Start(ProgramConstants.GamePath + launcherExe); Environment.Exit(0); } } } #endif InitializeUISettings(); WindowManager wm = new WindowManager(this, graphics); wm.Initialize(content, ProgramConstants.GetBaseResourcePath()); SetGraphicsMode(wm); wm.SetIcon(ProgramConstants.GetBaseResourcePath() + "clienticon.ico"); wm.SetControlBox(true); wm.Cursor.Textures = new Texture2D[] { AssetLoader.LoadTexture("cursor.png"), AssetLoader.LoadTexture("waitCursor.png") }; if (File.Exists(primaryNativeCursorPath)) { wm.Cursor.LoadNativeCursor(primaryNativeCursorPath); } else if (File.Exists(alternativeNativeCursorPath)) { wm.Cursor.LoadNativeCursor(alternativeNativeCursorPath); } Components.Add(wm); string playerName = UserINISettings.Instance.PlayerName.Value.Trim(); if (UserINISettings.Instance.AutoRemoveUnderscoresFromName) { while (playerName.EndsWith("_")) { playerName = playerName.Substring(0, playerName.Length - 1); } } if (string.IsNullOrEmpty(playerName)) { playerName = WindowsIdentity.GetCurrent().Name; playerName = playerName.Substring(playerName.IndexOf("\\") + 1); } playerName = Renderer.GetSafeString(NameValidator.GetValidOfflineName(playerName), 0); ProgramConstants.PLAYERNAME = playerName; UserINISettings.Instance.PlayerName.Value = playerName; LoadingScreen ls = new LoadingScreen(wm); wm.AddAndInitializeControl(ls); ls.ClientRectangle = new Rectangle((wm.RenderResolutionX - ls.Width) / 2, (wm.RenderResolutionY - ls.Height) / 2, ls.Width, ls.Height); }