diff options
Diffstat (limited to 'tools/datapacker/container.cpp')
| -rw-r--r-- | tools/datapacker/container.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
| diff --git a/tools/datapacker/container.cpp b/tools/datapacker/container.cpp index 29fa1a5..bb58ec5 100644 --- a/tools/datapacker/container.cpp +++ b/tools/datapacker/container.cpp | |||
| @@ -246,6 +246,46 @@ uint64_t Container::FindOrAddMastery(std::optional<std::string> map_name, | |||
| 246 | } | 246 | } |
| 247 | } | 247 | } |
| 248 | 248 | ||
| 249 | uint64_t Container::FindOrAddKeyholder( | ||
| 250 | std::optional<std::string> map_name, std::optional<std::string> room_name, | ||
| 251 | std::string keyholder_name, std::optional<std::string> map_fallback, | ||
| 252 | std::optional<std::string> room_fallback) { | ||
| 253 | if (!map_name) { | ||
| 254 | if (!map_fallback) { | ||
| 255 | std::cout << "No map name provided for " << keyholder_name << std::endl; | ||
| 256 | map_name = "global"; | ||
| 257 | } else { | ||
| 258 | map_name = map_fallback; | ||
| 259 | } | ||
| 260 | } | ||
| 261 | |||
| 262 | if (!room_name) { | ||
| 263 | if (!room_fallback) { | ||
| 264 | std::cout << "No room name provided for " << keyholder_name << std::endl; | ||
| 265 | room_name = "global"; | ||
| 266 | } else { | ||
| 267 | room_name = room_fallback; | ||
| 268 | } | ||
| 269 | } | ||
| 270 | |||
| 271 | auto& room_container = | ||
| 272 | keyholder_id_by_map_room_keyholder_names_[*map_name][*room_name]; | ||
| 273 | auto it = room_container.find(keyholder_name); | ||
| 274 | if (it == room_container.end()) { | ||
| 275 | uint64_t new_id = all_objects_.keyholders_size(); | ||
| 276 | Keyholder* keyholder = all_objects_.add_keyholders(); | ||
| 277 | keyholder->set_id(new_id); | ||
| 278 | keyholder->set_room_id(FindOrAddRoom(map_name, *room_name, std::nullopt)); | ||
| 279 | keyholder->set_name(keyholder_name); | ||
| 280 | |||
| 281 | room_container[keyholder_name] = new_id; | ||
| 282 | |||
| 283 | return new_id; | ||
| 284 | } else { | ||
| 285 | return it->second; | ||
| 286 | } | ||
| 287 | } | ||
| 288 | |||
| 249 | uint64_t Container::FindOrAddDoor(std::optional<std::string> map_name, | 289 | uint64_t Container::FindOrAddDoor(std::optional<std::string> map_name, |
| 250 | std::string door_name, | 290 | std::string door_name, |
| 251 | std::optional<std::string> map_fallback) { | 291 | std::optional<std::string> map_fallback) { |
