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>()); } }
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; }
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); }
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); }
private void kOREANToolStripMenuItem_Click(object sender, EventArgs e) { Uncheck_all_encoding(sender, e); RegionSelected = IffFile.IFF_REGION.Korea; kOREANToolStripMenuItem.Checked = true; }
private void oTHERToolStripMenuItem_Click(object sender, EventArgs e) { Uncheck_all_encoding(sender, e); RegionSelected = IffFile.IFF_REGION.Default; oTHERToolStripMenuItem.Checked = true; }
private void tHAIToolStripMenuItem_Click(object sender, EventArgs e) { Uncheck_all_encoding(sender, e); RegionSelected = IffFile.IFF_REGION.Thaiwan; tHAIToolStripMenuItem.Checked = true; }