Exemplo n.º 1
0
 public LabyrinthSectionAreas(WorldAreas filesWorldAreas)
 {
     FilesWorldAreas   = filesWorldAreas;
     NormalAreasPtrs   = new List <long>();
     CruelAreasPtrs    = new List <long>();
     MercilesAreasPtrs = new List <long>();
     EndgameAreasPtrs  = new List <long>();
 }
Exemplo n.º 2
0
        internal LabyrinthRoom(IMemory m, long address, WorldAreas filesWorldAreas)
        {
            FilesWorldAreas = filesWorldAreas;
            M       = m;
            Address = address;
            Secret1 = ReadSecret(M.Read <long>(Address + 0x40));
            Secret2 = ReadSecret(M.Read <long>(Address + 0x50));
            Section = ReadSection(M.Read <long>(Address + 0x30));

            var roomsPointers = M.ReadPointersArray(Address, Address + 0x20);

            Connections = roomsPointers.Select(x => x == 0 ? null : LabyrinthData.GetRoomById(x)).ToArray();
        }
Exemplo n.º 3
0
            internal LabyrinthSection(IMemory M, long addr, WorldAreas filesWorldAreas)
            {
                FilesWorldAreas = filesWorldAreas;
                SectionType     = M.ReadStringU(M.Read <long>(addr + 0x8, 0));

                var overridesCount    = M.Read <int>(addr + 0x5c);
                var overridesArrayPtr = M.Read <long>(addr + 0x64);

                var overridePointers = M.ReadSecondPointerArray_Count(overridesArrayPtr, overridesCount);

                for (var i = 0; i < overridesCount; i++)
                {
                    var newOverride  = new LabyrinthSectionOverrides();
                    var overrideAddr = overridePointers[i];
                    newOverride.OverrideName = M.ReadStringU(M.Read <long>(overrideAddr));
                    newOverride.Name         = M.ReadStringU(M.Read <long>(overrideAddr + 0x8));
                    Overrides.Add(newOverride);
                }

                SectionAreas = new LabyrinthSectionAreas(FilesWorldAreas);
                var areasPtr = M.Read <long>(addr + 0x4c);

                SectionAreas.Name = M.ReadStringU(M.Read <long>(areasPtr));

                var normalCount    = M.Read <int>(areasPtr + 0x8);
                var normalArrayPtr = M.Read <long>(areasPtr + 0x10);

                SectionAreas.NormalAreasPtrs = M.ReadSecondPointerArray_Count(normalArrayPtr, normalCount);

                var cruelCount    = M.Read <int>(areasPtr + 0x18);
                var cruelArrayPtr = M.Read <long>(areasPtr + 0x20);

                SectionAreas.CruelAreasPtrs = M.ReadSecondPointerArray_Count(cruelArrayPtr, cruelCount);

                var mercCount    = M.Read <int>(areasPtr + 0x28);
                var mercArrayPtr = M.Read <long>(areasPtr + 0x30);

                SectionAreas.MercilesAreasPtrs = M.ReadSecondPointerArray_Count(mercArrayPtr, mercCount);

                var endgameCount    = M.Read <int>(areasPtr + 0x38);
                var endgameArrayPtr = M.Read <long>(areasPtr + 0x40);

                SectionAreas.EndgameAreasPtrs = M.ReadSecondPointerArray_Count(endgameArrayPtr, endgameCount);
            }