Exemplo n.º 1
0
        public DependencyReader CreateReader(IAddressTranslator translator, IPointerExpander expander)
        {
            var reader = CreateReader(translator);

            reader.RegisterInstance(expander);
            return(reader);
        }
Exemplo n.º 2
0
 public ThirdGenHeader(StructureValueCollection values, EngineDescription info, string buildString,
                       FileSegmenter segmenter, IPointerExpander expander)
 {
     BuildString = buildString;
     HeaderSize  = info.HeaderSize;
     _expander   = expander;
     Load(values, segmenter);
 }
Exemplo n.º 3
0
 public ThirdGenHeader(StructureValueCollection values, EngineDescription info, FileSegmenter segmenter,
                       IPointerExpander expander)
 {
     BuildString           = info.BuildVersion;
     HeaderSize            = info.HeaderSize;
     cacheSegmentAlignment = info.SegmentAlignment;
     _expander             = expander;
     Load(values, segmenter);
 }
Exemplo n.º 4
0
 private void Load(StructureValueCollection values, IReader reader, IPointerExpander expander)
 {
     Name               = new StringID(values.GetInteger("name stringid"));
     _activeResources   = LoadBitArray(values, "number of raw pool bitfields", "raw pool bitfield table address", reader, expander);
     _unknownResources  = LoadBitArray(values, "number of raw pool 2 bitfields", "raw pool 2 bitfield table address", reader, expander);
     _unknownResources2 = LoadBitArray(values, "number of raw pool 3 bitfields", "raw pool 3 bitfield table address", reader, expander);
     _activeTags        = LoadBitArray(values, "number of tag bitfields", "tag bitfield table address", reader, expander);
     _unknownTags       = LoadBitArray(values, "number of tag 2 bitfields", "tag 2 bitfield table address", reader, expander);
 }
Exemplo n.º 5
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="SoundResourceManager" /> class.
 /// </summary>
 /// <param name="gestalt">The cache file's sound resource gestalt.</param>
 /// <param name="layoutTable">The cache file's resource layout table.</param>
 /// <param name="tags">The cache file's tag table.</param>
 /// <param name="metaArea">The cache file's meta area.</param>
 /// <param name="allocator">The cache file's tag data allocator.</param>
 /// <param name="buildInfo">The cache file's build information.</param>
 public SoundResourceManager(SoundResourceGestalt gestalt, TagTable tags, FileSegmentGroup metaArea,
                             MetaAllocator allocator, EngineDescription buildInfo, IPointerExpander expander)
 {
     _gestalt   = gestalt;
     _tags      = tags;
     _metaArea  = metaArea;
     _allocator = allocator;
     _buildInfo = buildInfo;
     _expander  = expander;
 }
Exemplo n.º 6
0
 public ThirdGenZoneSetTable(ThirdGenResourceGestalt gestalt, IReader reader, FileSegmentGroup metaArea,
                             MetaAllocator allocator, EngineDescription buildInfo, IPointerExpander expander)
 {
     _gestalt   = gestalt;
     _metaArea  = metaArea;
     _allocator = allocator;
     _buildInfo = buildInfo;
     _expander  = expander;
     Load(reader);
 }
Exemplo n.º 7
0
        public ThirdGenTagTable(IReader reader, SegmentPointer indexHeaderLocation, FileSegmentGroup metaArea,
                                MetaAllocator allocator, EngineDescription buildInfo, IPointerExpander expander)
        {
            _indexHeaderLocation = indexHeaderLocation;
            _metaArea            = metaArea;
            _allocator           = allocator;
            _buildInfo           = buildInfo;
            _expander            = expander;

            Load(reader);
        }
Exemplo n.º 8
0
        public ThirdGenSimulationDefinitionTable(ITag scenario, TagTable tags, IReader reader, FileSegmentGroup metaArea, MetaAllocator allocator, EngineDescription buildInfo, IPointerExpander expander)
        {
            _scenario  = scenario;
            _tags      = tags;
            _metaArea  = metaArea;
            _allocator = allocator;
            _buildInfo = buildInfo;
            _expander  = expander;

            Load(reader);
        }
