diff options
Diffstat (limited to 'src/game-server/skillmanager.h')
-rw-r--r-- | src/game-server/skillmanager.h | 39 |
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 |