private void LoadWorldFile(UOXData.Script.WorldFile90 toAdd, bool doImport) { foreach (UOXData.Script.WorldSection mScript in toAdd.Sections) { if (mScript.SectionName == "CHARACTER") { uint charSerial = UOXData.Conversion.ToUInt32(mScript.FindTag("Serial")); if (charSerial > worldObjects.NextCharSer) { worldObjects.NextCharSer = charSerial + 1; } CharObject mChar = new CharObject(charSerial); mChar.SerString = UOXData.Conversion.ToHexString(charSerial); mChar.Name = mScript.FindTag("Name"); mChar.ID = UOXData.Conversion.ToUInt16(mScript.FindTag("ID")); mChar.Section = mScript; if (doImport) { worldObjects.ImportCharList.Add(mChar); } else { worldObjects.CharList.Add(mChar); } ++totalChars; } else { uint contSerial = UOXData.Conversion.ToUInt32(mScript.FindTag("Cont")); uint itemSerial = UOXData.Conversion.ToUInt32(mScript.FindTag("Serial")); if (itemSerial >= worldObjects.NextItemSer) { worldObjects.NextItemSer = itemSerial + 1; } if (contSerial != 0xFFFFFFFF) { ItemObject mItem = new ItemObject(itemSerial); mItem.Container = contSerial; mItem.SerString = UOXData.Conversion.ToHexString(itemSerial); mItem.Name = mScript.FindTag("Name"); mItem.Section = mScript; mItem.ID = UOXData.Conversion.ToUInt16(mScript.FindTag("ID")); if (doImport) { worldObjects.ImportItemList.Add(mItem); } else { worldObjects.ItemList.Add(mItem); } } ++totalItems; } } }
private void OpenBrowseWindow() { folderBrowserDialog.Description = "Please Select the UOX3 Save File Directory to Load."; if (folderBrowserDialog.ShowDialog() == DialogResult.OK) { string dirPath = folderBrowserDialog.SelectedPath; worldFiles.Clear(); worldObjects.Clear(); comboCharList.Items.Clear(); dataGridItems.Rows.Clear(); totalItems = 0; totalChars = 0; txtDirPath.Text = dirPath; UpdateTotalValues(); comboCharList.Update(); dataGridItems.Update(); txtDirPath.Update(); string[] fileList = Directory.GetFiles(dirPath, "*.*.wsc"); if (fileList.Length > 0) { progressBar.Value = 0; foreach (string mFile in fileList) { UOXData.Script.WorldFile90 toAdd = new UOXData.Script.WorldFile90(mFile); LoadWorldFile(toAdd, false); worldFiles.Add(toAdd); } UpdateTotalValues(); progressBar.Maximum = worldObjects.CharList.Count + worldObjects.ItemList.Count; foreach (CharObject mChar in worldObjects.CharList) { comboCharList.Items.Add(mChar.Name + " (" + mChar.SerString + ")"); progressBar.PerformStep(); } foreach (ItemObject mItem in worldObjects.ItemList) { WorldObject mObj = worldObjects.FindObjectBySerial(mItem.Container, false); if (mObj != null) { mObj.ContainsList.Add(mItem); } progressBar.PerformStep(); } if (comboCharList.Items.Count > 0) { comboCharList.SelectedIndex = 0; } else { dataGridItems.Rows.Add("World Loaded: No Characters to Display"); } } else { MessageBox.Show("No worldfile found, please select a valid directory", "File Not Found"); } } }
private void ImportCharacters() { bool selectFirst = false; if (comboCharList.Items.Count == 0) { selectFirst = true; } fileBrowserDialog.Filter = "Character Export Files (*.cef)|*.cef|All Files (*.*)|*.*"; if (fileBrowserDialog.ShowDialog() == DialogResult.OK) { progressBar.Maximum = fileBrowserDialog.FileNames.Length; progressBar.Value = 0; foreach (string filePath in fileBrowserDialog.FileNames) { if (File.Exists(filePath)) { UOXData.Script.WorldFile90 importWorld = new UOXData.Script.WorldFile90(filePath); if (importWorld.Sections.Count > 0) { LoadWorldFile(importWorld, true); worldFiles.Add(importWorld); } } progressBar.PerformStep(); } if (worldObjects.ImportCharList.Count > 0) { worldHasChanged = true; UpdateTotalValues(); progressBar.Maximum = worldObjects.ImportCharList.Count + worldObjects.ImportItemList.Count; progressBar.Value = 0; foreach (ItemObject mItem in worldObjects.ImportItemList) { WorldObject mObj = worldObjects.FindObjectBySerial(mItem.Container, true); if (mObj != null) { mObj.ContainsList.Add(mItem); } progressBar.PerformStep(); } foreach (CharObject mChar in worldObjects.ImportCharList) { bool contChanged = false; if (mChar.Serial < worldObjects.NextCharSer) { contChanged = true; mChar.Serial = worldObjects.NextCharSer; mChar.SerString = UOXData.Conversion.ToHexString(mChar.Serial); UOXData.Script.TagDataPair serTag = mChar.Section.GetDataPair("Serial"); serTag.Data = new UOXData.Script.DataValue(mChar.SerString); ++worldObjects.NextCharSer; } CheckItemsInCont(mChar, contChanged); worldObjects.CharList.Add(mChar); comboCharList.Items.Add(mChar.Name + " (" + mChar.SerString + ")"); progressBar.PerformStep(); } } worldObjects.ImportCharList.Clear(); worldObjects.ImportItemList.Clear(); if (selectFirst) { if (comboCharList.Items.Count > 0) { comboCharList.SelectedIndex = 0; } else { dataGridItems.Rows.Clear(); dataGridItems.Rows.Add("Character File Imported: No Characters to Display"); } } } }