Exemplo n.º 9
0
        public Pointer(int value, IAddressTranslator translator, IPointerExpander expander)
        {
            if (translator == null)
            {
                throw new ArgumentNullException(nameof(translator));
            }

            this._value     = value;
            this.translator = translator;
            this.expander   = expander;
        }
Exemplo n.º 10
0
        public ThirdGenResourceGestalt(IReader reader, ITag zoneTag, FileSegmentGroup metaArea, MetaAllocator allocator,
                                       StringIDSource stringIDs, EngineDescription buildInfo, IPointerExpander expander)
        {
            _tag       = zoneTag;
            _metaArea  = metaArea;
            _allocator = allocator;
            _buildInfo = buildInfo;
            _expander  = expander;

            Load(reader, stringIDs);
        }
        public ThirdGenResourceLayoutTable(ITag playTag, FileSegmentGroup metaArea, MetaAllocator allocator,
                                           EngineDescription buildInfo, IPointerExpander expander)
        {
            _tag       = playTag;
            _metaArea  = metaArea;
            _allocator = allocator;
            _buildInfo = buildInfo;
            _expander  = expander;

            _zone = _tag.Group.Magic != 1886151033;            //"play"
        }
        public ThirdGenScenarioScriptFile(ITag scenarioTag, string tagName, FileSegmentGroup metaArea,
                                          StringIDSource stringIDs, EngineDescription buildInfo, IPointerExpander expander)
        {
            _scenarioTag = _scriptTag = scenarioTag;
            _expander    = expander;
            _stringIDs   = stringIDs;
            _metaArea    = metaArea;
            _buildInfo   = buildInfo;
            Name         = tagName.Substring(tagName.LastIndexOf('\\') + 1) + ".hsc";

            DefineScriptObjectReflexives();
        }
Exemplo n.º 13
0
		public StructureValueCollection Serialize(IList<ITagGroup> groupList, IPointerExpander expander)
		{
			var result = new StructureValueCollection();

			uint cont = 0;
			if (MetaLocation != null)
				cont = expander.Contract(MetaLocation.AsPointer());

			result.SetInteger("memory address", cont);
			result.SetInteger("tag group index", (Group != null) ? (uint) groupList.IndexOf(Group) : 0xFFFFFFFF);
			result.SetInteger("datum index salt", Index.Salt);
			return result;
		}
Exemplo n.º 14
0
        public HsdtScriptFile(ITag hsdtTag, string tagName, FileSegmentGroup metaArea, EngineDescription buildInfo, StringIDSource stringIDs, IPointerExpander expander)
        {
            if (CharConstant.ToString(hsdtTag.Group.Magic) != "hsdt")
            {
                throw new ArgumentException("Invalid tag. The tag must belong to the hsdt group.");
            }

            _hsdtTag   = hsdtTag;
            Name       = tagName.Substring(tagName.LastIndexOf('\\') + 1) + ".hsc";
            _metaArea  = metaArea;
            _buildInfo = buildInfo;
            _stringIDs = stringIDs;
            _expander  = expander;
        }
Exemplo n.º 15
0
        public ScnrScriptFile(ITag scnrTag, string tagName, FileSegmentGroup metaArea, EngineDescription buildInfo, StringIDSource stringIDs, IPointerExpander expander, MetaAllocator allocator)
        {
            if (CharConstant.ToString(scnrTag.Group.Magic) != "scnr")
            {
                throw new ArgumentException("Invalid tag. The tag must belong to the scnr group.");
            }

            _scnrTag   = scnrTag;
            Name       = tagName.Substring(tagName.LastIndexOf('\\') + 1) + ".hsc";;
            _metaArea  = metaArea;
            _buildInfo = buildInfo;
            _stringIDs = stringIDs;
            _expander  = expander;
            _allocator = allocator;
        }
Exemplo n.º 16
0
        public EffectInterop(ITag scenario, IReader reader, FileSegmentGroup metaArea, MetaAllocator allocator, EngineDescription buildInfo, IPointerExpander expander)
        {
            _scenario  = scenario;
            _metaArea  = metaArea;
            _allocator = allocator;
            _buildInfo = buildInfo;
            _expander  = expander;

            _effe = new List <byte[]>();
            _beam = new List <byte[]>();
            _cntl = new List <byte[]>();
            _ltvl = new List <byte[]>();

            Load(reader);
        }
