summaryrefslogtreecommitdiff
path: root/src/game-server/skillmanager.h
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-08-26 01:07:04 +0200
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-08-26 01:07:04 +0200
commit0f520050cf42cd20a2845e8900249f3e965db4fd (patch)
tree8de89137671ace1826552345ec590379dd40bde7 /src/game-server/skillmanager.h
parent37dc13f9a2375c7d6ecccf25f63c607b5bb15928 (diff)
downloadmanaserv-0f520050cf42cd20a2845e8900249f3e965db4fd.tar.gz
manaserv-0f520050cf42cd20a2845e8900249f3e965db4fd.tar.bz2
manaserv-0f520050cf42cd20a2845e8900249f3e965db4fd.tar.xz
manaserv-0f520050cf42cd20a2845e8900249f3e965db4fd.zip
Rewrote the skill manager the same way as the item manager.
This will permit better handling of both skills names and id. This is needed to start reworking on the auto-attack system.
Diffstat (limited to 'src/game-server/skillmanager.h')
-rw-r--r--src/game-server/skillmanager.h55
1 files changed, 48 insertions, 7 deletions
diff --git a/src/game-server/skillmanager.h b/src/game-server/skillmanager.h
index c6a73a5c..1912e2fc 100644
--- a/src/game-server/skillmanager.h
+++ b/src/game-server/skillmanager.h
@@ -22,14 +22,24 @@
#ifndef SKILLMANAGER_H
#define SKILLMANAGER_H
-#include <string>
+#include "utils/string.h"
+#include "utils/xml.h"
-namespace SkillManager
+class SkillManager
{
+ public:
+ SkillManager(const std::string & skillFile):
+ mSkillFile(skillFile),
+ mDefaultSkillId(0)
+ {}
+
+ ~SkillManager()
+ { clear(); }
+
/**
* Loads skill reference file.
*/
- void initialize(const std::string &);
+ void initialize();
/**
* Reloads skill reference file.
@@ -37,12 +47,43 @@ namespace 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