public LabyrinthSectionAreas(WorldAreas filesWorldAreas) { FilesWorldAreas = filesWorldAreas; NormalAreasPtrs = new List <long>(); CruelAreasPtrs = new List <long>(); MercilesAreasPtrs = new List <long>(); EndgameAreasPtrs = new List <long>(); }
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(); }
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); }