Exemplo n.º 17
0
        public Pointer(DependencyReader reader, IAddressTranslator translator, IPointerExpander expander)
        {
            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            if (translator == null)
            {
                throw new ArgumentNullException(nameof(translator));
            }

            this._value     = reader.ReadInt32();
            this.translator = translator;
            this.expander   = expander;
        }
Exemplo n.º 18
0
        private void Load(StructureValueCollection values, IReader reader, FileSegmentGroup metaArea, StringIDSource stringIDs,
                          EngineDescription buildInfo, IPointerExpander expander)
        {
            Name = values.HasInteger("name index")
                                ? stringIDs.GetString(new StringID(values.GetInteger("name index")))
                                : values.GetString("name");
            ExecutionType       = (short)values.GetInteger("execution type");
            ReturnType          = (short)values.GetInteger("return type");
            RootExpressionIndex = new DatumIndex(values.GetInteger("first expression index"));
            if (Name == null)
            {
                Name = "script_" + RootExpressionIndex.Value.ToString("X8");
            }

            Parameters = LoadParameters(reader, values, metaArea, buildInfo, expander);
        }
Exemplo n.º 19
0
        public StructureValueCollection Serialize(IList <ITagClass> classList, IPointerExpander expander)
        {
            var result = new StructureValueCollection();

            uint cont = 0;

            if (MetaLocation != null)
            {
                cont = expander.Contract(MetaLocation.AsPointer());
            }

            result.SetInteger("memory address", cont);
            result.SetInteger("class index", (Class != null) ? (uint)classList.IndexOf(Class) : 0xFFFFFFFF);
            result.SetInteger("datum index salt", Index.Salt);
            return(result);
        }
Exemplo n.º 20
0
        private BitArray LoadBitArray(StructureValueCollection values, string countName, string addressName, IReader reader, IPointerExpander expander)
        {
            if (!values.HasInteger(countName) || !values.HasInteger(addressName))
            {
                return(new BitArray(0));
            }

            var  count   = (int)values.GetInteger(countName);
            uint address = (uint)values.GetInteger(addressName);

            if (count <= 0 || address == 0)
            {
                return(new BitArray(0));
            }

            long expand = expander.Expand(address);

            var ints = new int[count];

            reader.SeekTo(_metaArea.PointerToOffset(expand));
            for (int i = 0; i < count; i++)
            {
                ints[i] = reader.ReadInt32();
            }

            return(new BitArray(ints));
        }
Exemplo n.º 21
0
        private void SaveBitArray(BitArray bits, string countName, string addressName, MetaAllocator allocator, IStream stream, ReflexiveCache <int> cache, StructureValueCollection values, IPointerExpander expander)
        {
            if (bits.Length == 0)
            {
                values.SetInteger(countName, 0);
                values.SetInteger(addressName, 0);
                return;
            }

            var ints = bits.ToIntArray();

            // If the address isn't cached, then allocate space and write a new array
            long newAddress;

            if (!cache.TryGetAddress(ints, out newAddress))
            {
                newAddress = allocator.Allocate(ints.Length * 4, stream);
                stream.SeekTo(_metaArea.PointerToOffset(newAddress));
                foreach (int i in ints)
                {
                    stream.WriteInt32(i);
                }

                cache.Add(newAddress, ints);
            }

            uint cont = expander.Contract(newAddress);

            values.SetInteger(countName, (uint)ints.Length);
            values.SetInteger(addressName, cont);
        }
Exemplo n.º 22
0
        public static void WriteContractedTagBlock(IEnumerable <StructureValueCollection> elements, uint address, StructureLayout layout,
                                                   FileSegmentGroup metaArea, IWriter writer, IPointerExpander expander)
        {
            long cont   = expander.Expand(address);
            int  offset = metaArea.PointerToOffset(address);
            int  index  = 0;

            foreach (StructureValueCollection entry in elements)
            {
                writer.SeekTo(offset + index * layout.Size);
                StructureWriter.WriteStructure(entry, layout, writer);
                index++;
            }
        }
Exemplo n.º 23
0
 public MetaAnalyzer(ICacheFile cacheFile)
 {
     _expander = cacheFile.PointerExpander;
     InitializeMemoryMap(cacheFile);
     RecognizeClassIDs(cacheFile);
 }
