Example #1
0
 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);
         }
     }
 }
Example #2
0
        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);
                }
            }
        }