Веб-сайт самохостера 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.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/source/game/StarPlayerStorage.cpp b/source/game/StarPlayerStorage.cpp
index 7857f8d..bba080e 100644
--- a/source/game/StarPlayerStorage.cpp
+++ b/source/game/StarPlayerStorage.cpp
@@ -132,6 +132,27 @@ Maybe<Uuid> PlayerStorage::playerUuidByName(String const& name, Maybe<Uuid> exce
return uuid;
}
+List<Uuid> PlayerStorage::playerUuidListByName(String const& name, Maybe<Uuid> except) {
+ String cleanMatch = Text::stripEscapeCodes(name).toLower();
+ List<Uuid> list = {};
+
+ RecursiveMutexLocker locker(m_mutex);
+
+ for (auto& cache : m_savedPlayersCache) {
+ if (except && *except == cache.first)
+ continue;
+ else if (auto name = cache.second.optQueryString("identity.name")) {
+ auto cleanName = Text::stripEscapeCodes(*name).toLower();
+ if (cleanMatch == "" || cleanName.utf8().rfind(cleanMatch.utf8()) != NPos) {
+ list.append(cache.first);
+ }
+ }
+ }
+
+ return list;
+}
+
+
Json PlayerStorage::savePlayer(PlayerPtr const& player) {
auto entityFactory = Root::singleton().entityFactory();
auto versioningDatabase = Root::singleton().versioningDatabase();