diff options
Diffstat (limited to 'src/tracker_state.cpp')
-rw-r--r-- | src/tracker_state.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/tracker_state.cpp b/src/tracker_state.cpp index 4a49fac..eee43e4 100644 --- a/src/tracker_state.cpp +++ b/src/tracker_state.cpp | |||
@@ -192,6 +192,10 @@ class StateCalculator { | |||
192 | : options_(options) {} | 192 | : options_(options) {} |
193 | 193 | ||
194 | void Calculate() { | 194 | void Calculate() { |
195 | painting_mapping_ = AP_GetPaintingMapping(); | ||
196 | checked_paintings_ = AP_GetCheckedPaintings(); | ||
197 | sunwarp_mapping_ = AP_GetSunwarpMapping(); | ||
198 | |||
195 | std::list<int> panel_boundary; | 199 | std::list<int> panel_boundary; |
196 | std::list<int> painting_boundary; | 200 | std::list<int> painting_boundary; |
197 | std::list<Exit> flood_boundary; | 201 | std::list<Exit> flood_boundary; |
@@ -231,12 +235,12 @@ class StateCalculator { | |||
231 | reachable_changed = true; | 235 | reachable_changed = true; |
232 | 236 | ||
233 | PaintingExit cur_painting = GD_GetPaintingExit(painting_id); | 237 | PaintingExit cur_painting = GD_GetPaintingExit(painting_id); |
234 | if (AP_GetPaintingMapping().count(cur_painting.internal_id) && | 238 | if (painting_mapping_.count(cur_painting.internal_id) && |
235 | AP_GetCheckedPaintings().count(cur_painting.internal_id)) { | 239 | checked_paintings_.count(cur_painting.internal_id)) { |
236 | Exit painting_exit; | 240 | Exit painting_exit; |
237 | PaintingExit target_painting = | 241 | PaintingExit target_painting = |
238 | GD_GetPaintingExit(GD_GetPaintingByName( | 242 | GD_GetPaintingExit(GD_GetPaintingByName( |
239 | AP_GetPaintingMapping().at(cur_painting.internal_id))); | 243 | painting_mapping_.at(cur_painting.internal_id))); |
240 | painting_exit.source_room = cur_painting.room; | 244 | painting_exit.source_room = cur_painting.room; |
241 | painting_exit.destination_room = target_painting.room; | 245 | painting_exit.destination_room = target_painting.room; |
242 | painting_exit.type = EntranceType::kPainting; | 246 | painting_exit.type = EntranceType::kPainting; |
@@ -295,8 +299,8 @@ class StateCalculator { | |||
295 | 299 | ||
296 | if (AP_IsSunwarpShuffle()) { | 300 | if (AP_IsSunwarpShuffle()) { |
297 | for (int index : room_obj.sunwarps) { | 301 | for (int index : room_obj.sunwarps) { |
298 | if (AP_GetSunwarpMapping().count(index)) { | 302 | if (sunwarp_mapping_.count(index)) { |
299 | const SunwarpMapping& sm = AP_GetSunwarpMapping().at(index); | 303 | const SunwarpMapping& sm = sunwarp_mapping_.at(index); |
300 | 304 | ||
301 | new_boundary.push_back( | 305 | new_boundary.push_back( |
302 | {.source_room = room_exit.destination_room, | 306 | {.source_room = room_exit.destination_room, |
@@ -317,8 +321,7 @@ class StateCalculator { | |||
317 | if (AP_IsPilgrimageEnabled()) { | 321 | if (AP_IsPilgrimageEnabled()) { |
318 | int pilgrimage_start_id = GD_GetRoomByName("Hub Room"); | 322 | int pilgrimage_start_id = GD_GetRoomByName("Hub Room"); |
319 | if (AP_IsSunwarpShuffle()) { | 323 | if (AP_IsSunwarpShuffle()) { |
320 | for (const auto& [start_index, mapping] : | 324 | for (const auto& [start_index, mapping] : sunwarp_mapping_) { |
321 | AP_GetSunwarpMapping()) { | ||
322 | if (mapping.dots == 1) { | 325 | if (mapping.dots == 1) { |
323 | pilgrimage_start_id = GD_GetRoomForSunwarp(start_index); | 326 | pilgrimage_start_id = GD_GetRoomForSunwarp(start_index); |
324 | } | 327 | } |
@@ -578,7 +581,7 @@ class StateCalculator { | |||
578 | if (AP_IsSunwarpShuffle()) { | 581 | if (AP_IsSunwarpShuffle()) { |
579 | pilgrimage_pairs = std::vector<std::tuple<int, int>>(5); | 582 | pilgrimage_pairs = std::vector<std::tuple<int, int>>(5); |
580 | 583 | ||
581 | for (const auto& [start_index, mapping] : AP_GetSunwarpMapping()) { | 584 | for (const auto& [start_index, mapping] : sunwarp_mapping_) { |
582 | if (mapping.dots > 1) { | 585 | if (mapping.dots > 1) { |
583 | std::get<1>(pilgrimage_pairs[mapping.dots - 2]) = start_index; | 586 | std::get<1>(pilgrimage_pairs[mapping.dots - 2]) = start_index; |
584 | } | 587 | } |
@@ -649,6 +652,10 @@ class StateCalculator { | |||
649 | bool pilgrimage_doable_ = false; | 652 | bool pilgrimage_doable_ = false; |
650 | 653 | ||
651 | std::map<int, std::list<int>> paths_; | 654 | std::map<int, std::list<int>> paths_; |
655 | |||
656 | std::map<std::string, std::string> painting_mapping_; | ||
657 | std::set<std::string> checked_paintings_; | ||
658 | std::map<int, SunwarpMapping> sunwarp_mapping_; | ||
652 | }; | 659 | }; |
653 | 660 | ||
654 | } // namespace | 661 | } // namespace |