diff options
Diffstat (limited to 'src/account-server/account.cpp')
-rw-r--r-- | src/account-server/account.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/account-server/account.cpp b/src/account-server/account.cpp index 11773c47..5e90d091 100644 --- a/src/account-server/account.cpp +++ b/src/account-server/account.cpp @@ -24,10 +24,6 @@ Account::~Account() { - for (auto &character : mCharacters) - { - delete character.second; - } } bool Account::isSlotEmpty(unsigned slot) const @@ -35,17 +31,17 @@ bool Account::isSlotEmpty(unsigned slot) const return mCharacters.find(slot) == mCharacters.end(); } -void Account::setCharacters(const Characters &characters) +void Account::setCharacters(Characters characters) { - mCharacters = characters; + mCharacters = std::move(characters); } -void Account::addCharacter(CharacterData *character) +void Account::addCharacter(std::unique_ptr<CharacterData> character) { - auto slot = (unsigned) character->getCharacterSlot(); + auto slot = character->getCharacterSlot(); assert(isSlotEmpty(slot)); - mCharacters[slot] = character; + mCharacters[slot] = std::move(character); } void Account::delCharacter(unsigned slot) @@ -55,13 +51,17 @@ void Account::delCharacter(unsigned slot) { if ((*iter).second->getCharacterSlot() == slot) { - delete (*iter).second; - (*iter).second = 0; mCharacters.erase(iter); } } } +const CharacterData *Account::getCharacter(unsigned slot) const +{ + auto it = mCharacters.find(slot); + return it != mCharacters.end() ? it->second.get() : nullptr; +} + void Account::setID(int id) { assert(mID < 0); |