| 153 | } |
| 154 | |
| 155 | void Statistics::readStatistics() { |
| 156 | auto versioningDatabase = Root::singleton().versioningDatabase(); |
| 157 | try { |
| 158 | String filename = File::relativeTo(m_storageDirectory, "statistics"); |
| 159 | if (File::exists(filename)) { |
| 160 | Json storage = versioningDatabase->loadVersionedJson(VersionedJson::readFile(filename), "Statistics"); |
| 161 | |
| 162 | m_stats = StringMap<Stat>::from(storage.getObject("stats", {}).pairs().transformed([](auto const& entry) { |
| 163 | return make_pair(entry.first, Stat::fromJson(entry.second)); |
| 164 | })); |
| 165 | m_achievements = jsonToStringSet(storage.get("achievements", JsonArray{})); |
| 166 | |
| 167 | } |
| 168 | } catch (std::exception const& e) { |
| 169 | Logger::warn("Error loading local player statistics file, resetting: {}", outputException(e, false)); |
| 170 | } |
| 171 | } |
| 172 | |
| 173 | void Statistics::mergeServiceStatistics() { |
| 174 | if (!m_service || !m_service->initialized() || m_service->error()) return; |
nothing calls this directly
no test coverage detected