about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-03-11 17:49:13 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-03-11 17:49:13 -0400
commit009cfbee0c28bb9c80e305de4a9c430350d6dde6 (patch)
tree18f06b090d2fd749aa5c653ce28977a945a815e0
parent8ad881fed6e388f7a254350532ce58552ef47a1d (diff)
downloadlingo-ap-tracker-009cfbee0c28bb9c80e305de4a9c430350d6dde6.tar.gz
lingo-ap-tracker-009cfbee0c28bb9c80e305de4a9c430350d6dde6.tar.bz2
lingo-ap-tracker-009cfbee0c28bb9c80e305de4a9c430350d6dde6.zip
Handled tilted subway items
-rw-r--r--assets/subway.yaml12
-rw-r--r--src/game_data.cpp4
-rw-r--r--src/game_data.h1
-rw-r--r--src/subway_map.cpp13
4 files changed, 23 insertions, 7 deletions
diff --git a/assets/subway.yaml b/assets/subway.yaml index f90f945..080a139 100644 --- a/assets/subway.yaml +++ b/assets/subway.yaml
@@ -269,27 +269,27 @@
269 painting: eight_painting 269 painting: eight_painting
270 exits: 270 exits:
271 - eight_alcove 271 - eight_alcove
272- pos: [697, 1471] 272- pos: [695, 1471]
273 room: Orange Tower 273 room: Orange Tower
274 door: Second Floor 274 door: Second Floor
275 tilted: true 275 tilted: true
276- pos: [633, 1406] 276- pos: [631, 1406]
277 room: Orange Tower 277 room: Orange Tower
278 door: Third Floor 278 door: Third Floor
279 tilted: true 279 tilted: true
280- pos: [570, 1343] 280- pos: [567, 1341]
281 room: Orange Tower 281 room: Orange Tower
282 door: Fourth Floor 282 door: Fourth Floor
283 tilted: true 283 tilted: true
284- pos: [504, 1279] 284- pos: [502, 1277]
285 room: Orange Tower 285 room: Orange Tower
286 door: Fifth Floor 286 door: Fifth Floor
287 tilted: true 287 tilted: true
288- pos: [440, 1215] 288- pos: [438, 1213]
289 room: Orange Tower 289 room: Orange Tower
290 door: Sixth Floor 290 door: Sixth Floor
291 tilted: true 291 tilted: true
292- pos: [379, 1153] 292- pos: [378, 1152]
293 room: Orange Tower 293 room: Orange Tower
294 door: Seventh Floor 294 door: Seventh Floor
295 tilted: true 295 tilted: true
diff --git a/src/game_data.cpp b/src/game_data.cpp index 8ccc0da..a4a441d 100644 --- a/src/game_data.cpp +++ b/src/game_data.cpp
@@ -828,6 +828,10 @@ struct GameData {
828 subway_item.special = subway_it["special"].as<std::string>(); 828 subway_item.special = subway_it["special"].as<std::string>();
829 } 829 }
830 830
831 if (subway_it["tilted"]) {
832 subway_item.tilted = subway_it["tilted"].as<bool>();
833 }
834
831 subway_items_.push_back(subway_item); 835 subway_items_.push_back(subway_item);
832 } 836 }
833 837
diff --git a/src/game_data.h b/src/game_data.h index be10900..24760de 100644 --- a/src/game_data.h +++ b/src/game_data.h
@@ -156,6 +156,7 @@ struct SubwayItem {
156 int id; 156 int id;
157 int x; 157 int x;
158 int y; 158 int y;
159 bool tilted = false;
159 std::optional<int> door; 160 std::optional<int> door;
160 std::optional<std::string> painting; 161 std::optional<std::string> painting;
161 std::vector<std::string> tags; // 2-way teleports 162 std::vector<std::string> tags; // 2-way teleports
diff --git a/src/subway_map.cpp b/src/subway_map.cpp index f00f03f..94292fd 100644 --- a/src/subway_map.cpp +++ b/src/subway_map.cpp
@@ -611,7 +611,18 @@ void SubwayMap::Redraw() {
611 if (draw_type == ItemDrawType::kBox) { 611 if (draw_type == ItemDrawType::kBox) {
612 gcdc.SetPen(*wxThePenList->FindOrCreatePen(*wxBLACK, 1)); 612 gcdc.SetPen(*wxThePenList->FindOrCreatePen(*wxBLACK, 1));
613 gcdc.SetBrush(*brush_color); 613 gcdc.SetBrush(*brush_color);
614 gcdc.DrawRectangle(real_area_pos, {real_area_size, real_area_size}); 614
615 if (subway_item.tilted) {
616 constexpr int AREA_TILTED_SIDE =
617 static_cast<int>(AREA_ACTUAL_SIZE / 1.41421356237);
618 const wxPoint poly_points[] = {{AREA_TILTED_SIDE, 0},
619 {2 * AREA_TILTED_SIDE, AREA_TILTED_SIDE},
620 {AREA_TILTED_SIDE, 2 * AREA_TILTED_SIDE},
621 {0, AREA_TILTED_SIDE}};
622 gcdc.DrawPolygon(4, poly_points, subway_item.x, subway_item.y);
623 } else {
624 gcdc.DrawRectangle(real_area_pos, {real_area_size, real_area_size});
625 }
615 } else if (draw_type == ItemDrawType::kOwl || draw_type == ItemDrawType::kOwlExit) { 626 } else if (draw_type == ItemDrawType::kOwl || draw_type == ItemDrawType::kOwlExit) {
616 gcdc.SetPen(*wxThePenList->FindOrCreatePen(*wxBLACK, 1)); 627 gcdc.SetPen(*wxThePenList->FindOrCreatePen(*wxBLACK, 1));
617 gcdc.SetBrush(*brush_color); 628 gcdc.SetBrush(*brush_color);