public void Save(bool New) { if (m_FileHeader == null || New) { m_FileHeader = new DesignData(m_Name, m_Category, m_SubSection); m_FileHeader.Width = m_Width; m_FileHeader.Height = m_Height; m_FileHeader.UserWidth = m_UserWidth; m_FileHeader.UserHeight = m_UserHeight; ExportDesignItems(ref m_FileHeader); HouseDesignData.SaveNewDesign(m_FileHeader); } else { m_FileHeader.Items.Clear(); m_FileHeader.Width = m_Width; m_FileHeader.Height = m_Height; m_FileHeader.UserWidth = m_UserWidth; m_FileHeader.UserHeight = m_UserHeight; ExportDesignItems(ref m_FileHeader); HouseDesignData.UpdateDesign(m_FileHeader); } }
public DesignNode(DesignData design) { this.Text = design.Name; _design = design; _design.OnSaved += new DesignData.SavedEvent(OnSaved); }
private void OnNewDesign(DesignData design) { bool match = false; treeView1.BeginUpdate(); foreach (CategoryNode node in treeView1.Nodes) { if (node.Text.ToLower() == design.Category.ToLower()) { node.AddDesign(design); match = true; break; } } if (!match) { CategoryNode node = new CategoryNode(design.Category); node.AddDesign(design); treeView1.Nodes.Add(node); } treeView1.EndUpdate(); }
private static void WriteSavedComponentData(DesignData header, BinaryFileReader oldFileReader, BinaryFileWriter writer) { int count = header.RecordCount; for (int j = 0; j < count; ++j) { int ver = oldFileReader.ReadInt(); switch (ver) { case 0: writer.WriteInt(ver); // version writer.WriteInt(oldFileReader.ReadInt()); // index writer.WriteInt(oldFileReader.ReadInt()); // x writer.WriteInt(oldFileReader.ReadInt()); // y writer.WriteInt(oldFileReader.ReadInt()); // z writer.WriteInt(oldFileReader.ReadInt()); // level break; case 1: writer.WriteInt(ver); // version writer.WriteInt(oldFileReader.ReadInt()); // index writer.WriteInt(oldFileReader.ReadInt()); // x writer.WriteInt(oldFileReader.ReadInt()); // y writer.WriteInt(oldFileReader.ReadInt()); // z writer.WriteInt(oldFileReader.ReadInt()); // level writer.WriteInt(oldFileReader.ReadInt()); // hue break; } } }
public void Populate(ArrayList designs) { Hashtable categories = new Hashtable(0, new CaseInsensitiveHashCodeProvider(), new CaseInsensitiveComparer()); treeView1.BeginUpdate(); // clear nodes treeView1.Nodes.Clear(); for (int i = 0; i < designs.Count; ++i) { DesignData design = (DesignData)designs[i]; CategoryNode category = null; if (categories.ContainsKey(design.Category)) { category = (CategoryNode)categories[design.Category]; } else { category = new CategoryNode(design.Category); categories.Add(category.Text, category); treeView1.Nodes.Add(category); } category.AddDesign(design); } treeView1.EndUpdate(); categories.Clear(); }
public override void Export(DesignData design) { string filename = GetExportFileName(design.Name); if (filename.Length > 0) { if (!design.IsLoaded) { design.Load(); } using (StreamWriter sw = new StreamWriter(filename, false)) { sw.WriteLine("6 version"); sw.WriteLine("1 template id"); sw.WriteLine("-1 item version"); sw.WriteLine("{0} num components", design.Items.Count); for (int i = 0; i < design.Items.Count; ++i) { DesignItem item = design.Items[i]; sw.WriteLine("{0} {1} {2} {3} 1", item.ItemID, item.X, item.Y, item.Z); } } } }
public int PatchMulti(DesignData design, ArrayList Components) { bool Success; mDesign = design; mComponents = Components; Success = LoadSourceMultiIndex(); Success = LoadSourceMultiMul(); if (Success) { UpdateIndex(); AddBlocksToMultiMul(); GenerateNewMultiIdxFile(); GenerateNewMultiMulFile(); } if (Success) { return(mFreeSlot); } else { return(-1); } }
public void ExportDesigns(ArrayList designs, string defaultFile) { if (designs.Count == 0) { return; } string filename = GetExportFileName(defaultFile); if (filename.Length > 0) { BinaryFileWriter writer = new BinaryFileWriter(File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None)); // write file version writer.WriteShort(EXPORT_VERSION); // writer design count writer.WriteShort((short)designs.Count); for (int i = 0; i < designs.Count; ++i) { DesignData design = (DesignData)designs[i]; if (!design.IsLoaded) { design.Load(); } ExportDesign(design, writer); design.Unload(); } writer.Close(); System.Windows.Forms.MessageBox.Show(string.Format("{0} designs were exported.", designs.Count)); } }
public void ExportDesign(DesignData design, BinaryFileWriter writer) { writer.WriteString(design.Name); writer.WriteString(design.Category); writer.WriteString(design.Subsection); writer.WriteInt(design.Width); writer.WriteInt(design.Height); writer.WriteInt(design.UserWidth); writer.WriteInt(design.UserHeight); // item count writer.WriteInt(design.Items.Count); for (int i = 0; i < design.Items.Count; ++i) { DesignItem item = design.Items[i]; writer.WriteShort(item.ItemID); writer.WriteShort((short)item.X); writer.WriteShort((short)item.Y); writer.WriteShort((short)item.Z); writer.WriteShort(item.Level); writer.WriteShort(item.Hue); } }
private void btnProperties_Click(object sender, System.EventArgs e) { if (SelectedNode != null) { if (!SelectedNode.Design.IsLoaded) { SelectedNode.Design.Load(); } DesignPropertyEditor dlg = new DesignPropertyEditor(); DesignData design = SelectedNode.Design; dlg.LoadForm(ref design); if (dlg.DialogResult == DialogResult.OK) { Cursor.Current = Cursors.WaitCursor; design.Save(); Cursor.Current = Cursors.Default; } design.Unload(); dlg.Dispose(); } }
private void RaiseExtractedEvent(DesignData design) { if (OnExtracted != null) { OnExtracted(design); } }
public override void Export(DesignData design) { string filename = Utility.GetSaveFileName("(*.mlt)|*.mlt", "Multi Data File", ""); if (filename.Length > 0) { if (!design.IsLoaded) { design.Load(); } int zoffset = CalculateMinZ(design.Items); BinaryFileWriter writer = new BinaryFileWriter(File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None)); for (int i = 0; i < design.Items.Count; ++i) { DesignItem item = design.Items[i]; writer.WriteShort(item.ItemID); writer.WriteShort((short)item.X); writer.WriteShort((short)item.Y); writer.WriteShort((short)(item.Z - zoffset)); writer.WriteShort(1); writer.WriteShort(item.Hue); } writer.Close(); } }
public static void LoadDesign(DesignData designHeader) { if (File.Exists(BIN_FILE)) { BinaryFileReader reader = new BinaryFileReader(File.Open(BIN_FILE, FileMode.Open, FileAccess.Read, FileShare.Read)); try { reader.Seek(designHeader.FilePosition, SeekOrigin.Begin); int count = designHeader.RecordCount; // load the house components int index, x, y, z, level, hue; for (int i = 0; i < count; ++i) { index = 0; x = 0; y = 0; z = 0; level = 0; hue = 0; int compVersion = reader.ReadInt(); switch (compVersion) { case 0: index = reader.ReadInt(); x = reader.ReadInt(); y = reader.ReadInt(); z = reader.ReadInt(); level = reader.ReadInt(); break; case 1: index = reader.ReadInt(); x = reader.ReadInt(); y = reader.ReadInt(); z = reader.ReadInt(); level = reader.ReadInt(); hue = reader.ReadInt(); break; } designHeader.Items.Add(new DesignItem(index, x, y, z, level, hue)); } } catch (Exception e) { System.Windows.Forms.MessageBox.Show("Unable to load design\n" + e.Message); } finally { reader.Close(); } } }
public static void DeleteDesign(DesignData header) { int index = m_DesignHeaders.IndexOf(header); if (index != -1) { m_DesignHeaders.RemoveAt(index); SaveData(); } }
public static void SaveNewDesign(DesignData design) { m_UnsavedDesigns.Add(design); SaveData(); if (OnNewDesignSaved != null) { OnNewDesignSaved(design); } }
private void mnuImportMultiText_Click(object sender, System.EventArgs e) { Cursor.Current = Cursors.WaitCursor; MultiTextDataAdapter adapter = new MultiTextDataAdapter(); DesignData design = adapter.ImportDesign(); if (design != null) { design.Save(); } Cursor.Current = Cursors.Default; }
private void OpenDesignPreview(DesignData design) { Cursor.Current = Cursors.WaitCursor; if (!design.IsLoaded) { design.Load(); } Cursor.Current = Cursors.Default; new DesignPreview().LoadForm(new HouseDesign(design)); }
public override DesignData ImportDesign() { string filename = GetImportFileName(); if (!File.Exists(filename)) { return(null); } DesignData design = new DesignData(); DesignItemCol designItems = new DesignItemCol(); StreamReader reader = new StreamReader(File.OpenRead(filename)); string[] TextArr; string Text; char[] Separator = { ' ' }; try { while (reader.Peek() > -1) { Text = reader.ReadLine(); if (IsMultiBlock(Text)) { TextArr = Text.Split(Separator); DesignItem designItem = new DesignItem(); designItem.ItemID = short.Parse(TextArr[0]); designItem.X = int.Parse(TextArr[1]); designItem.Y = int.Parse(TextArr[2]); designItem.Z = int.Parse(TextArr[3]); designItems.Add(designItem); } } design.ImportItems(designItems, true, false); } catch { } finally { reader.Close(); } return(design); }
public static void LoadDesignHeaders() { if (File.Exists(INDEX_FILE)) { BinaryFileReader reader = new BinaryFileReader(File.Open(INDEX_FILE, FileMode.Open, FileAccess.Read, FileShare.Read)); try { int count = reader.ReadInt(); int version = reader.ReadInt(); m_DesignHeaders = new ArrayList(count); for (int i = 0; i < count; ++i) { DesignData header = new DesignData(); switch (version) { case 0: header.Name = reader.ReadString(); header.Category = reader.ReadString(); header.Subsection = reader.ReadString(); header.Width = reader.ReadInt(); header.Height = reader.ReadInt(); header.UserWidth = reader.ReadInt(); header.UserHeight = reader.ReadInt(); header.FilePosition = reader.ReadLong(); header.RecordCount = reader.ReadInt(); break; } m_DesignHeaders.Add(header); } } catch (Exception e) { m_DesignHeaders.Clear(); System.Windows.Forms.MessageBox.Show("Unable to load the designs\n" + e.Message); } finally { reader.Close(); } } else { m_DesignHeaders = new ArrayList(); } }
private static void WriteSavedComponentData(BinaryFileReader oldBinReader, BinaryFileWriter binWriter) { for (int i = 0; i < m_DesignHeaders.Count; ++i) { DesignData header = (DesignData)m_DesignHeaders[i]; oldBinReader.Seek(header.FilePosition, SeekOrigin.Begin); // update record start position header.FilePosition = binWriter.Position; // write component data WriteSavedComponentData(header, oldBinReader, binWriter); } }
public static void UpdateDesign(DesignData design) { if (!design.IsNewRecord) { int index = m_DesignHeaders.IndexOf(design); if (index != -1) { m_DesignHeaders.RemoveAt(index); } } m_UnsavedDesigns.Add(design); SaveData(); }
public void LoadForm(DesignData design) { if (design != null) { _design = design; lblName.Text = _design.Name; moveItemControl1.Enabled = false; Show(); } else { Close(); } }
private static void LoadCategories(ArrayList headers) { for (int i = 0; i < headers.Count; ++i) { DesignData header = (DesignData)headers[i]; string category = (header.Category == null || header.Category.Length == 0) ? "Misc" : header.Category; string subSection = (header.Subsection == null || header.Subsection.Length == 0) ? "Misc" : header.Subsection; Hashtable subSections = GetSubSections(category); if (!subSections.ContainsKey(subSection)) { subSections.Add(subSection, null); } } }
public void AddDesign(DesignData design) { int index = FindSubsection(design.Subsection.ToLower()); SubsectionNode subsection = null; if (index != -1) { subsection = (SubsectionNode)this.Nodes[index]; } else { subsection = new SubsectionNode(design.Subsection); this.Nodes.Add(subsection); } subsection.Nodes.Add(new DesignNode(design)); }
// used to convert components into collection of design items private void ExportDesignItems(ref DesignData design) { for (int i = 0; i < HouseDesign.Levels; ++i) { for (int x = 0; x < design.Width; ++x) { for (int y = 0; y < design.Height; ++y) { ArrayList list = m_Components[x][y][i]; foreach (HouseComponent hc in list) { design.Items.Add(new DesignItem(hc.Index, x, y, hc.Z, i, hc.Hue)); } } } } }
public override DesignData ImportDesign() { string filename = GetImportFileName(); if (!File.Exists(filename)) { return(null); } BinaryFileReader reader = new BinaryFileReader(File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.Read)); short version = reader.ReadShort(); DesignData design = new DesignData(); if (version == 1) { design.Name = reader.ReadString(); design.Category = reader.ReadString(); design.Subsection = reader.ReadString(); design.Width = reader.ReadInt(); design.Height = reader.ReadInt(); design.UserWidth = reader.ReadInt(); design.UserHeight = reader.ReadInt(); int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { short index = reader.ReadShort(); short x = reader.ReadShort(); short y = reader.ReadShort(); short z = reader.ReadShort(); short level = reader.ReadShort(); short hue = reader.ReadShort(); design.Items.Add(new DesignItem(index, x, y, z, level, hue)); } } reader.Close(); return(design); }
public void LoadForm(ref DesignData design) { PopulateCategories(); SelectCategory(design.Category); m_Name = design.Name; m_Category = design.Category; m_Subsection = design.Subsection; txtName.Text = design.Name; cboCategory.Text = design.Category; cboSubSection.Text = design.Subsection; this.ShowDialog(); if (!m_Cancelled) { design.Name = m_Name; design.Category = m_Category; design.Subsection = m_Subsection; } }
public override void Export(DesignData design) { string filename = GetExportFileName(design.Name); if (filename.Length > 0) { if (!design.IsLoaded) { design.Load(); } BinaryFileWriter writer = new BinaryFileWriter(File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None)); writer.WriteShort(EXPORT_VERSION); writer.WriteString(design.Name); writer.WriteString(design.Category); writer.WriteString(design.Subsection); writer.WriteInt(design.Width); writer.WriteInt(design.Height); writer.WriteInt(design.UserWidth); writer.WriteInt(design.UserHeight); // item count writer.WriteInt(design.Items.Count); for (int i = 0; i < design.Items.Count; ++i) { DesignItem item = design.Items[i]; writer.WriteShort(item.ItemID); writer.WriteShort((short)item.X); writer.WriteShort((short)item.Y); writer.WriteShort((short)item.Z); writer.WriteShort(item.Level); writer.WriteShort(item.Hue); } writer.Close(); } }
// Extract the user selected items private void StartExtraction(object state) { ExtractRequestArgs args = CreateExtractRequestArgs(); // submit the request to the server ExtractResponse resp = Connection.ExtractDesign(args); if (resp == null) { RaiseExtractedEvent(null); return; } else { _items = resp.Items != null ? resp.Items : new DesignItemCol(); } if (_frozen && _mode == ExtractMode.Area) { for (int i = 0; i < resp.Rects.Count; ++i) { ExtractFrozenItems(resp.Rects[i], resp.Map, _hues); } } if (resp == null || resp.Items.Count == 0) { RaiseExtractedEvent(null); } DesignData design = null; if (resp.Items.Count > 0) { design = new DesignData(_name, _category, _subsection); design.ImportItems(resp.Items, true, _foundation); } RaiseExtractedEvent(design); }
public HouseDesign(DesignData fileHeader) { m_FileHeader = fileHeader; m_Name = fileHeader.Name; m_Category = fileHeader.Category; m_SubSection = fileHeader.Subsection; m_Width = fileHeader.Width; m_Height = fileHeader.Height; m_UserWidth = fileHeader.UserWidth; m_UserHeight = fileHeader.UserHeight; m_Components = null; Clear(); if (fileHeader == null) { return; } if (!m_FileHeader.IsLoaded) { m_FileHeader.Load(); } for (int i = 0; i < fileHeader.Items.Count; ++i) { DesignItem item = fileHeader.Items[i]; HouseComponent hc = new HouseComponent(item.ItemID, item.Z); hc.Hue = item.Hue; m_Components[item.X][item.Y][GetZLevel(item.Z)].Add(hc); } Sort(); // unload design items to conserve memory m_FileHeader.Unload(); }