/// <summary> /// Load a Character and open the correct window. /// </summary> /// <param name="strFileName">File to load.</param> /// <param name="blnIncludeInMRU">Whether or not the file should appear in the MRU list.</param> /// <param name="strNewName">New name for the character.</param> /// <param name="blnClearFileName">Whether or not the name of the save file should be cleared.</param> public void LoadCharacter(string strFileName, bool blnIncludeInMRU = true, string strNewName = "", bool blnClearFileName = false) { if (File.Exists(strFileName) && strFileName.EndsWith("chum5")) { bool blnLoaded = false; Character objCharacter = new Character(); objCharacter.FileName = strFileName; blnLoaded = objCharacter.Load(); if (!blnLoaded) { return; } // If a new name is given, set the character's name to match (used in cloning). if (strNewName != "") { objCharacter.Name = strNewName; } // Clear the File Name field so that this does not accidentally overwrite the original save file (used in cloning). if (blnClearFileName) { objCharacter.FileName = ""; } // Show the character form. if (!objCharacter.Created) { frmCreate frmCharacter = new frmCreate(objCharacter); frmCharacter.MdiParent = this; frmCharacter.WindowState = FormWindowState.Maximized; frmCharacter.Loading = true; frmCharacter.Show(); } else { frmCareer frmCharacter = new frmCareer(objCharacter); frmCharacter.MdiParent = this; frmCharacter.WindowState = FormWindowState.Maximized; frmCharacter.Loading = true; frmCharacter.DiceRollerOpened += objCareer_DiceRollerOpened; frmCharacter.DiceRollerOpenedInt += objCareer_DiceRollerOpenedInt; frmCharacter.Show(); } if (blnIncludeInMRU) { GlobalOptions.Instance.AddToMRUList(strFileName); } objCharacter.CharacterNameChanged += objCharacter_CharacterNameChanged; objCharacter_CharacterNameChanged(objCharacter); } else { MessageBox.Show(LanguageManager.Instance.GetString("Message_FileNotFound").Replace("{0}", strFileName), LanguageManager.Instance.GetString("MessageTitle_FileNotFound"), MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// Open the correct windows for a list of characters (not thread-safe). /// </summary> /// <param name="lstCharacters">Characters for which windows should be opened.</param> public void OpenCharacterList(IEnumerable <Character> lstCharacters, bool blnIncludeInMRU = true) { if (lstCharacters == null) { return; } Cursor = Cursors.WaitCursor; foreach (Character objCharacter in lstCharacters) { if (objCharacter == null) { continue; } Timekeeper.Start("load_event_time"); // Show the character form. if (!objCharacter.Created) { frmCreate frmCharacter = new frmCreate(objCharacter) { MdiParent = this, WindowState = FormWindowState.Maximized, Loading = true }; frmCharacter.Show(); } else { frmCareer frmCharacter = new frmCareer(objCharacter) { MdiParent = this, WindowState = FormWindowState.Maximized, Loading = true }; frmCharacter.DiceRollerOpened += objCareer_DiceRollerOpened; frmCharacter.DiceRollerOpenedInt += objCareer_DiceRollerOpenedInt; frmCharacter.Show(); } if (blnIncludeInMRU) { GlobalOptions.AddToMRUList(objCharacter.FileName); } objCharacter.CharacterNameChanged += objCharacter_CharacterNameChanged; objCharacter_CharacterNameChanged(objCharacter); Timekeeper.Finish("load_event_time"); } Cursor = Cursors.Default; }
/// <summary> /// Load a Character and open the correct window. /// </summary> /// <param name="strFileName">File to load.</param> /// <param name="blnIncludeInMRU">Whether or not the file should appear in the MRU list.</param> /// <param name="strNewName">New name for the character.</param> /// <param name="blnClearFileName">Whether or not the name of the save file should be cleared.</param> public void LoadCharacter(string strFileName, bool blnIncludeInMRU = true, string strNewName = "", bool blnClearFileName = false) { if (File.Exists(strFileName) && strFileName.EndsWith("chum5")) { Timekeeper.Start("loading"); Cursor.Current = Cursors.WaitCursor; bool blnLoaded = false; Character objCharacter = new Character(); objCharacter.FileName = strFileName; XmlDocument objXmlDocument = new XmlDocument(); //StreamReader is used to prevent encoding errors using (StreamReader sr = new StreamReader(strFileName, true)) { try { objXmlDocument.Load(sr); } catch (XmlException ex) { MessageBox.Show(LanguageManager.GetString("Message_FailedLoad").Replace("{0}", ex.Message), LanguageManager.GetString("MessageTitle_FailedLoad"), MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } XmlNode objXmlCharacter = objXmlDocument.SelectSingleNode("/character"); if (!string.IsNullOrEmpty(objXmlCharacter?["appversion"]?.InnerText)) { Version verSavedVersion; Version verCorrectedVersion; string strVersion = objXmlCharacter["appversion"].InnerText; if (strVersion.StartsWith("0.")) { strVersion = strVersion.Substring(2); } Version.TryParse(strVersion, out verSavedVersion); Version.TryParse("5.188.34", out verCorrectedVersion); if (verCorrectedVersion != null && verSavedVersion != null) { int intResult = verSavedVersion.CompareTo(verCorrectedVersion); //Check for typo in Corrupter quality and correct it if (intResult == -1) { File.WriteAllText(strFileName, Regex.Replace(File.ReadAllText(strFileName), "Corruptor", "Corrupter")); } } } Timekeeper.Start("load_file"); blnLoaded = objCharacter.Load(); Timekeeper.Finish("load_file"); Timekeeper.Start("load_free"); if (!blnLoaded) { Cursor.Current = Cursors.Default; return; } // If a new name is given, set the character's name to match (used in cloning). if (!string.IsNullOrEmpty(strNewName)) { objCharacter.Name = strNewName; } // Clear the File Name field so that this does not accidentally overwrite the original save file (used in cloning). if (blnClearFileName) { objCharacter.FileName = string.Empty; } // Show the character form. if (!objCharacter.Created) { frmCreate frmCharacter = new frmCreate(objCharacter) { MdiParent = this, WindowState = FormWindowState.Maximized, Loading = true }; frmCharacter.Show(); } else { frmCareer frmCharacter = new frmCareer(objCharacter) { MdiParent = this, WindowState = FormWindowState.Maximized, Loading = true }; frmCharacter.DiceRollerOpened += objCareer_DiceRollerOpened; frmCharacter.DiceRollerOpenedInt += objCareer_DiceRollerOpenedInt; frmCharacter.Show(); } if (blnIncludeInMRU) { GlobalOptions.AddToMRUList(strFileName); } objCharacter.CharacterNameChanged += objCharacter_CharacterNameChanged; objCharacter_CharacterNameChanged(objCharacter); Cursor.Current = Cursors.Default; } else { MessageBox.Show(LanguageManager.GetString("Message_FileNotFound").Replace("{0}", strFileName), LanguageManager.GetString("MessageTitle_FileNotFound"), MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void mnuNewCritter_Click(object sender, EventArgs e) { Character objCharacter = new Character(); string settingsPath = Path.Combine(Application.StartupPath, "settings"); string[] settingsFiles = Directory.GetFiles(settingsPath, "*.xml"); if (settingsFiles.Length > 1) { Cursor = Cursors.WaitCursor; frmSelectSetting frmPickSetting = new frmSelectSetting(); frmPickSetting.ShowDialog(this); Cursor = Cursors.Default; if (frmPickSetting.DialogResult == DialogResult.Cancel) { return; } objCharacter.SettingsFile = frmPickSetting.SettingsFile; } else { string strSettingsFile = settingsFiles[0]; objCharacter.SettingsFile = Path.GetFileName(strSettingsFile); } Cursor = Cursors.WaitCursor; // Override the defaults for the setting. objCharacter.IgnoreRules = true; objCharacter.IsCritter = true; objCharacter.Created = true; objCharacter.BuildMethod = CharacterBuildMethod.Karma; objCharacter.BuildPoints = 0; // Show the Metatype selection window. frmKarmaMetatype frmSelectMetatype = new frmKarmaMetatype(objCharacter) { XmlFile = "critters.xml" }; frmSelectMetatype.ShowDialog(); Cursor = Cursors.Default; if (frmSelectMetatype.DialogResult == DialogResult.Cancel) { return; } Cursor = Cursors.WaitCursor; // Add the Unarmed Attack Weapon to the character. XmlDocument objXmlDocument = XmlManager.Load("weapons.xml"); XmlNode objXmlWeapon = objXmlDocument.SelectSingleNode("/chummer/weapons/weapon[name = \"Unarmed Attack\"]"); if (objXmlWeapon != null) { Weapon objWeapon = new Weapon(objCharacter); objWeapon.Create(objXmlWeapon, null, null, null, objCharacter.Weapons); objCharacter.Weapons.Add(objWeapon); } frmCareer frmNewCharacter = new frmCareer(objCharacter) { MdiParent = this, WindowState = FormWindowState.Maximized }; frmNewCharacter.Show(); objCharacter.CharacterNameChanged += objCharacter_CharacterNameChanged; Cursor = Cursors.Default; }
public async Task LoadCharacter() { Properties.Settings.Default.SINnerUrl = "https://sinners.azurewebsites.net/"; Debug.WriteLine("Unit test initialized for: LoadCharacter()"); string path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase; if (MainForm == null) { MainForm = new frmChummerMain(true); } path = System.IO.Path.Combine(path, "data"); DirectoryInfo d = new DirectoryInfo(path); //Assuming Test is your Folder FileInfo[] Files = d.GetFiles("*.chum5"); //Getting Text files foreach (FileInfo file in Files) { try { Debug.WriteLine("Loading: " + file.Name); Character c = await MainForm.LoadCharacter(file.FullName); if (c == null) { continue; } Debug.WriteLine("Character loaded: " + c.Name); if (c.Created) { using (frmCareer career = new frmCareer(c)) { career.Show(); ucSINnersUserControl sINnersUsercontrol = new ucSINnersUserControl(); var ce = await sINnersUsercontrol.SetCharacterFrom(career); await ChummerHub.Client.Backend.Utils.PostSINnerAsync(ce); await ChummerHub.Client.Backend.Utils.UploadChummerFileAsync(ce); career.Hide(); career.Dispose(); } } else { using (frmCreate create = new frmCreate(c)) { create.Show(); ucSINnersUserControl sINnersUsercontrol = new ucSINnersUserControl(); var ce = await sINnersUsercontrol.SetCharacterFrom(create); await ChummerHub.Client.Backend.Utils.PostSINnerAsync(ce); await ChummerHub.Client.Backend.Utils.UploadChummerFileAsync(ce); create.Hide(); create.Dispose(); } } } catch (Exception e) { string msg = "Exception while loading " + file.FullName + ":"; msg += Environment.NewLine + e.ToString(); Debug.Write(msg); throw; } } }