From 708896008ad8ea391d542ce37b9871318a84fb97 Mon Sep 17 00:00:00 2001 From: Erik Schilling Date: Sat, 13 Apr 2013 12:32:22 +0200 Subject: [Abilities] Renamed specials to abilities --- src/game-server/abilitymanager.h | 117 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 src/game-server/abilitymanager.h (limited to 'src/game-server/abilitymanager.h') diff --git a/src/game-server/abilitymanager.h b/src/game-server/abilitymanager.h new file mode 100644 index 0000000..969cd70 --- /dev/null +++ b/src/game-server/abilitymanager.h @@ -0,0 +1,117 @@ +/* + * The Mana Server + * Copyright (C) 2004-2010 The Mana World Development Team + * + * This file is part of The Mana Server. + * + * The Mana Server is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * The Mana Server is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with The Mana Server. If not, see . + */ + + +#ifndef ABILITYMANAGER_H +#define ABILITYMANAGER_H + +#include "utils/string.h" +#include "utils/xml.h" + +#include "scripting/script.h" + + + +class AbilityManager +{ +public: + enum TargetMode + { + TARGET_BEING, + TARGET_POINT + }; + + struct AbilityInfo + { + AbilityInfo() : + id(0), + rechargeable(false), + defaultRechargeSpeed(0), + neededPoints(0), + target(TARGET_BEING) + {} + + unsigned id; + std::string name; + std::string setName; + bool rechargeable; + int defaultRechargeSpeed; + unsigned neededPoints; + TargetMode target; + Script::Ref rechargedCallback; + Script::Ref useCallback; + }; + + AbilityManager() + { } + + ~AbilityManager() + { clear(); } + + /** + * Loads ability reference file. + */ + void initialize(); + + /** + * Reloads ability reference file. + */ + void reload(); + + /** + * Gets the abilities Id from a set and a ability string. + */ + unsigned getId(const std::string &set, const std::string &name) const; + + /** + * Gets the abilities Id from a string formatted in this way: + * "setname_abilityname" + */ + unsigned getId(const std::string &abilityName) const; + + const std::string getAbilityName(int id) const; + const std::string getSetName(int id) const; + + AbilityInfo *getAbilityInfo(int id); + + + void readAbilitySetNode(xmlNodePtr node, const std::string &filename); + + void checkStatus(); + +private: + /** + * Clears up the ability maps. + */ + void clear(); + + void readAbilityNode(xmlNodePtr skillNode, + const std::string &setName); + + typedef std::map AbilitiesInfo; + AbilitiesInfo mAbilitiesInfo; + typedef utils::NameMap NamedAbilitiesInfo; + NamedAbilitiesInfo mNamedAbilitiesInfo; + +}; + +extern AbilityManager *abilityManager; + +#endif // ABILITYMANAGER_H -- cgit