diff options
Diffstat (limited to 'src/statuseffect.cpp')
-rw-r--r-- | src/statuseffect.cpp | 82 |
1 files changed, 37 insertions, 45 deletions
diff --git a/src/statuseffect.cpp b/src/statuseffect.cpp index 659aeaf3..bdaaf566 100644 --- a/src/statuseffect.cpp +++ b/src/statuseffect.cpp @@ -1,7 +1,7 @@ /* * The Mana Client * Copyright (C) 2008-2009 The Mana World Development Team - * Copyright (C) 2009-2012 The Mana Developers + * Copyright (C) 2009-2013 The Mana Developers * * This file is part of The Mana Client. * @@ -25,8 +25,6 @@ #include "log.h" #include "sound.h" -#include "utils/xml.h" - #include "configuration.h" #include <map> @@ -114,58 +112,52 @@ StatusEffect *StatusEffect::getStunEffect(int index, bool enabling) return stunEffects[enabling][index]; } -void StatusEffect::load() +void StatusEffect::init() { if (mLoaded) unload(); +} - XML::Document doc(STATUS_EFFECTS_FILE); - xmlNodePtr rootNode = doc.rootNode(); - - if (!rootNode || !xmlStrEqual(rootNode->name, BAD_CAST "status-effects")) +void StatusEffect::readStatusEffectNode(xmlNodePtr node, const std::string &filename) +{ + status_effect_map *the_map = NULL; + int index = atoi(XML::getProperty(node, "id", "-1").c_str()); + if (xmlStrEqual(node->name, BAD_CAST "status-effect")) { - logger->log("Error loading status effects file: " STATUS_EFFECTS_FILE); - return; + the_map = &statusEffects; + int block_index = atoi(XML::getProperty(node, "block-id", "-1").c_str()); + + if (index >= 0 && block_index >= 0) + blockEffectIndexMap[block_index] = index; } + else if (xmlStrEqual(node->name, BAD_CAST "stun-effect")) + the_map = &stunEffects; - for_each_xml_child_node(node, rootNode) + if (the_map) { - status_effect_map *the_map = NULL; - - int index = atoi(XML::getProperty(node, "id", "-1").c_str()); - - if (xmlStrEqual(node->name, BAD_CAST "status-effect")) - { - the_map = &statusEffects; - int block_index = atoi(XML::getProperty(node, "block-id", "-1").c_str()); - - if (index >= 0 && block_index >= 0) - blockEffectIndexMap[block_index] = index; + StatusEffect *startEffect = new StatusEffect; + StatusEffect *endEffect = new StatusEffect; + + startEffect->mMessage = XML::getProperty(node, "start-message", ""); + startEffect->mSFXEffect = XML::getProperty(node, "start-audio", ""); + startEffect->mParticleEffect = XML::getProperty(node, "start-particle", ""); + startEffect->mIcon = XML::getProperty(node, "icon", ""); + startEffect->mAction = XML::getProperty(node, "action", ""); + startEffect->mPersistentParticleEffect = (XML::getProperty(node, "persistent-particle-effect", "no")) != "no"; + + endEffect->mMessage = XML::getProperty(node, "end-message", ""); + endEffect->mSFXEffect = XML::getProperty(node, "end-audio", ""); + endEffect->mParticleEffect = XML::getProperty(node, "end-particle", ""); + + (*the_map)[1][index] = startEffect; + (*the_map)[0][index] = endEffect; + } - } - else if (xmlStrEqual(node->name, BAD_CAST "stun-effect")) - the_map = &stunEffects; +} - if (the_map) - { - StatusEffect *startEffect = new StatusEffect; - StatusEffect *endEffect = new StatusEffect; - - startEffect->mMessage = XML::getProperty(node, "start-message", ""); - startEffect->mSFXEffect = XML::getProperty(node, "start-audio", ""); - startEffect->mParticleEffect = XML::getProperty(node, "start-particle", ""); - startEffect->mIcon = XML::getProperty(node, "icon", ""); - startEffect->mAction = XML::getProperty(node, "action", ""); - startEffect->mPersistentParticleEffect = (XML::getProperty(node, "persistent-particle-effect", "no")) != "no"; - - endEffect->mMessage = XML::getProperty(node, "end-message", ""); - endEffect->mSFXEffect = XML::getProperty(node, "end-audio", ""); - endEffect->mParticleEffect = XML::getProperty(node, "end-particle", ""); - - (*the_map)[1][index] = startEffect; - (*the_map)[0][index] = endEffect; - } - } +void StatusEffect::checkStatus() +{ + mLoaded = true; } void unloadMap(std::map<int, StatusEffect *> map) |