Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarPlayerTech.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-05-29 11:32:43 +1000
committerGitHub <noreply@github.com>2024-05-29 11:32:43 +1000
commitdca7f59dbcdffd31226b9dad4f81e93be53a0605 (patch)
treeedd875cb895400c66e79911207a087730e2eb990 /source/game/StarPlayerTech.cpp
parent3cdc8316d63259484293de462a3275e8d4fde05f (diff)
parent465f07a9b774d147bc7a55d600bdfd1cd9a7c4d4 (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.cpp11
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 {