public TEX0(EndianBinaryReader er) { long basepos = er.BaseStream.Position; Signature = er.ReadString(Encoding.ASCII, 4); if (Signature != "TEX0") throw new SignatureNotCorrectException(Signature, "TEX0", er.BaseStream.Position - 4); SectionSize = er.ReadUInt32(); TexInfo = new texInfo(er); Tex4x4Info = new tex4x4Info(er); PlttInfo = new plttInfo(er); dictTex = new Dictionary<DictTexData>(er); for (int i = 0; i < dictTex.numEntry; i++) { dictTex[i].Value.ReadData(er, TexInfo.ofsTex, Tex4x4Info.ofsTex, Tex4x4Info.ofsTexPlttIdx, basepos); } dictPltt = new Dictionary<DictPlttData>(er); List<UInt32> Offset = new List<uint>(); for (int i = 0; i < dictPltt.numEntry; i++) { Offset.Add(dictPltt[i].Value.offset); } Offset = Offset.Distinct().ToList(); Offset.Sort(); for (int i = 0; i < dictPltt.numEntry; i++) { int idx = Offset.IndexOf(dictPltt[i].Value.offset); if (idx == Offset.Count - 1) { dictPltt[i].Value.ReadData(er, PlttInfo.ofsPlttData, (uint)er.BaseStream.Length - (Offset[idx] + PlttInfo.ofsPlttData + (uint)basepos), basepos); } else { dictPltt[i].Value.ReadData(er, PlttInfo.ofsPlttData, Offset[idx + 1] - Offset[idx], basepos); } } }
public TEX0(EndianBinaryReader er) { long basepos = er.BaseStream.Position; Signature = er.ReadString(Encoding.ASCII, 4); if (Signature != "TEX0") { throw new SignatureNotCorrectException(Signature, "TEX0", er.BaseStream.Position - 4); } SectionSize = er.ReadUInt32(); TexInfo = new texInfo(er); Tex4x4Info = new tex4x4Info(er); PlttInfo = new plttInfo(er); dictTex = new Dictionary <DictTexData>(er); for (int i = 0; i < dictTex.numEntry; i++) { dictTex[i].Value.ReadData(er, TexInfo.ofsTex, Tex4x4Info.ofsTex, Tex4x4Info.ofsTexPlttIdx, basepos); } dictPltt = new Dictionary <DictPlttData>(er); List <UInt32> Offset = new List <uint>(); for (int i = 0; i < dictPltt.numEntry; i++) { Offset.Add(dictPltt[i].Value.offset); } Offset = Offset.Distinct().ToList(); Offset.Sort(); for (int i = 0; i < dictPltt.numEntry; i++) { int idx = Offset.IndexOf(dictPltt[i].Value.offset); if (idx == Offset.Count - 1) { dictPltt[i].Value.ReadData(er, PlttInfo.ofsPlttData, (uint)er.BaseStream.Length - (Offset[idx] + PlttInfo.ofsPlttData + (uint)basepos), basepos); } else { dictPltt[i].Value.ReadData(er, PlttInfo.ofsPlttData, Offset[idx + 1] - Offset[idx], basepos); } } }