summaryrefslogtreecommitdiff
path: root/src/game-server/monstermanager.h
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2011-03-22 22:29:39 +0100
committerThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2011-03-24 17:04:29 +0100
commit94d97450bc3a52cd90baa696320bd08d91ac301f (patch)
treefc2f5db6583040772aac1d39a14928bdfe7aa4eb /src/game-server/monstermanager.h
parent7967b82c19bfa5bd2249abcb807a7a55af031abe (diff)
downloadmanaserv-94d97450bc3a52cd90baa696320bd08d91ac301f.tar.gz
manaserv-94d97450bc3a52cd90baa696320bd08d91ac301f.tar.bz2
manaserv-94d97450bc3a52cd90baa696320bd08d91ac301f.tar.xz
manaserv-94d97450bc3a52cd90baa696320bd08d91ac301f.zip
Use a map to quickly find items and monsters by their name
Introduced a template class NameMap, which provides a nice API for mapping any custom types by their name. This change also makes any duplicate item or monster definitions be complete ignored, rather than being merged into the first definition. Reviewed-by: Philipp Sehmisch Reviewed-by: Yohann Ferreira
Diffstat (limited to 'src/game-server/monstermanager.h')
-rw-r--r--src/game-server/monstermanager.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/game-server/monstermanager.h b/src/game-server/monstermanager.h
index acdb9cad..f04a5733 100644
--- a/src/game-server/monstermanager.h
+++ b/src/game-server/monstermanager.h
@@ -23,7 +23,10 @@
#include <string>
#include <map>
+#include "utils/string.h"
+
class MonsterClass;
+
class MonsterManager
{
public:
@@ -47,7 +50,7 @@ class MonsterManager
/**
* Gets the MonsterClass having the given ID.
*/
- MonsterClass *getMonster(int id);
+ MonsterClass *getMonster(int id) const;
/**
* Gets the first monster type with a specific name.
@@ -55,12 +58,13 @@ class MonsterManager
* Returns null when there is no monster with such
* a name.
*/
- MonsterClass *getMonsterByName(std::string name) const;
+ MonsterClass *getMonsterByName(const std::string &name) const;
private:
typedef std::map< int, MonsterClass * > MonsterClasses;
MonsterClasses mMonsterClasses; /**< Monster reference */
+ utils::NameMap<MonsterClass*> mMonsterClassesByName;
std::string mMonsterReferenceFile;
};