summaryrefslogtreecommitdiff
path: root/src/account-server/account.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/account-server/account.cpp')
-rw-r--r--src/account-server/account.cpp22
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);