diff options
Diffstat (limited to 'src/actorspritemanager.cpp')
-rw-r--r-- | src/actorspritemanager.cpp | 64 |
1 files changed, 48 insertions, 16 deletions
diff --git a/src/actorspritemanager.cpp b/src/actorspritemanager.cpp index 88618ccd..5d038a18 100644 --- a/src/actorspritemanager.cpp +++ b/src/actorspritemanager.cpp @@ -52,8 +52,50 @@ class FindBeingFunctor ActorSprite::Type type; } beingFinder; +class PlayerNamesLister : public AutoCompleteLister +{ + void getAutoCompleteList(std::vector<std::string>& names) const + { + names.clear(); + + const ActorSprites &mActors = actorSpriteManager->getAll(); + for_actors + { + if ((*it)->getType() == ActorSprite::FLOOR_ITEM) + continue; + + Being *being = static_cast<Being*>(*it); + if (being->getType() == Being::PLAYER && being->getName() != "") + names.push_back(being->getName()); + } + } +}; + +class PlayerNPCNamesLister : public AutoCompleteLister +{ + void getAutoCompleteList(std::vector<std::string>& names) const + { + names.clear(); + + const ActorSprites &mActors = actorSpriteManager->getAll(); + for_actors + { + if ((*it)->getType() == ActorSprite::FLOOR_ITEM) + continue; + + Being *being = static_cast<Being*>(*it); + if ((being->getType() == Being::PLAYER + || being->getType() == Being::NPC) + && being->getName() != "") + names.push_back(being->getName()); + } + } +}; + ActorSpriteManager::ActorSpriteManager() { + mPlayerNames = new PlayerNamesLister; + mPlayerNPCNames = new PlayerNPCNamesLister; } ActorSpriteManager::~ActorSpriteManager() @@ -278,24 +320,14 @@ bool ActorSpriteManager::hasActorSprite(ActorSprite *actor) const return false; } -void ActorSpriteManager::getPlayerNames(std::vector<std::string> &names, - bool npcNames) +AutoCompleteLister *ActorSpriteManager::getPlayerNameLister() { - names.clear(); - - for_actors - { - if ((*it)->getType() == ActorSprite::FLOOR_ITEM) - continue; + return mPlayerNames; +} - Being *being = static_cast<Being*>(*it); - if ((being->getType() == ActorSprite::PLAYER - || (being->getType() == ActorSprite::NPC && npcNames)) - && being->getName() != "") - { - names.push_back(being->getName()); - } - } +AutoCompleteLister *ActorSpriteManager::getPlayerNPCNameLister() +{ + return mPlayerNPCNames; } void ActorSpriteManager::updatePlayerNames() |