diff options
Diffstat (limited to 'src/ap_state.cpp')
-rw-r--r-- | src/ap_state.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/ap_state.cpp b/src/ap_state.cpp index fd042b4..1e5621d 100644 --- a/src/ap_state.cpp +++ b/src/ap_state.cpp | |||
@@ -39,6 +39,18 @@ constexpr int CONNECTION_BACKOFF_INTERVAL = 100; | |||
39 | 39 | ||
40 | namespace { | 40 | namespace { |
41 | 41 | ||
42 | const std::set<long> kNonProgressionItems = { | ||
43 | 444409, // :) | ||
44 | 444575, // The Feeling of Being Lost | ||
45 | 444576, // Wanderlust | ||
46 | 444577, // Empty White Hallways | ||
47 | 444410, // Slowness Trap | ||
48 | 444411, // Iceland Trap | ||
49 | 444412, // Atbash Trap | ||
50 | 444413, // Puzzle Skip | ||
51 | 444680, // Speed Boost | ||
52 | }; | ||
53 | |||
42 | struct APState { | 54 | struct APState { |
43 | // Initialized on main thread | 55 | // Initialized on main thread |
44 | bool initialized = false; | 56 | bool initialized = false; |
@@ -394,6 +406,7 @@ struct APState { | |||
394 | 406 | ||
395 | void OnItemsReceived(const std::list<APClient::NetworkItem>& items) { | 407 | void OnItemsReceived(const std::list<APClient::NetworkItem>& items) { |
396 | std::vector<ItemState> item_states; | 408 | std::vector<ItemState> item_states; |
409 | bool progression_items = false; | ||
397 | 410 | ||
398 | { | 411 | { |
399 | std::lock_guard state_guard(state_mutex); | 412 | std::lock_guard state_guard(state_mutex); |
@@ -405,6 +418,10 @@ struct APState { | |||
405 | TrackerLog(fmt::format("Item: {}", item.item)); | 418 | TrackerLog(fmt::format("Item: {}", item.item)); |
406 | 419 | ||
407 | index_by_item[item.item] = item.index; | 420 | index_by_item[item.item] = item.index; |
421 | |||
422 | if (!kNonProgressionItems.count(item.item)) { | ||
423 | progression_items = true; | ||
424 | } | ||
408 | } | 425 | } |
409 | 426 | ||
410 | for (const auto& [item_id, item_index] : index_by_item) { | 427 | for (const auto& [item_id, item_index] : index_by_item) { |
@@ -414,7 +431,8 @@ struct APState { | |||
414 | } | 431 | } |
415 | } | 432 | } |
416 | 433 | ||
417 | RefreshTracker(StateUpdate{.items = item_states}); | 434 | RefreshTracker(StateUpdate{.items = item_states, |
435 | .progression_items = progression_items}); | ||
418 | } | 436 | } |
419 | 437 | ||
420 | void OnRetrieved(const std::map<std::string, nlohmann::json>& data) { | 438 | void OnRetrieved(const std::map<std::string, nlohmann::json>& data) { |
@@ -639,7 +657,7 @@ struct APState { | |||
639 | void RefreshTracker(std::optional<StateUpdate> state_update) { | 657 | void RefreshTracker(std::optional<StateUpdate> state_update) { |
640 | TrackerLog("Refreshing display..."); | 658 | TrackerLog("Refreshing display..."); |
641 | 659 | ||
642 | if (!state_update || !state_update->items.empty() || | 660 | if (!state_update || state_update->progression_items || |
643 | !state_update->paintings.empty()) { | 661 | !state_update->paintings.empty()) { |
644 | std::string prev_msg; | 662 | std::string prev_msg; |
645 | { | 663 | { |