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 |
