summaryrefslogtreecommitdiff
path: root/src/game-server/skillmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/game-server/skillmanager.h')
-rw-r--r--src/game-server/skillmanager.h39
1 files changed, 32 insertions, 7 deletions
diff --git a/src/game-server/skillmanager.h b/src/game-server/skillmanager.h
index e0ea8276..1912e2fc 100644
--- a/src/game-server/skillmanager.h
+++ b/src/game-server/skillmanager.h
@@ -22,7 +22,8 @@
#ifndef SKILLMANAGER_H
#define SKILLMANAGER_H
-#include <string>
+#include "utils/string.h"
+#include "utils/xml.h"
class SkillManager
{
@@ -33,7 +34,7 @@ class SkillManager
{}
~SkillManager()
- {}
+ { clear(); }
/**
* Loads skill reference file.
@@ -46,19 +47,43 @@ class SkillManager
void reload();
/**
- * Gets the skill ID of a skill string
- * (not case-sensitive to reduce wall-bashing)
+ * Gets the skill Id from a set and a skill string.
*/
- int getIdFromString(const std::string &name);
+ unsigned int getId(const std::string& set, const std::string &name) const;
+ const std::string getSkillName(unsigned int id) const;
+ const std::string getSetName(unsigned int id) const;
private:
+ struct SkillInfo {
+ SkillInfo():
+ id(0)
+ {}
+
+ unsigned int id;
+ std::string setName;
+ std::string skillName;
+ };
+
+ /*
+ * Clears up the skill maps.
+ */
+ void clear();
+
+ void readSkillNode(xmlNodePtr skillNode, const std::string& setName);
+
+ void printDebugSkillTable();
+
// The skill file (skills.xml)
std::string mSkillFile;
+ // The skill map
+ typedef std::map<unsigned int, SkillInfo*> SkillsInfo;
+ SkillsInfo mSkillsInfo;
+ // A map used to get skills per name.
+ utils::NameMap<SkillInfo*> mNamedSkillsInfo;
+
// The default skill id
unsigned int mDefaultSkillId;
};
-
-
#endif // SKILLMANAGER_H