Beispiel #1
0
 public void Load(string adtFileName, string wdtFileName)
 {
     WdtFile = new WDT.WDT();
     WdtFile.Load(wdtFileName);
     using (var reader = new BinaryReader(File.OpenRead(adtFileName)))
     {
         while (reader.BaseStream.Position < reader.BaseStream.Length)
         {
             var chunkName = new string(reader.ReadChars(4).Reverse().ToArray());
             var chunkSize = reader.ReadInt32();
             var chunkType = Type.GetType(chunkName);
             if (chunkType != null)
             {
                 // If chunkType is an array, it can only be MCNK
                 if (chunkType.IsArray)
                 {
                     MCNK[MCNK.Count(c => c != null)] = (MCNK)Activator.CreateInstance(typeof(MCNK), reader.ReadBytes(chunkSize), WdtFile);
                 }
                 else
                 {
                     GetType().GetProperty(chunkName)?.SetValue(this, Activator.CreateInstance(chunkType, reader.ReadBytes(chunkSize)));
                 }
             }
         }
     }
 }