Exemplo n.º 24
0
 public ThirdGenZoneSet(StructureValueCollection values, IReader reader, FileSegmentGroup metaArea, IPointerExpander expander)
 {
     _metaArea = metaArea;
     Load(values, reader, expander);
 }
Exemplo n.º 25
0
        public BlockCollection(DependencyReader reader, ICacheFile cache, IAddressTranslator translator, IPointerExpander expander)
            : base(reader, cache, translator, expander)
        {
            if (IsInvalid)
            {
                return;
            }

            reader.BaseStream.Position = Pointer.Address;
            for (int i = 0; i < Count; i++)
            {
                items.Add((T)reader.ReadObject(typeof(T), (int)cache.CacheType));
            }
        }
Exemplo n.º 26
0
        private static void FreeBitArray(StructureValueCollection values, string countName, string addressName, MetaAllocator allocator, IPointerExpander expander)
        {
            if (!values.HasInteger(countName) || !values.HasInteger(addressName))
            {
                return;
            }

            var  oldCount   = (int)values.GetInteger(countName);
            uint oldAddress = (uint)values.GetInteger(addressName);

            long expand = expander.Expand(oldAddress);

            if (oldCount > 0 && oldAddress > 0)
            {
                allocator.Free(expand, oldCount * 4);
            }
        }
Exemplo n.º 27
0
        private void Load(StructureValueCollection values, ushort index, FileSegmentGroup metaArea, IList <ITagClass> classList, IPointerExpander expander)
        {
            uint address = (uint)values.GetInteger("memory address");

            if (address != 0 && address != 0xFFFFFFFF)
            {
                long expanded = expander.Expand(address);

                MetaLocation = SegmentPointer.FromPointer(expanded, metaArea);
            }

            var classIndex = (int)values.GetInteger("class index");

            if (classIndex >= 0 && classIndex < classList.Count)
            {
                Class = classList[classIndex];
            }

            var salt = (ushort)values.GetInteger("datum index salt");

            if (salt != 0xFFFF)
            {
                Index = new DatumIndex(salt, index);
            }
            else
            {
                Index = DatumIndex.Null;
            }
        }
Exemplo n.º 28
0
 public ThirdGenTag(StructureValueCollection values, ushort index, FileSegmentGroup metaArea,
                    IList <ITagClass> classList, IPointerExpander expander)
 {
     Load(values, index, metaArea, classList, expander);
 }
Exemplo n.º 29
0
        /// <summary>
        ///     Reads all child objects of this block.
        /// </summary>
        /// <param name="values">The values read from the parent.</param>
        /// <param name="reader">The stream to read from.</param>
        /// <param name="metaArea">The meta area of the cache file.</param>
        /// <param name="stringIDs">The string ID source for the cache file.</param>
        /// <param name="buildInfo">The build info for the cache file.</param>
        /// <returns>The objects that were read.</returns>
        public ScriptObject[] ReadObjects(StructureValueCollection values, IReader reader, FileSegmentGroup metaArea,
                                          StringIDSource stringIDs, EngineDescription buildInfo, IPointerExpander expander)
        {
            var  count   = (int)values.GetInteger(_countEntryName);
            uint address = (uint)values.GetInteger(_addressEntryName);

            long expand = expander.Expand(address);

            StructureLayout layout = buildInfo.Layouts.GetLayout(_layoutName);

            StructureValueCollection[] entries = TagBlockReader.ReadTagBlock(reader, count, expand, layout, metaArea);
            return(entries.Select(e => ReadScriptObject(e, reader, metaArea, stringIDs, buildInfo, expander)).ToArray());
        }
Exemplo n.º 30
0
        private ScriptObject ReadScriptObject(StructureValueCollection values, IReader reader, FileSegmentGroup metaArea,
                                              StringIDSource stringIDs, EngineDescription buildInfo, IPointerExpander expander)
        {
            string name   = GetObjectName(values, stringIDs);
            var    result = new ScriptObject(name);

            foreach (ScriptObjectTagBlock child in _children)
            {
                result.RegisterChildren(child, child.ReadObjects(values, reader, metaArea, stringIDs, buildInfo, expander));
            }

            return(result);
        }