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

summaryrefslogtreecommitdiff
path: root/source/game/StarPlayerStorage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/StarPlayerStorage.cpp')
-rw-r--r--source/game/StarPlayerStorage.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/source/game/StarPlayerStorage.cpp b/source/game/StarPlayerStorage.cpp
index bba080e..7687e97 100644
--- a/source/game/StarPlayerStorage.cpp
+++ b/source/game/StarPlayerStorage.cpp
@@ -41,9 +41,12 @@ PlayerStorage::PlayerStorage(String const& storageDir) {
try {
auto json = VersionedJson::readFile(filename);
Uuid uuid(json.content.getString("uuid"));
- auto& playerCacheData = m_savedPlayersCache[uuid];
- playerCacheData = entityFactory->loadVersionedJson(json, EntityType::Player);
- m_playerFileNames.insert(uuid, file.first.rsplit('.', 1).at(0));
+ if (m_playerFileNames.insert(uuid, file.first.rsplit('.', 1).at(0))) {
+ auto& playerCacheData = m_savedPlayersCache[uuid];
+ playerCacheData = entityFactory->loadVersionedJson(json, EntityType::Player);
+ } else {
+ Logger::warn("Duplicate player? Skipping player file {} because it has the same UUID as {}.player ({})", file.first, m_playerFileNames.getRight(uuid), uuid.hex());
+ }
} catch (std::exception const& e) {
Logger::error("Error loading player file, ignoring! {} : {}", filename, outputException(e, false));
}
@@ -168,7 +171,9 @@ Json PlayerStorage::savePlayer(PlayerPtr const& player) {
if (playerCacheData != newPlayerData) {
playerCacheData = newPlayerData;
VersionedJson versionedJson = entityFactory->storeVersionedJson(EntityType::Player, playerCacheData);
- VersionedJson::writeFile(versionedJson, File::relativeTo(m_storageDirectory, strf("{}.player", uuidFileName(uuid))));
+ auto fileName = strf("{}.player", uuidFileName(uuid));
+ VersionedJson::writeFile(versionedJson, File::relativeTo(m_storageDirectory, fileName));
+ Logger::info("Saved player {} to {}", Text::stripEscapeCodes(player->name()), fileName);
}
return newPlayerData;
}