diff options
Diffstat (limited to 'src/player.cpp')
-rw-r--r-- | src/player.cpp | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/player.cpp b/src/player.cpp index 14a9c97f..abc01152 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -44,10 +44,12 @@ Player::Player(int id, int job, Map *map): mIsGM(false), mInParty(false) { + config.addListener("visiblenames", this); } Player::~Player() { + config.removeListener("visiblenames", this); delete mName; } @@ -135,18 +137,6 @@ void Player::logic() break; } - if (getType() == Being::PLAYER && player_node != this) - { - if (!config.getValue("visiblenames", 1) && mName) - { - delete mName; - mName = NULL; - } - else if (config.getValue("visiblenames", 1) && !mName && !(getName().empty())) - { - setName(getName()); - } - } Being::logic(); } #endif @@ -296,3 +286,20 @@ void Player::setInParty(bool value) { mInParty = value; } + +void Player::optionChanged(const std::string &value) +{ + if (value == "visiblenames" && getType() == Being::PLAYER && player_node != this) + { + bool value = config.getValue("visiblenames", 1); + if (!value && mName) + { + delete mName; + mName = NULL; + } + else if (value && !mName && !(getName().empty())) + { + setName(getName()); + } + } +} |