summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game-server/main-game.cpp4
-rw-r--r--src/game-server/skillmanager.cpp5
-rw-r--r--src/game-server/skillmanager.h22
3 files changed, 24 insertions, 7 deletions
diff --git a/src/game-server/main-game.cpp b/src/game-server/main-game.cpp
index 0b786555..35b809e1 100644
--- a/src/game-server/main-game.cpp
+++ b/src/game-server/main-game.cpp
@@ -88,6 +88,7 @@ utils::StringFilter *stringFilter; /**< Slang's Filter */
AttributeManager *attributeManager = new AttributeManager(DEFAULT_ATTRIBUTEDB_FILE);
ItemManager *itemManager = new ItemManager(DEFAULT_ITEMSDB_FILE, DEFAULT_EQUIPDB_FILE);
MonsterManager *monsterManager = new MonsterManager(DEFAULT_MONSTERSDB_FILE);
+SkillManager *skillManager = new SkillManager(DEFAULT_SKILLSDB_FILE);
/** Core game message handler */
GameHandler *gameHandler;
@@ -193,7 +194,7 @@ static void initializeServer()
exit(EXIT_MAP_FILE_NOT_FOUND);
}
attributeManager->initialize();
- SkillManager::initialize(DEFAULT_SKILLSDB_FILE);
+ skillManager->initialize();
itemManager->initialize();
monsterManager->initialize();
StatusManager::initialize(DEFAULT_STATUSDB_FILE);
@@ -249,6 +250,7 @@ static void deinitializeServer()
// Destroy Managers
delete stringFilter;
monsterManager->deinitialize();
+ delete skillManager; skillManager = 0;
itemManager->deinitialize();
MapManager::deinitialize();
StatusManager::deinitialize();
diff --git a/src/game-server/skillmanager.cpp b/src/game-server/skillmanager.cpp
index 75f5f53c..edd78c46 100644
--- a/src/game-server/skillmanager.cpp
+++ b/src/game-server/skillmanager.cpp
@@ -31,9 +31,8 @@ static SkillMap skillMap;
static std::string skillReferenceFile;
static std::string defaultSkillKey = std::string();
-void SkillManager::initialize(const std::string &file)
+void SkillManager::initialize()
{
- skillReferenceFile = file;
reload();
}
@@ -44,7 +43,7 @@ void SkillManager::reload()
skillMap["KNIFE"] = 101;
*/
- XML::Document doc(skillReferenceFile);
+ XML::Document doc(mSkillFile);
xmlNodePtr rootNode = doc.rootNode();
if (!rootNode || !xmlStrEqual(rootNode->name, BAD_CAST "skills"))
diff --git a/src/game-server/skillmanager.h b/src/game-server/skillmanager.h
index c6a73a5c..e0ea8276 100644
--- a/src/game-server/skillmanager.h
+++ b/src/game-server/skillmanager.h
@@ -24,12 +24,21 @@
#include <string>
-namespace SkillManager
+class SkillManager
{
+ public:
+ SkillManager(const std::string & skillFile):
+ mSkillFile(skillFile),
+ mDefaultSkillId(0)
+ {}
+
+ ~SkillManager()
+ {}
+
/**
* Loads skill reference file.
*/
- void initialize(const std::string &);
+ void initialize();
/**
* Reloads skill reference file.
@@ -41,7 +50,14 @@ namespace SkillManager
* (not case-sensitive to reduce wall-bashing)
*/
int getIdFromString(const std::string &name);
-}
+
+ private:
+ // The skill file (skills.xml)
+ std::string mSkillFile;
+
+ // The default skill id
+ unsigned int mDefaultSkillId;
+};