MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / diskStore

Method diskStore

source/game/StarStatusController.cpp:73–106  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

71}
72
73Json StatusController::diskStore() const {
74 JsonObject resourceValues;
75 JsonObject resourcesLocked;
76 for (auto const& resourceName : resourceNames()) {
77 resourceValues[resourceName] = resource(resourceName);
78 resourcesLocked[resourceName] = resourceLocked(resourceName);
79 }
80
81 JsonObject persistentEffectCategories;
82 for (auto const& pair : m_persistentEffects) {
83 List<PersistentStatusEffect> persistentEffects;
84 persistentEffects.appendAll(pair.second.statModifiers.transformed(construct<PersistentStatusEffect>()));
85 persistentEffects.appendAll(pair.second.uniqueEffects.values().transformed(construct<PersistentStatusEffect>()));
86 persistentEffectCategories[pair.first] = persistentEffects.transformed(jsonFromPersistentStatusEffect);
87 }
88
89 JsonArray ephemeralEffects;
90 for (auto const& pair : m_uniqueEffects) {
91 // Store ephemeral effects in the disk store based on remaining duration.
92 // TODO: Need to store maximum duration as well in the store, otherwise the
93 // effect will always appear "full" on reload (but just last less time)
94 auto metadata = m_uniqueEffectMetadata.getNetElement(pair.second.metadataId);
95 if (metadata->duration)
96 ephemeralEffects.append(jsonFromEphemeralStatusEffect(EphemeralStatusEffect{pair.first, *metadata->duration}));
97 }
98
99 return JsonObject{
100 {"statusProperties", m_statusProperties.baseMap()},
101 {"persistentEffectCategories", std::move(persistentEffectCategories)},
102 {"ephemeralEffects", std::move(ephemeralEffects)},
103 {"resourceValues", std::move(resourceValues)},
104 {"resourcesLocked", std::move(resourcesLocked)},
105 };
106}
107
108void StatusController::diskLoad(Json const& store) {
109 clearAllPersistentEffects();

Callers

nothing calls this directly

Calls 6

appendAllMethod · 0.80
getNetElementMethod · 0.80
transformedMethod · 0.45
valuesMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected