Пример #1
0
 public void AssignToInstance(datum_index datum, string absolutePath)
 {
     // Save the datum index and absolute path to bind this tag definition
     // to a tag in memory.
     this.datum        = datum;
     this.absolutePath = absolutePath;
 }
Пример #2
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);
            }
        }