about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2024-06-06 15:51:32 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2024-06-06 15:51:32 -0400
commit6f5287b3921c843a6b322ccbdfcbef00a8f16980 (patch)
treee136ec82d71dd6b01accabbe1a4fd522b36c4cbf
parentcb880c618ce031c95009b848cdf62dd61751c858 (diff)
downloadlingo-ap-tracker-6f5287b3921c843a6b322ccbdfcbef00a8f16980.tar.gz
lingo-ap-tracker-6f5287b3921c843a6b322ccbdfcbef00a8f16980.tar.bz2
lingo-ap-tracker-6f5287b3921c843a6b322ccbdfcbef00a8f16980.zip
Handle special cases (ECH + Sun Painting)
-rw-r--r--src/subway_map.cpp34
-rw-r--r--src/tracker_state.cpp9
2 files changed, 39 insertions, 4 deletions
diff --git a/src/subway_map.cpp b/src/subway_map.cpp index b32c362..8364714 100644 --- a/src/subway_map.cpp +++ b/src/subway_map.cpp
@@ -69,6 +69,12 @@ void SubwayMap::OnConnect() {
69 69
70 std::map<std::string, std::vector<int>> tagged; 70 std::map<std::string, std::vector<int>> tagged;
71 for (const SubwayItem &subway_item : GD_GetSubwayItems()) { 71 for (const SubwayItem &subway_item : GD_GetSubwayItems()) {
72 if (AP_HasEarlyColorHallways() &&
73 (subway_item.special == "starting_room_paintings" ||
74 subway_item.special == "early_color_hallways")) {
75 tagged["early_color_hallways"].push_back(subway_item.id);
76 }
77
72 if (AP_IsPaintingShuffle() && !subway_item.paintings.empty()) { 78 if (AP_IsPaintingShuffle() && !subway_item.paintings.empty()) {
73 continue; 79 continue;
74 } 80 }
@@ -84,6 +90,12 @@ void SubwayMap::OnConnect() {
84 90
85 tagged[tag.str()].push_back(subway_item.id); 91 tagged[tag.str()].push_back(subway_item.id);
86 } 92 }
93
94 if (!AP_IsPilgrimageEnabled() &&
95 (subway_item.special == "sun_painting" ||
96 subway_item.special == "sun_painting_exit")) {
97 tagged["sun_painting"].push_back(subway_item.id);
98 }
87 } 99 }
88 100
89 for (const auto &[tag, items] : tagged) { 101 for (const auto &[tag, items] : tagged) {
@@ -489,7 +501,27 @@ void SubwayMap::Redraw() {
489 const wxBrush *brush_color = wxGREY_BRUSH; 501 const wxBrush *brush_color = wxGREY_BRUSH;
490 std::optional<wxColour> shade_color; 502 std::optional<wxColour> shade_color;
491 503
492 if (!subway_item.paintings.empty()) { 504 if (AP_HasEarlyColorHallways() &&
505 (subway_item.special == "starting_room_paintings" ||
506 subway_item.special == "early_color_hallways")) {
507 draw_type = ItemDrawType::kOwl;
508
509 if (subway_item.special == "starting_room_paintings") {
510 shade_color = wxColour(0, 255, 0, 128);
511 } else {
512 shade_color = wxColour(255, 0, 0, 128);
513 }
514 } else if (subway_item.special == "sun_painting") {
515 if (!AP_IsPilgrimageEnabled()) {
516 if (IsDoorOpen(*subway_item.door)) {
517 draw_type = ItemDrawType::kOwl;
518 shade_color = wxColour(0, 255, 0, 128);
519 } else {
520 draw_type = ItemDrawType::kBox;
521 brush_color = wxRED_BRUSH;
522 }
523 }
524 } else if (!subway_item.paintings.empty()) {
493 if (AP_IsPaintingShuffle()) { 525 if (AP_IsPaintingShuffle()) {
494 bool has_checked_painting = false; 526 bool has_checked_painting = false;
495 bool has_unchecked_painting = false; 527 bool has_unchecked_painting = false;
diff --git a/src/tracker_state.cpp b/src/tracker_state.cpp index 46bdbec..66e7751 100644 --- a/src/tracker_state.cpp +++ b/src/tracker_state.cpp
@@ -52,9 +52,12 @@ class RequirementCalculator {
52 Requirements requirements; 52 Requirements requirements;
53 const Door& door_obj = GD_GetDoor(door_id); 53 const Door& door_obj = GD_GetDoor(door_id);
54 54
55 if (!AP_IsPilgrimageEnabled() && 55 if (door_obj.type == DoorType::kSunPainting) {
56 door_obj.type == DoorType::kSunPainting) { 56 if (!AP_IsPilgrimageEnabled()) {
57 requirements.items.insert(door_obj.ap_item_id); 57 requirements.items.insert(door_obj.ap_item_id);
58 } else {
59 requirements.disabled = true;
60 }
58 } else if (door_obj.type == DoorType::kSunwarp) { 61 } else if (door_obj.type == DoorType::kSunwarp) {
59 switch (AP_GetSunwarpAccess()) { 62 switch (AP_GetSunwarpAccess()) {
60 case kSUNWARP_ACCESS_NORMAL: 63 case kSUNWARP_ACCESS_NORMAL: