mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-20 14:44:24 -04:00
Add point selector to map loader (+ other loader UI improvements)
This commit is contained in:
@@ -1,18 +1,43 @@
|
||||
#pragma once
|
||||
|
||||
struct RoomEntry {
|
||||
static constexpr int MAX_POINTS = 70;
|
||||
|
||||
u8 roomNo;
|
||||
s16 roomPoints[MAX_POINTS] = {};
|
||||
int numPoints;
|
||||
|
||||
constexpr RoomEntry() : roomNo(0), numPoints(0) {}
|
||||
constexpr RoomEntry(const RoomEntry& other) = default;
|
||||
|
||||
template <int N>
|
||||
constexpr RoomEntry(const u8 roomNo, const s16 (&points)[N]) :
|
||||
roomNo(roomNo), numPoints(N) {
|
||||
static_assert(N <= MAX_POINTS);
|
||||
for (int i = 0; i < N; i++) {
|
||||
roomPoints[i] = points[i];
|
||||
}
|
||||
}
|
||||
|
||||
constexpr RoomEntry(const u8 roomNo) :
|
||||
roomNo(roomNo), numPoints(1) {
|
||||
roomPoints[0] = 0;
|
||||
}
|
||||
};
|
||||
|
||||
struct MapEntry {
|
||||
static constexpr int MAX_ROOMS = 50;
|
||||
|
||||
const char* mapName;
|
||||
const char* mapFile;
|
||||
u8 mapRooms[MAX_ROOMS] = {};
|
||||
RoomEntry mapRooms[MAX_ROOMS] = {};
|
||||
int numRooms;
|
||||
|
||||
constexpr MapEntry() : mapName(nullptr), mapFile(nullptr), numRooms(0) {}
|
||||
constexpr MapEntry(const MapEntry& other) = default;
|
||||
|
||||
template <int N>
|
||||
constexpr MapEntry(const char* mapName, const char* mapFile, const int (&rooms)[N], const char*) : mapName(mapName),
|
||||
constexpr MapEntry(const char* mapName, const char* mapFile, const RoomEntry (&rooms)[N], const char*) : mapName(mapName),
|
||||
mapFile(mapFile), numRooms(N) {
|
||||
static_assert(N <= MAX_ROOMS);
|
||||
for (int i = 0; i < N; i++) {
|
||||
@@ -21,7 +46,7 @@ struct MapEntry {
|
||||
}
|
||||
|
||||
template <int N>
|
||||
constexpr MapEntry(const char* mapName, const char* mapFile, const int (&rooms)[N]) :
|
||||
constexpr MapEntry(const char* mapName, const char* mapFile, const RoomEntry (&rooms)[N]) :
|
||||
mapName(mapName), mapFile(mapFile), numRooms(N) {
|
||||
static_assert(N <= MAX_ROOMS);
|
||||
for (int i = 0; i < N; i++) {
|
||||
@@ -50,130 +75,559 @@ struct RegionEntry {
|
||||
|
||||
constexpr auto gameRegions = std::to_array({
|
||||
RegionEntry("Hyrule Field", {
|
||||
MapEntry("Hyrule Field", "F_SP121", {0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15}),
|
||||
}), RegionEntry("Ordon", {
|
||||
MapEntry("Ordon Village", "F_SP103"),
|
||||
MapEntry("Outside Link's House", "F_SP103", {1}, "F_SP103_1"),
|
||||
MapEntry("Ordon Ranch", "F_SP00"),
|
||||
MapEntry("Ordon Spring", "F_SP104", {1}),
|
||||
MapEntry("Bo's House", "R_SP01", {0}),
|
||||
MapEntry("Sera's Sundries", "R_SP01", {1}, "R_SP01_1"),
|
||||
MapEntry("Jaggle's House", "R_SP01", {2}, "R_SP01_2"),
|
||||
MapEntry("Link's House", "R_SP01", {4, 7}, "R_SP01_4"),
|
||||
MapEntry("Rusl's House", "R_SP01", {5}, "R_SP01_5"),
|
||||
}), RegionEntry("Faron", {
|
||||
MapEntry("South Faron Woods", "F_SP108", {0, 1, 2, 3, 4, 5, 8, 11, 14}),
|
||||
MapEntry("North Faron Woods", "F_SP108", {6}, "F_SP108"),
|
||||
MapEntry("Lost Woods", "F_SP117", {3}),
|
||||
MapEntry("Sacred Grove", "F_SP117", {1}, "F_SP117_1"),
|
||||
MapEntry("Temple of Time (Past)", "F_SP117", {2}, "F_SP117_2"),
|
||||
MapEntry("Faron Woods Cave", "D_SB10"),
|
||||
MapEntry("Coro's House", "R_SP108"),
|
||||
}), RegionEntry("Eldin", {
|
||||
MapEntry("Kakariko Village", "F_SP109"),
|
||||
MapEntry("Death Mountain Trail", "F_SP110", {0, 1, 2, 3}),
|
||||
MapEntry("Kakariko Graveyard", "F_SP111"),
|
||||
MapEntry("Hidden Village", "F_SP128"),
|
||||
MapEntry("Renado's Sanctuary", "R_SP109", {0}),
|
||||
MapEntry("Sanctuary Basement", "R_SP209", {7}),
|
||||
MapEntry("Barnes' Bombs", "R_SP109", {1}, "R_SP109_1"),
|
||||
MapEntry("Elde Inn", "R_SP109", {2}, "R_SP109_2"),
|
||||
MapEntry("Malo Mart", "R_SP109", {3}, "R_SP109_3"),
|
||||
MapEntry("Lookout Tower", "R_SP109", {4}, "R_SP109_4"),
|
||||
MapEntry("Bomb Warehouse", "R_SP109", {5}, "R_SP109_5"),
|
||||
MapEntry("Abandoned House", "R_SP109", {6}, "R_SP109_6"),
|
||||
MapEntry("Goron Elder's Hall", "R_SP110"),
|
||||
}), RegionEntry("Lanayru", {
|
||||
MapEntry("Outside Castle Town - West", "F_SP122", {8}),
|
||||
MapEntry("Outside Castle Town - South", "F_SP122", {16}, "F_SP122_16"),
|
||||
MapEntry("Outside Castle Town - East", "F_SP122", {17}, "F_SP122_17"),
|
||||
MapEntry("Castle Town", "F_SP116", {0, 1, 2, 3, 4}),
|
||||
MapEntry("Zora's River", "F_SP112", {1}),
|
||||
MapEntry("Zora's Domain", "F_SP113", {0, 1}),
|
||||
MapEntry("Lake Hylia", "F_SP115"),
|
||||
MapEntry("Lanayru Spring", "F_SP115", {1}, "F_SP115_1"),
|
||||
MapEntry("Upper Zora's River", "F_SP126", {0}),
|
||||
MapEntry("Fishing Pond", "F_SP127", {0}),
|
||||
MapEntry("Castle Town Sewers", "R_SP107", {0, 1, 2, 3}),
|
||||
MapEntry("Telma's Bar / Secret Passage", "R_SP116", {5, 6}),
|
||||
MapEntry("Hena's Cabin", "R_SP127", {0}),
|
||||
MapEntry("Impaz's House", "R_SP128", {0}),
|
||||
MapEntry("Malo Mart", "R_SP160", {0}),
|
||||
MapEntry("Fanadi's Palace", "R_SP160", {1}, "R_SP160_1"),
|
||||
MapEntry("Medical Clinic", "R_SP160", {2}, "R_SP160_2"),
|
||||
MapEntry("Agitha's Castle", "R_SP160", {3}, "R_SP160_3"),
|
||||
MapEntry("Goron Shop", "R_SP160", {4}, "R_SP160_4"),
|
||||
MapEntry("Jovani's House", "R_SP160", {5}, "R_SP160_5"),
|
||||
MapEntry("STAR Tent", "R_SP161", {7}),
|
||||
}), RegionEntry("Gerudo Desert", {
|
||||
MapEntry("Bulblin Camp", "F_SP118", {0, 1, 3}),
|
||||
MapEntry("Bulblin Camp Beta Room", "F_SP118", {2}, "F_SP118_2"),
|
||||
MapEntry("Gerudo Desert", "F_SP124", {0}),
|
||||
MapEntry("Mirror Chamber", "F_SP125", {4}),
|
||||
}), RegionEntry("Snowpeak", {
|
||||
MapEntry("Snowpeak Mountain", "F_SP114", {0, 1, 2}),
|
||||
}), RegionEntry("Forest Temple", {
|
||||
MapEntry("Forest Temple", "D_MN05", {0, 1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 19, 22}),
|
||||
MapEntry("Diababa Arena", "D_MN05A", {50}),
|
||||
MapEntry("Ook Arena", "D_MN05B", {51}),
|
||||
}), RegionEntry("Goron Mines", {
|
||||
MapEntry("Goron Mines", "D_MN04", {1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 17}),
|
||||
MapEntry("Fyrus Arena", "D_MN04A", {50}),
|
||||
MapEntry("Dangoro Arena", "D_MN04B", {51}),
|
||||
}), RegionEntry("Lakebed Temple", {
|
||||
MapEntry("Lakebed Temple", "D_MN01", {0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13}),
|
||||
MapEntry("Morpheel Arena", "D_MN01A", {50}),
|
||||
MapEntry("Deku Toad Arena", "D_MN01B", {51}),
|
||||
}), RegionEntry("Arbiter's Grounds", {
|
||||
MapEntry("Arbiter's Grounds", "D_MN10", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}),
|
||||
MapEntry("Stallord Arena", "D_MN10A", {50}),
|
||||
MapEntry("Death Sword Arena", "D_MN10B", {51}),
|
||||
}), RegionEntry("Snowpeak Ruins", {
|
||||
MapEntry("Snowpeak Ruins", "D_MN11", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13}),
|
||||
MapEntry("Blizzeta Arena", "D_MN11A", {50}),
|
||||
MapEntry("Darkhammer Arena", "D_MN11B", {51}),
|
||||
MapEntry("Darkhammer Beta Arena", "D_MN11B", {49}),
|
||||
}), RegionEntry("Temple of Time", {
|
||||
MapEntry("Temple of Time", "D_MN06", {0, 1, 2, 3, 4, 5, 6, 7, 8}),
|
||||
MapEntry("Armogohma Arena", "D_MN06A", {50}),
|
||||
MapEntry("Darknut Arena", "D_MN06B", {51}),
|
||||
}), RegionEntry("City in the Sky", {
|
||||
MapEntry("City in the Sky", "D_MN07", {0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16}),
|
||||
MapEntry("Argorok Arena", "D_MN07A", {50}),
|
||||
MapEntry("Aeralfos Arena", "D_MN07B", {51}),
|
||||
}), RegionEntry("Palace of Twilight", {
|
||||
MapEntry("Palace of Twilight", "D_MN08", {0, 1, 2, 4, 5, 7, 8, 9, 10, 11}),
|
||||
MapEntry("Palace of Twilight Throne Room", "D_MN08A", {10}),
|
||||
MapEntry("Phantom Zant Arena 1", "D_MN08B", {51}),
|
||||
MapEntry("Phantom Zant Arena 2", "D_MN08C", {52}),
|
||||
MapEntry("Zant Arenas", "D_MN08D", {50, 53, 54, 55, 56, 57, 60}),
|
||||
}), RegionEntry("Hyrule Castle", {
|
||||
MapEntry("Hyrule Castle", "D_MN09", {1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15}),
|
||||
MapEntry("Hyrule Castle Throne Room", "D_MN09A", {50, 51}),
|
||||
MapEntry("Horseback Ganondorf Arena", "D_MN09B", {0}),
|
||||
MapEntry("Dark Lord Ganondorf Arena", "D_MN09C", {0}),
|
||||
}), RegionEntry("Mini-Dungeons and Grottos", {
|
||||
MapEntry("Ice Cavern", "D_SB00", {0}),
|
||||
MapEntry("Cave Of Ordeals", "D_SB01",
|
||||
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
||||
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
||||
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
|
||||
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
|
||||
40, 41, 42, 43, 44, 45, 46, 47, 48, 49}
|
||||
MapEntry("Hyrule Field", "F_SP121",
|
||||
{
|
||||
{0, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 50}},
|
||||
{1, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 50}},
|
||||
{2, {0, 1, 10, 20, 30}},
|
||||
{3, {0, 1, 2, 3, 4, 5, 6, 10, 14, 15, 16, 17, 20, 21, 22, 88, 99}},
|
||||
{4, {0, 1}},
|
||||
{5, {0}},
|
||||
{6, {0, 1, 2, 3, 10, 11, 12, 21, 100, 101}},
|
||||
{7, {0, 1, 2, 6, 14, 22}},
|
||||
{9, {0, 1, 2, 10}},
|
||||
{10, {0, 1, 2, 3, 4, 5, 6, 7, 8, 14, 15, 16, 20, 21, 22, 23}},
|
||||
{11, {0, 1}},
|
||||
{12, {0, 1, 2, 3, 20, 21}},
|
||||
{13, {0, 1, 2, 3, 4, 14, 20, 21, 22, 23, 98, 99}},
|
||||
{14, {0, 1}},
|
||||
{15, {0, 1, 2, 3, 4, 5, 20, 53, 100, 101}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Ordon", {
|
||||
MapEntry("Ordon Village", "F_SP103", {
|
||||
{0, {0, 1, 2, 4, 5, 6, 7, 9, 11, 13, 14, 15, 20, 21, 22, 23, 24, 25, 26, 27, 30, 99, 100, 101, 102, 103}},
|
||||
}),
|
||||
MapEntry("Outside Link's House", "F_SP103", {
|
||||
{1, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 20, 21, 23, 24, 25, 26, 27, 30, 99, 100}},
|
||||
}, "F_SP103_1"),
|
||||
MapEntry("Ordon Ranch", "F_SP00", {
|
||||
{0, {0, 1, 2, 3, 4, 5, 6, 7, 20, 30, 99, 127}},
|
||||
}),
|
||||
MapEntry("Ordon Spring", "F_SP104", {
|
||||
{1, {0, 1, 2, 3, 4, 5, 6, 10, 20, 21, 22, 23, 24, 25, 26, 30, 99, 100, 111, 200, 254}}
|
||||
}),
|
||||
MapEntry("Bo's House", "R_SP01", {
|
||||
{0, {0, 1, 2, 3}},
|
||||
}),
|
||||
MapEntry("Sera's Sundries", "R_SP01", {
|
||||
{1, {0}},
|
||||
}, "R_SP01_1"),
|
||||
MapEntry("Jaggle's House", "R_SP01", {
|
||||
{2, {0, 1, 2, 3}},
|
||||
}, "R_SP01_2"),
|
||||
MapEntry("Link's House", "R_SP01", {
|
||||
{4, {0, 1, 2, 3, 4}},
|
||||
{7, {0}},
|
||||
}, "R_SP01_4"),
|
||||
MapEntry("Rusl's House", "R_SP01", {
|
||||
{5, {0, 1, 2}},
|
||||
}, "R_SP01_5"),
|
||||
}),
|
||||
RegionEntry("Faron", {
|
||||
MapEntry("South Faron Woods", "F_SP108", {
|
||||
{0, {0, 3, 4, 20, 21, 22, 23, 24, 25, 100, 254}},
|
||||
{1, {0, 1, 2, 3, 6, 20, 21, 100}},
|
||||
{2, {0}},
|
||||
{3, {0, 5, 99}},
|
||||
{4, {0, 1, 2, 7, 8, 9, 23, 100}},
|
||||
{5, {0, 1, 2, 3, 4, 6, 7, 10, 24, 25, 50, 60, 98, 100}},
|
||||
{8, {0, 1, 2, 3}},
|
||||
{11, {0}},
|
||||
{14, {0, 1, 2, 3, 10, 50, 100, 150, 200, 254}},
|
||||
}),
|
||||
MapEntry("North Faron Woods", "F_SP108", {
|
||||
{6, {0, 1, 2, 3, 10, 50, 100, 150, 200, 254}},
|
||||
}, "F_SP108"),
|
||||
MapEntry("Lost Woods", "F_SP117", {
|
||||
{3, {0, 1, 2, 3, 4, 5, 6}},
|
||||
}),
|
||||
MapEntry("Sacred Grove", "F_SP117", {
|
||||
{1, {1, 3, 4, 5, 6, 10, 20, 21, 50, 51, 99, 100, 102, 150, 200, 254}}
|
||||
}, "F_SP117_1"),
|
||||
MapEntry("Temple of Time (Past)", "F_SP117", {
|
||||
{2, {0, 1, 3, 52, 101, 102}},
|
||||
}, "F_SP117_2"),
|
||||
MapEntry("Faron Woods Cave", "D_SB10", {
|
||||
{0, {0, 1, 20, 21}},
|
||||
}),
|
||||
MapEntry("Coro's House", "R_SP108", {
|
||||
{0, {0, 1}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Eldin", {
|
||||
MapEntry("Kakariko Village", "F_SP109", {
|
||||
{0, {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 30, 31, 32, 33, 34, 35,
|
||||
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
|
||||
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
|
||||
68, 69, 70, 71, 100, 101,
|
||||
}},
|
||||
}),
|
||||
MapEntry("Death Mountain Trail", "F_SP110", {
|
||||
{0, {0, 1, 2, 100, 200}},
|
||||
{1, {0}},
|
||||
{2, {0}},
|
||||
{3, {0, 1, 2, 3, 4, 5, 6}},
|
||||
}),
|
||||
MapEntry("Kakariko Graveyard", "F_SP111", {
|
||||
{0, {0, 1, 2, 3, 4, 5, 6, 111}},
|
||||
}),
|
||||
MapEntry("Hidden Village", "F_SP128", {
|
||||
{0, {0, 1, 2, 3, 4, 5, 100}},
|
||||
}),
|
||||
MapEntry("Renado's Sanctuary", "R_SP109", {
|
||||
{0, {0, 2, 3, 5, 6, 7, 8, 10, 20, 21, 22}},
|
||||
}),
|
||||
MapEntry("Sanctuary Basement", "R_SP209", {
|
||||
{7, {0, 1, 2}},
|
||||
}),
|
||||
MapEntry("Barnes' Bombs", "R_SP109", {
|
||||
{1, {0, 1, 2, 3}},
|
||||
}, "R_SP109_1"),
|
||||
MapEntry("Elde Inn", "R_SP109", {
|
||||
{2, {0, 1, 2, 3}},
|
||||
}, "R_SP109_2"),
|
||||
MapEntry("Malo Mart", "R_SP109", {
|
||||
{3, {0, 1}},
|
||||
}, "R_SP109_3"),
|
||||
MapEntry("Lookout Tower", "R_SP109", {
|
||||
{4, {0, 1, 2}},
|
||||
}, "R_SP109_4"),
|
||||
MapEntry("Bomb Warehouse", "R_SP109", {
|
||||
{5, {0, 1}},
|
||||
}, "R_SP109_5"),
|
||||
MapEntry("Abandoned House", "R_SP109", {
|
||||
{6, {0, 1, 5}},
|
||||
}, "R_SP109_6"),
|
||||
MapEntry("Goron Elder's Hall", "R_SP110", {
|
||||
{0, {0, 1, 2, 3, 4, 100}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Lanayru", {
|
||||
MapEntry("Outside Castle Town - West", "F_SP122", {
|
||||
{8, {0, 1, 2, 3, 4, 5, 6, 7, 76, 100, 101, 111, 200, 254}},
|
||||
}),
|
||||
MapEntry("Outside Castle Town - South", "F_SP122", {
|
||||
{16, {0, 1, 2, 3, 4, 111}},
|
||||
}, "F_SP122_16"),
|
||||
MapEntry("Outside Castle Town - East", "F_SP122", {
|
||||
{17, {0, 1, 4}},
|
||||
}, "F_SP122_17"),
|
||||
MapEntry("Castle Town", "F_SP116", {
|
||||
{0, {0, 3, 4, 5, 6, 11, 12, 13, 14, 15, 16, 20, 50, 99, 100}},
|
||||
{1, {0, 1, 30, 40, 50, 100, 111}},
|
||||
{2, {0, 1, 2, 3, 4}},
|
||||
{3, {0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 30}},
|
||||
{4, {0, 2, 3, 4, 5, 6}},
|
||||
}),
|
||||
MapEntry("Zora's River", "F_SP112", {
|
||||
{1, {0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17}},
|
||||
}),
|
||||
MapEntry("Zora's Domain", "F_SP113", {
|
||||
{0, {0, 1, 3, 4, 5, 7, 8, 10, 50, 97, 99, 254}},
|
||||
{1, {0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 30, 34, 98, 100, 101}},
|
||||
}),
|
||||
MapEntry("Lake Hylia", "F_SP115", {
|
||||
{0, {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 20, 25, 29, 30, 31, 32, 33, 34, 40, 50, 55, 70, 75, 76,
|
||||
77, 78, 99, 100, 101, 133, 134, 150, 200, 254,
|
||||
}},
|
||||
}),
|
||||
MapEntry("Lanayru Spring", "F_SP115", {
|
||||
{1, {0, 1, 20, 21, 22, 23, 100}},
|
||||
}, "F_SP115_1"),
|
||||
MapEntry("Upper Zora's River", "F_SP126", {
|
||||
{0, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 99, 100, 101, 200}},
|
||||
}),
|
||||
MapEntry("Fishing Pond", "F_SP127", {
|
||||
{0, {0, 1, 2, 3, 4, 5, 100}},
|
||||
}),
|
||||
MapEntry("Castle Town Sewers", "R_SP107", {
|
||||
{0, {0, 1, 2, 3, 21, 22, 23, 24, 25}},
|
||||
{1, {0, 1, 2, 3, 4, 5, 6, 7}},
|
||||
{2, {0, 1, 2, 2, 20}},
|
||||
{3, {0, 1, 20, 21, 22, 23, 24}},
|
||||
}),
|
||||
MapEntry("Telma's Bar / Secret Passage", "R_SP116", {
|
||||
{5, {0, 1, 2, 3, 4, 5, 6, 20, 30}},
|
||||
{6, {10, 11, 12, 20, 21}},
|
||||
}),
|
||||
MapEntry("Hena's Cabin", "R_SP127", {
|
||||
{0, {0, 1}},
|
||||
}),
|
||||
MapEntry("Impaz's House", "R_SP128", {
|
||||
{0, {0}},
|
||||
}),
|
||||
MapEntry("Malo Mart", "R_SP160", {
|
||||
{0, {0, 1, 2}},
|
||||
}),
|
||||
MapEntry("Fanadi's Palace", "R_SP160", {
|
||||
{1, {0, 1, 2}},
|
||||
}, "R_SP160_1"),
|
||||
MapEntry("Medical Clinic", "R_SP160", {
|
||||
{2, {0, 1, 2}},
|
||||
}, "R_SP160_2"),
|
||||
MapEntry("Agitha's Castle", "R_SP160", {
|
||||
{3, {0, 1, 2}},
|
||||
}, "R_SP160_3"),
|
||||
MapEntry("Goron Shop", "R_SP160", {
|
||||
{4, {0, 1, 2}},
|
||||
}, "R_SP160_4"),
|
||||
MapEntry("Jovani's House", "R_SP160", {
|
||||
{5, {0, 1, 2, 3, 4}},
|
||||
}, "R_SP160_5"),
|
||||
MapEntry("STAR Tent", "R_SP161", {
|
||||
{7, {0, 1, 2, 3, 4}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Gerudo Desert", {
|
||||
MapEntry("Bulblin Camp", "F_SP118", {
|
||||
{0, {0}}, //TODO: can't load this one far enough to see its valid points
|
||||
{1, {0, 1, 2, 6}},
|
||||
{3, {0, 2, 3, 4, 5, 7}},
|
||||
}),
|
||||
MapEntry("Bulblin Camp Beta Room", "F_SP118", {
|
||||
{2, {0}},
|
||||
}, "F_SP118_2"),
|
||||
MapEntry("Gerudo Desert", "F_SP124", {
|
||||
{0, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 50, 51, 52, 53, 111}},
|
||||
}),
|
||||
MapEntry("Mirror Chamber", "F_SP125", {
|
||||
{4, {0, 1, 2, 3, 4, 5, 6, 7, 8, 51, 52, 54, 55, 56, 57, 58}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Snowpeak", {
|
||||
MapEntry("Snowpeak Mountain", "F_SP114", {
|
||||
{0, {0, 1, 2, 4, 5, 6, 7, 10, 13, 14, 15, 100}},
|
||||
{1, {1, 2, 3, 5, 6, 9, 10, 11, 12, 13, 20, 21, 22, 100}},
|
||||
{2, {8, 12, 13}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Forest Temple", {
|
||||
MapEntry("Forest Temple", "D_MN05", {
|
||||
{0, {0}},
|
||||
{1, {0}},
|
||||
{2, {0}},
|
||||
{3, {0, 1}},
|
||||
{4, {0, 1, 2}},
|
||||
{5, {0, 1}},
|
||||
{7, {0}},
|
||||
{9, {0}},
|
||||
{10, {0}},
|
||||
{11, {0}},
|
||||
{12, {0, 1}},
|
||||
{19, {0}},
|
||||
{22, {0}},
|
||||
}),
|
||||
MapEntry("Diababa Arena", "D_MN05A", {
|
||||
{50, {0, 1}},
|
||||
}),
|
||||
MapEntry("Ook Arena", "D_MN05B", {
|
||||
{51, {0, 1, 2}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Goron Mines", {
|
||||
MapEntry("Goron Mines", "D_MN04", {
|
||||
{1, {0, 1}},
|
||||
{3, {0}},
|
||||
{4, {0, 1}},
|
||||
{5, {0}},
|
||||
{6, {0, 1}},
|
||||
{7, {0, 1}},
|
||||
{9, {0, 1, 2, 3}},
|
||||
{11, {0, 1}},
|
||||
{12, {0, 1}},
|
||||
{13, {0}},
|
||||
{14, {0, 1}},
|
||||
{16, {0}},
|
||||
{17, {0, 1}},
|
||||
}),
|
||||
MapEntry("Fyrus Arena", "D_MN04A", {
|
||||
{50, {0, 1}},
|
||||
}),
|
||||
MapEntry("Dangoro Arena", "D_MN04B", {
|
||||
{51, {0, 1, 2, 3}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Lakebed Temple", {
|
||||
MapEntry("Lakebed Temple", "D_MN01", {
|
||||
{0, {0, 1, 2}},
|
||||
{1, {0}},
|
||||
{2, {0}},
|
||||
{3, {0, 1, 2}},
|
||||
{5, {0, 1, 2}},
|
||||
{6, {0, 1, 2}},
|
||||
{7, {0}},
|
||||
{8, {0, 2}},
|
||||
{9, {0, 1, 2, 3, 4}},
|
||||
{10, {0, 1}},
|
||||
{11, {0}},
|
||||
{12, {0, 1, 2}},
|
||||
{13, {0}},
|
||||
}),
|
||||
MapEntry("Morpheel Arena", "D_MN01A", {
|
||||
{50, {0, 1, 2, 3}},
|
||||
}),
|
||||
MapEntry("Deku Toad Arena", "D_MN01B", {
|
||||
{51, {0, 1, 2, 3}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Arbiter's Grounds", {
|
||||
MapEntry("Arbiter's Grounds", "D_MN10", {
|
||||
{0, {0, 1, 2, 3}},
|
||||
{1, {0}},
|
||||
{2, {0, 1, 2, 3}},
|
||||
{3, {0}},
|
||||
{4, {0, 1, 2, 3}},
|
||||
{5, {0}},
|
||||
{6, {0, 1}},
|
||||
{7, {0}},
|
||||
{8, {0}},
|
||||
{9, {0, 1, 2}},
|
||||
{10, {0}},
|
||||
{11, {0, 1, 2, 3}},
|
||||
{12, {0}},
|
||||
{13, {0, 1}},
|
||||
{14, {0}},
|
||||
{15, {0, 1}},
|
||||
{16, {0}},
|
||||
}),
|
||||
MapEntry("Stallord Arena", "D_MN10A", {
|
||||
{50, {0, 1, 2, 3}},
|
||||
}),
|
||||
MapEntry("Death Sword Arena", "D_MN10B", {
|
||||
{51, {0, 1, 2, 3}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Snowpeak Ruins", {
|
||||
MapEntry("Snowpeak Ruins", "D_MN11", {
|
||||
{0, {0, 1, 2, 3}},
|
||||
{1, {0}},
|
||||
{2, {0, 1, 2}},
|
||||
{3, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}},
|
||||
{4, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}},
|
||||
{5, {0, 1, 2, 3, 4}},
|
||||
{6, {0, 1, 2}},
|
||||
{7, {0, 10}},
|
||||
{8, {0}},
|
||||
{9, {0}},
|
||||
{11, {0}},
|
||||
{13, {0}},
|
||||
}),
|
||||
MapEntry("Blizzeta Arena", "D_MN11A", {
|
||||
{50, {0, 1, 2, 3}},
|
||||
}),
|
||||
MapEntry("Darkhammer Arena", "D_MN11B", {
|
||||
{51, {0, 1, 2, 3}},
|
||||
}),
|
||||
MapEntry("Darkhammer Beta Arena", "D_MN11B", {
|
||||
{49, {0, 1, 2}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Temple of Time", {
|
||||
MapEntry("Temple of Time", "D_MN06", {
|
||||
{0, {0, 1}},
|
||||
{1, {0}},
|
||||
{2, {0, 1, 2}},
|
||||
{3, {0, 1}},
|
||||
{4, {0, 1}},
|
||||
{5, {0}},
|
||||
{6, {0}},
|
||||
{7, {0, 1, 2}},
|
||||
{8, {0, 1, 2}},
|
||||
}),
|
||||
MapEntry("Armogohma Arena", "D_MN06A", {
|
||||
{50, {0, 1}},
|
||||
}),
|
||||
MapEntry("Darknut Arena", "D_MN06B", {
|
||||
{51, {0}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("City in the Sky", {
|
||||
MapEntry("City in the Sky", "D_MN07", {
|
||||
{0, {0, 1, 2, 3, 4, 5}},
|
||||
{1, {0}},
|
||||
{2, {0, 1, 2, 3, 4}},
|
||||
{3, {0, 1, 2, 3}},
|
||||
{4, {0, 1, 2}},
|
||||
{5, {0, 1, 2}},
|
||||
{6, {0, 1, 2, 3, 4, 5, 6, 7, 8}},
|
||||
{7, {0}},
|
||||
{8, {0}},
|
||||
{10, {0, 1, 3}},
|
||||
{11, {0, 1}},
|
||||
{12, {0, 1, 2, 3}},
|
||||
{13, {0, 1}},
|
||||
{14, {0, 1, 3}},
|
||||
{15, {0, 1, 3, 4}},
|
||||
{16, {0, 1, 2}},
|
||||
}),
|
||||
MapEntry("Argorok Arena", "D_MN07A", {
|
||||
{50, {0, 1, 2, 3}},
|
||||
}),
|
||||
MapEntry("Aeralfos Arena", "D_MN07B", {
|
||||
{51, {0, 1, 2}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Palace of Twilight", {
|
||||
MapEntry("Palace of Twilight", "D_MN08", {
|
||||
{0, {0, 1, 2, 3, 4, 10, 20, 21, 22}},
|
||||
{1, {0, 1}},
|
||||
{2, {0, 1}},
|
||||
{4, {0, 1}},
|
||||
{5, {0, 1, 2}},
|
||||
{7, {0, 1}},
|
||||
{8, {0}},
|
||||
{9, {0, 1, 20, 21}},
|
||||
{10, {0, 1}},
|
||||
{11, {0, 1, 20, 21, 22}},
|
||||
}),
|
||||
MapEntry("Palace of Twilight Throne Room", "D_MN08A", {
|
||||
{10, {0, 1, 21, 23, 24, 25}},
|
||||
}),
|
||||
MapEntry("Phantom Zant Arena 1", "D_MN08B", {
|
||||
{51, {0, 1, 2, 3}},
|
||||
}),
|
||||
MapEntry("Phantom Zant Arena 2", "D_MN08C", {
|
||||
{52, {0, 2}},
|
||||
}),
|
||||
MapEntry("Zant Arenas", "D_MN08D", {
|
||||
{50, {0, 20}},
|
||||
{53, {0}},
|
||||
{54, {0}},
|
||||
{55, {0, 1}},
|
||||
{56, {0}},
|
||||
{57, {0}},
|
||||
{60, {0}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Hyrule Castle", {
|
||||
MapEntry("Hyrule Castle", "D_MN09", {
|
||||
{1, {0, 1, 2, 3}},
|
||||
{2, {0, 2, 3}},
|
||||
{3, {0}},
|
||||
{4, {0, 1, 2}},
|
||||
{5, {0}},
|
||||
{6, {0, 1}},
|
||||
{8, {0}},
|
||||
{9, {0, 1, 2}},
|
||||
{11, {0, 1, 2, 3, 5}},
|
||||
{12, {0, 1, 2, 3, 4, 5, 6, 7, 8}},
|
||||
{13, {0}},
|
||||
{14, {0, 1, 2, 3, 4, 5}},
|
||||
{15, {0, 1, 2, 3, 4, 5, 6, 7}},
|
||||
}),
|
||||
MapEntry("Hyrule Castle Throne Room", "D_MN09A", {
|
||||
{50, {0, 1, 2, 10, 20, 21, 22, 120, 121, 122}},
|
||||
{51, {0, 1, 2, 10, 20, 21, 22, 120, 121, 122}},
|
||||
}),
|
||||
MapEntry("Horseback Ganondorf Arena", "D_MN09B", {
|
||||
{0, {0, 1}},
|
||||
}),
|
||||
MapEntry("Dark Lord Ganondorf Arena", "D_MN09C", {
|
||||
{0, {0, 20, 21, 22, 23}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Mini-Dungeons and Grottos", {
|
||||
MapEntry("Ice Cavern", "D_SB00", {
|
||||
{0, {0}},
|
||||
}),
|
||||
MapEntry("Cave Of Ordeals", "D_SB01", {
|
||||
{0, {0}},
|
||||
{1, {0}},
|
||||
{2, {0}},
|
||||
{3, {0}},
|
||||
{4, {0}},
|
||||
{5, {0}},
|
||||
{6, {0}},
|
||||
{7, {0}},
|
||||
{8, {0, 1}},
|
||||
{9, {0}},
|
||||
{10, {0}},
|
||||
{11, {0}},
|
||||
{12, {0}},
|
||||
{13, {0}},
|
||||
{14, {0}},
|
||||
{15, {0}},
|
||||
{16, {0}},
|
||||
{17, {0}},
|
||||
{18, {0, 1}},
|
||||
{19, {0}},
|
||||
{20, {0}},
|
||||
{21, {0}},
|
||||
{22, {0}},
|
||||
{23, {0}},
|
||||
{24, {0}},
|
||||
{25, {0}},
|
||||
{26, {0}},
|
||||
{27, {0}},
|
||||
{28, {0, 1}},
|
||||
{29, {0}},
|
||||
{30, {0}},
|
||||
{31, {0}},
|
||||
{32, {0}},
|
||||
{33, {0}},
|
||||
{34, {0}},
|
||||
{35, {0}},
|
||||
{36, {0}},
|
||||
{37, {0}},
|
||||
{38, {0, 1}},
|
||||
{39, {0}},
|
||||
{40, {0}},
|
||||
{41, {0}},
|
||||
{42, {0}},
|
||||
{43, {0}},
|
||||
{44, {0}},
|
||||
{45, {0}},
|
||||
{46, {0}},
|
||||
{47, {0}},
|
||||
{48, {0, 1}},
|
||||
{49, {0}},
|
||||
}
|
||||
),
|
||||
MapEntry("Kakariko Gorge Cavern", "D_SB02", {0}),
|
||||
MapEntry("Lake Hylia Cavern", "D_SB03", {0}),
|
||||
MapEntry("Goron Stockcave", "D_SB04", {10}),
|
||||
MapEntry("Grotto 1", "D_SB05"),
|
||||
MapEntry("Grotto 2", "D_SB06", {1}),
|
||||
MapEntry("Grotto 3", "D_SB07", {2}),
|
||||
MapEntry("Grotto 4", "D_SB08", {3}),
|
||||
MapEntry("Grotto 5", "D_SB09", {4}),
|
||||
}), RegionEntry("Misc", {
|
||||
MapEntry("Title Screen / King Bulblin 1", "F_SP102"),
|
||||
MapEntry("King Bulblin 2", "F_SP123", {13}),
|
||||
MapEntry("Wolf Howling Cutscene Map", "F_SP200"),
|
||||
// MapEntry("Cutscene: Light Arrow Area", "R_SP300"),
|
||||
MapEntry("Cutscene: Hyrule Castle Throne Room", "R_SP301"),
|
||||
MapEntry("Kakariko Gorge Cavern", "D_SB02", {
|
||||
{0, {0}},
|
||||
}),
|
||||
MapEntry("Lake Hylia Cavern", "D_SB03", {
|
||||
{0, {0, 1}},
|
||||
}),
|
||||
MapEntry("Goron Stockcave", "D_SB04", {
|
||||
{10, {0, 1}},
|
||||
}),
|
||||
MapEntry("Grotto 1", "D_SB05", {
|
||||
{0, {0, 1}},
|
||||
}),
|
||||
MapEntry("Grotto 2", "D_SB06", {
|
||||
{1, {0, 1}},
|
||||
}),
|
||||
MapEntry("Grotto 3", "D_SB07", {
|
||||
{2, {0, 1}},
|
||||
}),
|
||||
MapEntry("Grotto 4", "D_SB08", {
|
||||
{3, {0, 1}},
|
||||
}),
|
||||
MapEntry("Grotto 5", "D_SB09", {
|
||||
{4, {0, 1}},
|
||||
}),
|
||||
}),
|
||||
RegionEntry("Misc", {
|
||||
MapEntry("Title Screen / King Bulblin 1", "F_SP102", {
|
||||
{0, {0, 1, 2, 3, 4, 5, 20, 53, 100, 101}},
|
||||
}),
|
||||
MapEntry("King Bulblin 2", "F_SP123", {
|
||||
{13, {0}},
|
||||
}),
|
||||
MapEntry("Wolf Howling Cutscene Map", "F_SP200", {
|
||||
{0, {0, 1, 2, 3, 4, 5, 6, 7}},
|
||||
}),
|
||||
MapEntry("Cutscene: Light Arrow Area", "R_SP300", {
|
||||
{0, {0, 20, 120}},
|
||||
}),
|
||||
MapEntry("Cutscene: Hyrule Castle Throne Room", "R_SP301", {
|
||||
{0, {0, 20, 100}},
|
||||
}),
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
@@ -47,7 +47,9 @@ namespace dusk {
|
||||
int mapIdx = -1;
|
||||
int regionIdx = -1;
|
||||
int roomNoIdx = 0;
|
||||
int pointNoIdx = 0;
|
||||
int roomNo = -1;
|
||||
int pointNo = -1;
|
||||
int spawnId = 0;
|
||||
int layer = -1;
|
||||
bool showInternalNames = false;
|
||||
|
||||
@@ -35,8 +35,10 @@ namespace dusk {
|
||||
int idx = 0;
|
||||
for (const auto& region : gameRegions) {
|
||||
if (ImGui::Selectable(region.regionName)) {
|
||||
if (m_mapLoaderInfo.regionIdx != idx) {
|
||||
m_mapLoaderInfo.mapIdx = 0;
|
||||
}
|
||||
m_mapLoaderInfo.regionIdx = idx;
|
||||
m_mapLoaderInfo.mapIdx = -1;
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
@@ -53,6 +55,7 @@ namespace dusk {
|
||||
}
|
||||
|
||||
if (ImGui::BeginCombo("Select Map", previewMap.data())) {
|
||||
int prevMapIdx = m_mapLoaderInfo.mapIdx;
|
||||
for (int i = 0; i < region.numMaps; ++i) {
|
||||
const auto& map = region.maps[i];
|
||||
std::string label = m_mapLoaderInfo.showInternalNames ? fmt::format("{} ({})", map.mapName, map.mapFile) : map.mapName;
|
||||
@@ -61,6 +64,10 @@ namespace dusk {
|
||||
}
|
||||
}
|
||||
ImGui::EndCombo();
|
||||
if (m_mapLoaderInfo.mapIdx != prevMapIdx) {
|
||||
m_mapLoaderInfo.roomNoIdx = 0;
|
||||
m_mapLoaderInfo.pointNoIdx = 0;
|
||||
}
|
||||
}
|
||||
}else {
|
||||
ImGui::Text("No region selected.");
|
||||
@@ -69,27 +76,48 @@ namespace dusk {
|
||||
if (m_mapLoaderInfo.regionIdx != -1 && m_mapLoaderInfo.mapIdx != -1) {
|
||||
const auto& region = gameRegions[m_mapLoaderInfo.regionIdx];
|
||||
const auto& map = region.maps[m_mapLoaderInfo.mapIdx];
|
||||
const auto& room = map.mapRooms[m_mapLoaderInfo.roomNoIdx];
|
||||
|
||||
if (map.numRooms > 0) {
|
||||
ImGui::Text("Selected Room: %d", map.mapRooms[m_mapLoaderInfo.roomNoIdx]);
|
||||
if (map.numRooms > 1) {
|
||||
ImGui::Text("Selected Room: %2d", room.roomNo);
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("-###RoomNoIdxDec")) {
|
||||
m_mapLoaderInfo.roomNoIdx--;
|
||||
if (m_mapLoaderInfo.roomNoIdx < 0) {
|
||||
m_mapLoaderInfo.roomNoIdx = 0;
|
||||
m_mapLoaderInfo.roomNoIdx = map.numRooms - 1;
|
||||
}
|
||||
m_mapLoaderInfo.pointNoIdx = 0;
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("+###RoomNoIdxInc")) {
|
||||
m_mapLoaderInfo.roomNoIdx++;
|
||||
if (m_mapLoaderInfo.roomNoIdx >= map.numRooms) {
|
||||
m_mapLoaderInfo.roomNoIdx = map.numRooms - 1;
|
||||
m_mapLoaderInfo.roomNoIdx = 0;
|
||||
}
|
||||
m_mapLoaderInfo.pointNoIdx = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (room.numPoints > 1) {
|
||||
ImGui::Text("Selected Point: %3d", room.roomPoints[m_mapLoaderInfo.pointNoIdx]);
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("-###PointNoIdxDec")) {
|
||||
m_mapLoaderInfo.pointNoIdx--;
|
||||
if (m_mapLoaderInfo.pointNoIdx < 0) {
|
||||
m_mapLoaderInfo.pointNoIdx = room.numPoints - 1;
|
||||
}
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("+###PointNoIdxInc")) {
|
||||
m_mapLoaderInfo.pointNoIdx++;
|
||||
if (m_mapLoaderInfo.pointNoIdx >= room.numPoints) {
|
||||
m_mapLoaderInfo.pointNoIdx = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ImGui::Button("Warp")) {
|
||||
dComIfGp_setNextStage(map.mapFile, 0, map.mapRooms[m_mapLoaderInfo.roomNoIdx], -1);
|
||||
dComIfGp_setNextStage(map.mapFile, room.roomPoints[m_mapLoaderInfo.pointNoIdx], room.roomNo, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user