Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }