///////////////////////////////////////////////////////////////////////////// // Name: pokemod/Ability.h // Purpose: Define an ability that species can possess to add extra // dynamics to the battle system // Author: Ben Boeckel // Modified by: Ben Boeckel // Created: Wed Feb 28 21:41:10 2007 // Copyright: ©2007-2008-2008 Ben Boeckel and Nerdy Productions // Licence: // This program 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 3 of the License, or // (at your option) any later version. // // This program 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 this program. If not, see . ///////////////////////////////////////////////////////////////////////////// #ifndef __POKEMOD_ABILITY__ #define __POKEMOD_ABILITY__ #include #include #include "../general/Exception.h" #include "Object.h" #include "AbilityEffect.h" class Pokemod; class Ability : public Object { public: Ability(const Pokemod& par, const unsigned _id); Ability(const Pokemod& par, const Ability& a, const unsigned _id); Ability(const Pokemod& par, const QString& fname, const unsigned _id = UINT_MAX); void load(const QString& fname, const unsigned _id = UINT_MAX) throw(Exception); void save() const throw(Exception); void setName(const QString& n); QString getName() const; const AbilityEffect& getEffect(const unsigned i) const throw(IndexException); AbilityEffect& getEffect(const unsigned i) throw(IndexException); const AbilityEffect& getEffectByID(const unsigned i) const throw(IndexException); AbilityEffect& getEffectByID(const unsigned i) throw(IndexException); unsigned getEffectIndex(const unsigned _id) const; unsigned getEffectCount() const; AbilityEffect& newEffect(); AbilityEffect& newEffect(const QString& fname); AbilityEffect& newEffect(const AbilityEffect& a); void deleteEffect(const unsigned i) throw(IndexException); Ability& operator=(const Ability& rhs); private: bool validate() const; unsigned getNewId() const; QString name; QList effects; }; #endif