about summary refs log tree commit diff stats
path: root/src/ap_state.cpp
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2024-04-21 14:34:30 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2024-04-21 14:34:30 -0400
commit85b4303b60bde56c16ca0c23f9ca2407e3f8b50c (patch)
tree2dbc69d71e44166b1ee6c1a0fbbb1d9739a25048 /src/ap_state.cpp
parentdc56f752bb33b4e779c5507dea03a6764d08fd0a (diff)
parentf90f0847f55490167d0395ad1b9408595b4f4667 (diff)
downloadlingo-ap-tracker-85b4303b60bde56c16ca0c23f9ca2407e3f8b50c.tar.gz
lingo-ap-tracker-85b4303b60bde56c16ca0c23f9ca2407e3f8b50c.tar.bz2
lingo-ap-tracker-85b4303b60bde56c16ca0c23f9ca2407e3f8b50c.zip
Merge branch 'future' into tinysphere
Diffstat (limited to 'src/ap_state.cpp')
-rw-r--r--src/ap_state.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/ap_state.cpp b/src/ap_state.cpp index 58670e6..aeed914 100644 --- a/src/ap_state.cpp +++ b/src/ap_state.cpp
@@ -64,8 +64,14 @@ struct APState {
64 LocationChecks location_checks = kNORMAL_LOCATIONS; 64 LocationChecks location_checks = kNORMAL_LOCATIONS;
65 VictoryCondition victory_condition = kTHE_END; 65 VictoryCondition victory_condition = kTHE_END;
66 bool early_color_hallways = false; 66 bool early_color_hallways = false;
67 bool pilgrimage_enabled = false;
68 bool pilgrimage_allows_roof_access = false;
69 bool pilgrimage_allows_paintings = false;
70 SunwarpAccess sunwarp_access = kSUNWARP_ACCESS_NORMAL;
71 bool sunwarp_shuffle = false;
67 72
68 std::map<std::string, std::string> painting_mapping; 73 std::map<std::string, std::string> painting_mapping;
74 std::map<int, SunwarpMapping> sunwarp_mapping;
69 75
70 void Connect(std::string server, std::string player, std::string password) { 76 void Connect(std::string server, std::string player, std::string password) {
71 if (!initialized) { 77 if (!initialized) {
@@ -136,6 +142,12 @@ struct APState {
136 location_checks = kNORMAL_LOCATIONS; 142 location_checks = kNORMAL_LOCATIONS;
137 victory_condition = kTHE_END; 143 victory_condition = kTHE_END;
138 early_color_hallways = false; 144 early_color_hallways = false;
145 pilgrimage_enabled = false;
146 pilgrimage_allows_roof_access = false;
147 pilgrimage_allows_paintings = false;
148 sunwarp_access = kSUNWARP_ACCESS_NORMAL;
149 sunwarp_shuffle = false;
150 sunwarp_mapping.clear();
139 151
140 connected = false; 152 connected = false;
141 has_connection_result = false; 153 has_connection_result = false;
@@ -221,6 +233,16 @@ struct APState {
221 slot_data["victory_condition"].get<VictoryCondition>(); 233 slot_data["victory_condition"].get<VictoryCondition>();
222 early_color_hallways = slot_data.contains("early_color_hallways") && 234 early_color_hallways = slot_data.contains("early_color_hallways") &&
223 slot_data["early_color_hallways"].get<int>() == 1; 235 slot_data["early_color_hallways"].get<int>() == 1;
236 pilgrimage_enabled = slot_data.contains("enable_pilgrimage") &&
237 slot_data["enable_pilgrimage"].get<int>() == 1;
238 pilgrimage_allows_roof_access =
239 slot_data.contains("pilgrimage_allows_roof_access") &&
240 slot_data["pilgrimage_allows_roof_access"].get<int>() == 1;
241 pilgrimage_allows_paintings =
242 slot_data.contains("pilgrimage_allows_paintings") &&
243 slot_data["pilgrimage_allows_paintings"].get<int>() == 1;
244 sunwarp_access = slot_data["sunwarp_access"].get<SunwarpAccess>();
245 sunwarp_shuffle = slot_data["shuffle_sunwarps"].get<int>() == 1;
224 246
225 if (painting_shuffle && slot_data.contains("painting_entrance_to_exit")) { 247 if (painting_shuffle && slot_data.contains("painting_entrance_to_exit")) {
226 painting_mapping.clear(); 248 painting_mapping.clear();
@@ -231,6 +253,18 @@ struct APState {
231 } 253 }
232 } 254 }
233 255
256 if (sunwarp_shuffle && slot_data.contains("sunwarp_permutation")) {
257 std::vector<int> inverted_sunwarps;
258 for (const auto& item : slot_data["sunwarp_permutation"]) {
259 inverted_sunwarps.push_back(item);
260 }
261
262 for (int i = 0; i < 6; i++) {
263 sunwarp_mapping[inverted_sunwarps[i]] = SunwarpMapping{
264 .dots = i + 1, .exit_index = inverted_sunwarps[i + 6]};
265 }
266 }
267
234 connected = true; 268 connected = true;
235 has_connection_result = true; 269 has_connection_result = true;
236 270
@@ -461,6 +495,24 @@ bool AP_HasAchievement(const std::string& achievement_name) {
461 495
462bool AP_HasEarlyColorHallways() { return GetState().early_color_hallways; } 496bool AP_HasEarlyColorHallways() { return GetState().early_color_hallways; }
463 497
498bool AP_IsPilgrimageEnabled() { return GetState().pilgrimage_enabled; }
499
500bool AP_DoesPilgrimageAllowRoofAccess() {
501 return GetState().pilgrimage_allows_roof_access;
502}
503
504bool AP_DoesPilgrimageAllowPaintings() {
505 return GetState().pilgrimage_allows_paintings;
506}
507
508SunwarpAccess AP_GetSunwarpAccess() { return GetState().sunwarp_access; }
509
510bool AP_IsSunwarpShuffle() { return GetState().sunwarp_shuffle; }
511
512const std::map<int, SunwarpMapping>& AP_GetSunwarpMapping() {
513 return GetState().sunwarp_mapping;
514}
515
464bool AP_HasReachedGoal() { return GetState().HasReachedGoal(); } 516bool AP_HasReachedGoal() { return GetState().HasReachedGoal(); }
465 517
466std::optional<std::tuple<int, int>> AP_GetPlayerPosition() { 518std::optional<std::tuple<int, int>> AP_GetPlayerPosition() {