summaryrefslogtreecommitdiff
path: root/src/beingmanager.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2009-10-31 15:42:28 +0200
committerBlue <bluesansdouze@gmail.com>2010-01-07 23:12:10 +0100
commitbe5460f2a294bb8e50b40f498f29a556b31bedd7 (patch)
tree5256167e0b8487fdb2c49090986cc883614fb9b1 /src/beingmanager.cpp
parent84da747711ed1713984ca514a8bb786219a85d9b (diff)
downloadmana-client-be5460f2a294bb8e50b40f498f29a556b31bedd7.tar.gz
mana-client-be5460f2a294bb8e50b40f498f29a556b31bedd7.tar.bz2
mana-client-be5460f2a294bb8e50b40f498f29a556b31bedd7.tar.xz
mana-client-be5460f2a294bb8e50b40f498f29a556b31bedd7.zip
Chat auto completing
Diffstat (limited to 'src/beingmanager.cpp')
-rw-r--r--src/beingmanager.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/beingmanager.cpp b/src/beingmanager.cpp
index 724ac899..74461d44 100644
--- a/src/beingmanager.cpp
+++ b/src/beingmanager.cpp
@@ -26,6 +26,7 @@
#include "npc.h"
#include "player.h"
+#include "utils/stringutils.h"
#include "utils/dtor.h"
#include <cassert>
@@ -298,3 +299,37 @@ bool BeingManager::hasBeing(Being *being) const
return false;
}
+
+std::string BeingManager::getAutoCompletePlayerName(std::string partName)
+{
+ Beings::iterator i = mBeings.begin();
+ std::transform(partName.begin(), partName.end(), partName.begin(), tolower);
+ std::string newName("");
+
+ while (i != mBeings.end())
+ {
+ Being *being = (*i);
+ if (being->getType() != Being::MONSTER && being->getName() != "")
+ {
+ std::string name = being->getName();
+ std::transform(name.begin(), name.end(), name.begin(), tolower);
+
+ std::string::size_type pos = name.find(partName, 0);
+ if (pos == 0)
+ {
+ if (newName != "")
+ {
+ std::transform(newName.begin(), newName.end(), newName.begin(), tolower);
+ newName = findSameSubstring(name, newName);
+ }
+ else
+ {
+ newName = being->getName();
+ }
+ }
+ }
+ ++i;
+ }
+
+ return newName;
+}