diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game-server/main-game.cpp | 4 | ||||
-rw-r--r-- | src/game-server/skillmanager.cpp | 5 | ||||
-rw-r--r-- | src/game-server/skillmanager.h | 22 |
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; +}; |