diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-05-29 11:32:43 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-29 11:32:43 +1000 |
commit | dca7f59dbcdffd31226b9dad4f81e93be53a0605 (patch) | |
tree | edd875cb895400c66e79911207a087730e2eb990 /source/game/StarPlayerTech.cpp | |
parent | 3cdc8316d63259484293de462a3275e8d4fde05f (diff) | |
parent | 465f07a9b774d147bc7a55d600bdfd1cd9a7c4d4 (diff) |
Merge pull request #68 from WasabiRaptor/missing-tech-check-on-player-load
Prevent crashes when player has techs that don't exist
Diffstat (limited to 'source/game/StarPlayerTech.cpp')
-rw-r--r-- | source/game/StarPlayerTech.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source/game/StarPlayerTech.cpp b/source/game/StarPlayerTech.cpp index 133f5f7..bf8053f 100644 --- a/source/game/StarPlayerTech.cpp +++ b/source/game/StarPlayerTech.cpp @@ -9,9 +9,14 @@ PlayerTech::PlayerTech() {} PlayerTech::PlayerTech(Json const& json) { m_availableTechs = jsonToStringSet(json.get("availableTechs")); m_enabledTechs = jsonToStringSet(json.get("enabledTechs")); - m_equippedTechs = jsonToMapKV<HashMap<TechType, String>>(json.get("equippedTechs"), [](Json t) { - return TechTypeNames.getLeft(t.toString()); - }, mem_fn(&Json::toString)); + auto techDatabase = Root::singleton().techDatabase(); + for (auto& p : json.getObject("equippedTechs")) { + String techName = p.second.toString(); + if (techDatabase->contains(techName)) + m_equippedTechs.set(TechTypeNames.getLeft(p.first), techName); + else + Logger::warn("Unequipping unknown tech '{}' from slot '{}'", techName, p.first); + } } Json PlayerTech::toJson() const { |