diff options
Diffstat (limited to 'ap_state.cpp')
| -rw-r--r-- | ap_state.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
| diff --git a/ap_state.cpp b/ap_state.cpp index 9df487f..910feb7 100644 --- a/ap_state.cpp +++ b/ap_state.cpp | |||
| @@ -17,11 +17,6 @@ constexpr int AP_REVISION = 0; | |||
| 17 | 17 | ||
| 18 | constexpr int ITEM_HANDLING = 7; // <- all | 18 | constexpr int ITEM_HANDLING = 7; // <- all |
| 19 | 19 | ||
| 20 | NLOHMANN_JSON_SERIALIZE_ENUM(DoorShuffleMode, | ||
| 21 | {{DoorShuffleMode::kNone, "none"}, | ||
| 22 | {DoorShuffleMode::kSimple, "simple"}, | ||
| 23 | {DoorShuffleMode::kComplex, "complex"}}); | ||
| 24 | |||
| 25 | APState::APState() { | 20 | APState::APState() { |
| 26 | std::thread([this]() { | 21 | std::thread([this]() { |
| 27 | for (;;) { | 22 | for (;;) { |
| @@ -178,6 +173,17 @@ void APState::Connect(std::string server, std::string player, | |||
| 178 | } | 173 | } |
| 179 | } | 174 | } |
| 180 | 175 | ||
| 176 | for (const Door& door : GetGameData().GetDoors()) { | ||
| 177 | if (!door.skip_item) { | ||
| 178 | ap_id_by_item_name_[door.item_name] = GetItemId(door.item_name); | ||
| 179 | |||
| 180 | if (!door.group_name.empty() && | ||
| 181 | !ap_id_by_item_name_.count(door.group_name)) { | ||
| 182 | ap_id_by_item_name_[door.group_name] = GetItemId(door.group_name); | ||
| 183 | } | ||
| 184 | } | ||
| 185 | } | ||
| 186 | |||
| 181 | ap_id_by_color_[LingoColor::kBlack] = GetItemId("Black"); | 187 | ap_id_by_color_[LingoColor::kBlack] = GetItemId("Black"); |
| 182 | ap_id_by_color_[LingoColor::kRed] = GetItemId("Red"); | 188 | ap_id_by_color_[LingoColor::kRed] = GetItemId("Red"); |
| 183 | ap_id_by_color_[LingoColor::kBlue] = GetItemId("Blue"); | 189 | ap_id_by_color_[LingoColor::kBlue] = GetItemId("Blue"); |
| @@ -212,6 +218,14 @@ bool APState::HasColorItem(LingoColor color) const { | |||
| 212 | } | 218 | } |
| 213 | } | 219 | } |
| 214 | 220 | ||
| 221 | bool APState::HasItem(const std::string& item) const { | ||
| 222 | if (ap_id_by_item_name_.count(item)) { | ||
| 223 | return inventory_.count(ap_id_by_item_name_.at(item)); | ||
| 224 | } else { | ||
| 225 | return false; | ||
| 226 | } | ||
| 227 | } | ||
| 228 | |||
| 215 | void APState::RefreshTracker() { | 229 | void APState::RefreshTracker() { |
| 216 | GetTrackerState().CalculateState(); | 230 | GetTrackerState().CalculateState(); |
| 217 | tracker_frame_->UpdateIndicators(); | 231 | tracker_frame_->UpdateIndicators(); |
