public void Load(string filePath, ClientType clientType) { StatusManager.AddLog("Starting loading TSI : " + filePath); try { this.Path = filePath; this.clientType = clientType; BinaryReader br = new BinaryReader(File.Open(filePath, FileMode.Open)); short DDSCount = br.ReadInt16(); this.listDDS = new List <DDS>(DDSCount); for (int i = 0; i < DDSCount; i++) { DDS newDDS = new DDS(); newDDS.Path = RoseFile.ReadSString(ref br); newDDS.ColourKey = br.ReadInt32(); this.listDDS.Add(newDDS); } short TotalementCount = br.ReadInt16(); for (int i = 0; i < DDSCount; i++) { short ElementCount = br.ReadInt16(); listDDS[i].ListDDS_element = new List <DDS.DDSElement>(ElementCount); for (int a = 0; a < ElementCount; a++) { DDS.DDSElement newElement = new DDS.DDSElement(); newElement.OwnerId = br.ReadInt16(); newElement.X = br.ReadInt32(); newElement.Y = br.ReadInt32(); newElement.Width = br.ReadInt32() - newElement.X; newElement.Height = br.ReadInt32() - newElement.Y; newElement.Color = br.ReadInt32(); newElement.Name = RoseFile.ReadFString(ref br, 0x20); listDDS[i].ListDDS_element.Add(newElement); } } br.Close(); StatusManager.AddLog("TSI successfully loaded"); } catch (Exception e) { StatusManager.AddLog("Error loading TSI : " + e.Message); } }
public void Save(string filePath) { try { this.Path = filePath; BinaryWriter bw = new BinaryWriter(File.Open(filePath, FileMode.Create)); bw.Write((short)listDDS.Count); int totalElementCount = 0; listDDS.ForEach(delegate(DDS dds) { RoseFile.WriteSString(ref bw, dds.Path); bw.Write(dds.ColourKey); totalElementCount += dds.ListDDS_element.Count; }); bw.Write((short)totalElementCount); listDDS.ForEach(delegate(DDS dds) { bw.Write((short)dds.ListDDS_element.Count); dds.ListDDS_element.ForEach(delegate(DDS.DDSElement dds_element) { bw.Write((short)dds_element.OwnerId); bw.Write((int)dds_element.X); bw.Write((int)dds_element.Y); bw.Write((int)dds_element.Width + dds_element.X); bw.Write((int)dds_element.Height + dds_element.Y); bw.Write((int)dds_element.Color); RoseFile.WriteFString(ref bw, dds_element.Name, 0x20); }); }); bw.Close(); StatusManager.AddLog("TSI successfully saved"); } catch (Exception e) { StatusManager.AddLog("Error saving TSI : " + e.Message); } }