コード例 #1
0
        public static List <DescList> LoadDescFile(string fileName, IFF_REGION RegionSelected)
        {
            if (!File.Exists(fileName))
            {
                return(new List <DescList>());
            }
            List <DescList> list = new List <DescList>();

            using (BinaryReader reader = new BinaryReader(File.Open(fileName, FileMode.Open, FileAccess.Read), IffFile.GetFileEncodingByRegion(RegionSelected)))
            {
                IffFile file            = new IffFile();
                ushort  numberOfRecords = file.GetNumberOfRecords(reader);
                file.JumpToFirstRecord(reader);
                if (file.CheckMagicNumber(reader))
                {
                    for (int i = 0; i < numberOfRecords; i++)
                    {
                        long     position = reader.BaseStream.Position;
                        DescList item     = new DescList
                        {
                            IdObject = reader.ReadUInt32()
                        };
                        position        += IdObjetlen;
                        item.Description = IffFile.GetFileEncodingByRegion(RegionSelected).GetString(reader.ReadBytes(DescriptionLen));
                        position        += DescriptionLen;
                        list.Add(item);
                    }

                    reader.Close();
                    return(list);
                }
                return(new List <DescList>());
            }
        }
コード例 #2
0
        public void SetIffRegion(BinaryReader reader)
        {
            long position = reader.BaseStream.Position;

            reader.BaseStream.Seek(2, System.IO.SeekOrigin.Begin);
            ushort RegionIff = reader.ReadUInt16();

            switch (RegionIff)
            {
            case 0x0000:
                this.Region = IFF_REGION.Default;
                return;

            case 0x224:
            case 0xcccc:
                this.Region = IFF_REGION.Japan;
                return;

            case 0x2300:
                this.Region = IFF_REGION.Japan;
                return;

            case 0x76bb:
                this.Region = IFF_REGION.Korea;
                return;
            }
            this.Region = IFF_REGION.Default;
            return;
        }
コード例 #3
0
        public static Encoding GetFileEncodingByRegion(IFF_REGION region)
        {
            IFF_REGION iff_region = region;

            switch (iff_region)
            {
            case IFF_REGION.Japan:
                return(Encoding.GetEncoding(932));

            case IFF_REGION.Korea:
                return(Encoding.GetEncoding(949));

            case IFF_REGION.Default:
            case IFF_REGION.Usa:
                return(Encoding.GetEncoding(874));
            }

            //unknow so encoding UTF8
            return(Encoding.UTF8);
        }
コード例 #4
0
        public static bool SaveDescFile(string fileName, List <Desc_Editor.DescStock> descriptionList, IFF_REGION RegionSelected)
        {
            BinaryWriter writer;

            writer = new BinaryWriter(File.Open(fileName, FileMode.Create, FileAccess.Write), IffFile.GetFileEncodingByRegion(RegionSelected));


            IffFile file = new IffFile
            {
                ObjectsInFile = ushort.Parse(descriptionList.Count.ToString())
            };

            file.WriteIffFileHeader(writer);
            file.StubRecords(writer, TotalLen, descriptionList.Count);
            file.JumpToFirstRecord(writer);
            foreach (Desc_Editor.DescStock record in descriptionList)
            {
                if (record.ID != 0)
                {
                    long position = writer.BaseStream.Position;
                    writer.Write(record.ID);
                    position += IdObjetlen;
                    if (record.Texte.Length >= DescriptionLen)
                    {
                        record.Texte.Substring(0, DescriptionLen - 1);
                    }
                    writer.Write(record.Texte.ToCharArray());
                    writer.Seek(DescriptionLen - record.Texte.Length, SeekOrigin.Current);
                }
            }
            writer.Close();
            return(true);
        }
コード例 #5
0
 private void kOREANToolStripMenuItem_Click(object sender, EventArgs e)
 {
     Uncheck_all_encoding(sender, e);
     RegionSelected = IffFile.IFF_REGION.Korea;
     kOREANToolStripMenuItem.Checked = true;
 }
コード例 #6
0
 private void oTHERToolStripMenuItem_Click(object sender, EventArgs e)
 {
     Uncheck_all_encoding(sender, e);
     RegionSelected = IffFile.IFF_REGION.Default;
     oTHERToolStripMenuItem.Checked = true;
 }
コード例 #7
0
 private void tHAIToolStripMenuItem_Click(object sender, EventArgs e)
 {
     Uncheck_all_encoding(sender, e);
     RegionSelected = IffFile.IFF_REGION.Thaiwan;
     tHAIToolStripMenuItem.Checked = true;
 }