diff options
-rw-r--r-- | source/game/StarPlayer.cpp | 16 | ||||
-rw-r--r-- | source/game/StarPlayer.hpp | 3 | ||||
-rw-r--r-- | source/game/StarPlayerStorage.cpp | 6 | ||||
-rw-r--r-- | source/game/StarPlayerStorage.hpp | 2 | ||||
-rw-r--r-- | source/game/StarUniverseClient.cpp | 2 |
5 files changed, 22 insertions, 7 deletions
diff --git a/source/game/StarPlayer.cpp b/source/game/StarPlayer.cpp index 7036a7b..3e6d502 100644 --- a/source/game/StarPlayer.cpp +++ b/source/game/StarPlayer.cpp @@ -243,7 +243,7 @@ void Player::diskLoad(Json const& diskStore) { m_genericProperties = diskStore.getObject("genericProperties"); - refreshEquipment(); + refreshArmor(); m_codexes->learnInitialCodexes(species()); @@ -1228,7 +1228,14 @@ void Player::clearSwap() { endTrigger(); } -void Player::refreshEquipment() { +void Player::refreshItems() { + if (isSlave()) + return; + + m_tools->setItems(m_inventory->primaryHeldItem(), m_inventory->secondaryHeldItem()); +} + +void Player::refreshArmor() { if (isSlave()) return; @@ -1240,8 +1247,11 @@ void Player::refreshEquipment() { m_armor->setLegsCosmeticItem(m_inventory->legsCosmetic()); m_armor->setBackItem(m_inventory->backArmor()); m_armor->setBackCosmeticItem(m_inventory->backCosmetic()); +} - m_tools->setItems(m_inventory->primaryHeldItem(), m_inventory->secondaryHeldItem()); +void Player::refreshEquipment() { + refreshArmor(); + refreshItems(); } PlayerBlueprintsPtr Player::blueprints() const { diff --git a/source/game/StarPlayer.hpp b/source/game/StarPlayer.hpp index 99962cd..e888015 100644 --- a/source/game/StarPlayer.hpp +++ b/source/game/StarPlayer.hpp @@ -217,6 +217,9 @@ public: // Clear the item swap slot. void clearSwap(); + void refreshArmor(); + void refreshItems(); + // Refresh worn equipment from the inventory void refreshEquipment(); diff --git a/source/game/StarPlayerStorage.cpp b/source/game/StarPlayerStorage.cpp index c6ae2a3..f128244 100644 --- a/source/game/StarPlayerStorage.cpp +++ b/source/game/StarPlayerStorage.cpp @@ -99,7 +99,7 @@ Maybe<Uuid> PlayerStorage::playerUuidAt(size_t index) { return {}; } -Maybe<Uuid> PlayerStorage::playerUuidByName(String const& name) { +Maybe<Uuid> PlayerStorage::playerUuidByName(String const& name, Maybe<Uuid> except) { String cleanMatch = Text::stripEscapeCodes(name).toLower(); Maybe<Uuid> uuid; @@ -107,7 +107,9 @@ Maybe<Uuid> PlayerStorage::playerUuidByName(String const& name) { size_t longest = SIZE_MAX; for (auto& cache : m_savedPlayersCache) { - if (auto name = cache.second.optQueryString("identity.name")) { + if (except && *except == cache.first) + continue; + else if (auto name = cache.second.optQueryString("identity.name")) { auto cleanName = Text::stripEscapeCodes(*name).toLower(); auto len = cleanName.size(); if (len < longest && cleanName.utf8().rfind(cleanMatch.utf8()) == 0) { diff --git a/source/game/StarPlayerStorage.hpp b/source/game/StarPlayerStorage.hpp index 4b9edc7..9f7fd4a 100644 --- a/source/game/StarPlayerStorage.hpp +++ b/source/game/StarPlayerStorage.hpp @@ -19,7 +19,7 @@ public: // Returns nothing if index is out of bounds. Maybe<Uuid> playerUuidAt(size_t index); // Returns nothing if name doesn't match a player. - Maybe<Uuid> playerUuidByName(String const& name); + Maybe<Uuid> playerUuidByName(String const& name, Maybe<Uuid> except = {}); // Also returns the diskStore Json if needed. Json savePlayer(PlayerPtr const& player); diff --git a/source/game/StarUniverseClient.cpp b/source/game/StarUniverseClient.cpp index 90d5f07..2ff4631 100644 --- a/source/game/StarUniverseClient.cpp +++ b/source/game/StarUniverseClient.cpp @@ -537,7 +537,7 @@ bool UniverseClient::switchPlayer(size_t index) { } bool UniverseClient::switchPlayer(String const& name) { - if (auto uuid = m_playerStorage->playerUuidByName(name)) + if (auto uuid = m_playerStorage->playerUuidByName(name, mainPlayer()->uuid())) return switchPlayer(*uuid); else return false; |