예제 #1
0
 public TagDefinition(string CompiledClass, string DefaultExtension, int HeaderSize, RawDefinition RawDefinition)
     : base(DefaultExtension, HeaderSize, FieldType.None, EngineManager.HaloEngine.Halo2)
 {
     this.groupTag         = CompiledClass;
     this.DefaultExtension = DefaultExtension;
     this.headerSize       = HeaderSize;
     this.RawDef           = RawDefinition;
 }
예제 #2
0
        public override void Read(EndianReader br, int Magic)
        {
            // Fields
            for (int i = 0; i < Fields.Count; i++)
            {
                Fields[i].Read(br, Magic);
            }

            // Read Raw
            if (RawDef != null)
            {
                RawDef = (RawDefinition)Activator.CreateInstance(RawDef.GetType(), new object[] { this, br });
            }
        }
예제 #3
0
        public override void Read(EndianReader br)
        {
            // Header Values
            this.datum = new datum_index(br.ReadUInt32());
            int TagCount = br.ReadInt32();
            //int StringCount = br.ReadInt32();
            int DataSize  = br.ReadInt32();
            int RawOffset = br.ReadInt32();

            this.absolutePath = br.ReadString();

            // Init lists
            EngineManager.Engines["Halo2Xbox"]["TagIds"] = new Dictionary <string, int>(TagCount);
            //EngineManager.Engines["Halo2Xbox"]["StringIds"] = new List<string>(StringCount);

            // Read Strings
            br.BaseStream.Position = DataSize;
            for (int i = 0; i < TagCount; i++)
            {
                ((Dictionary <string, int>)EngineManager.Engines["Halo2Xbox"]["TagIds"]).Add(br.ReadNullTerminatingString(), i);
            }

            // StringIds
            //for (int i = 0; i < StringCount; i++)
            //    ((List<string>)EngineManager.Engines["Halo2Xbox"]["StringIds"]).Add(br.ReadNullTerminatingString());

            // Fields
            br.BaseStream.Position = 512;
            for (int i = 0; i < Fields.Count; i++)
            {
                Fields[i].Read(br);
            }

            // Read Raw
            br.BaseStream.Position = RawOffset;
            if (RawDef != null)
            {
                RawDef       = (RawDefinition)Activator.CreateInstance(RawDef.GetType(), new object[] { });
                RawDef.Owner = this;
                RawDef.Read(br);
            }
        }