| 209 | } |
| 210 | |
| 211 | void Player::diskLoad(Json const& diskStore) { |
| 212 | setUniqueId(diskStore.getString("uuid")); |
| 213 | m_description = diskStore.getString("description"); |
| 214 | setModeType(PlayerModeNames.getLeft(diskStore.getString("modeType"))); |
| 215 | m_shipUpgrades = ShipUpgrades(diskStore.get("shipUpgrades")); |
| 216 | m_blueprints = make_shared<PlayerBlueprints>(diskStore.get("blueprints")); |
| 217 | m_universeMap = make_shared<PlayerUniverseMap>(diskStore.get("universeMap")); |
| 218 | if (m_clientContext) |
| 219 | m_universeMap->setServerUuid(m_clientContext->serverUuid()); |
| 220 | |
| 221 | m_codexes = make_shared<PlayerCodexes>(diskStore.get("codexes")); |
| 222 | m_techs = make_shared<PlayerTech>(diskStore.get("techs")); |
| 223 | m_identity = HumanoidIdentity(diskStore.get("identity")); |
| 224 | m_identityUpdated = true; |
| 225 | |
| 226 | setTeam(EntityDamageTeam(diskStore.get("team"))); |
| 227 | |
| 228 | m_state = State::Idle; |
| 229 | |
| 230 | m_inventory->load(diskStore.get("inventory")); |
| 231 | |
| 232 | m_movementController->loadState(diskStore.get("movementController")); |
| 233 | m_techController->diskLoad(diskStore.get("techController")); |
| 234 | m_statusController->diskLoad(diskStore.get("statusController")); |
| 235 | |
| 236 | m_log = make_shared<PlayerLog>(diskStore.get("log")); |
| 237 | |
| 238 | auto speciesDef = Root::singleton().speciesDatabase()->species(m_identity.species); |
| 239 | |
| 240 | m_questManager->diskLoad(diskStore.get("quests", JsonObject{})); |
| 241 | m_companions->diskLoad(diskStore.get("companions", JsonObject{})); |
| 242 | m_deployment->diskLoad(diskStore.get("deployment", JsonObject{})); |
| 243 | m_humanoid = make_shared<Humanoid>(speciesDef->humanoidConfig()); |
| 244 | m_humanoid->setIdentity(m_identity); |
| 245 | m_movementController->resetBaseParameters(ActorMovementParameters(jsonMerge(m_humanoid->defaultMovementParameters(), m_config->movementParameters))); |
| 246 | m_effectsAnimator->setGlobalTag("effectDirectives", speciesDef->effectDirectives()); |
| 247 | |
| 248 | m_genericProperties = diskStore.getObject("genericProperties"); |
| 249 | |
| 250 | m_armor->reset(); |
| 251 | refreshArmor(); |
| 252 | setNetArmorSecrets(true); |
| 253 | |
| 254 | m_codexes->learnInitialCodexes(species()); |
| 255 | |
| 256 | m_aiState = AiState(diskStore.get("aiState", JsonObject{})); |
| 257 | |
| 258 | for (auto& script : m_genericScriptContexts) |
| 259 | script.second->setScriptStorage({}); |
| 260 | |
| 261 | for (auto& p : diskStore.get("genericScriptStorage", JsonObject{}).toObject()) { |
| 262 | if (auto script = m_genericScriptContexts.maybe(p.first).value({})) { |
| 263 | script->setScriptStorage(p.second.toObject()); |
| 264 | } |
| 265 | } |
| 266 | |
| 267 | // Make sure to merge the stored player blueprints with what a new player |
| 268 | // would get as default. |
no test coverage detected