/* * Copyright 2007-2008 Ben Boeckel * * 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_MOVE__ #define __POKEMOD_MOVE__ // Pokemod includes #include "Object.h" // General includes #include "../general/Fraction.h" // Qt includes #include // Forward declarations class MoveEffect; class Pokemod; class Move : public Object { Q_OBJECT public: enum Target { T_Player = 0, T_Enemy = 1, T_All = 2, T_Random = 3, T_End = 4 }; static const QStringList TargetStr; enum Choice { C_Player = 0, C_Enemy = 1, C_Random = 2, C_End = 3 }; static const QStringList ChoiceStr; Move(const Move& move); Move(const Pokemod* parent, const int id); Move(const Move& move, const Pokemod* parent, const int id); Move(const QDomElement& xml, const Pokemod* parent, const int id = INT_MAX); ~Move(); void validate(); void load(const QDomElement& xml, int id = INT_MAX); QDomElement save() const; void setName(const QString& name); void setAccuracy(const Fraction& accuracy); void setPower(const int power); void setType(const int type); void setSpecial(const bool special); void setPowerPoints(const int powerPoints); void setTarget(const int target); void setNumTargets(const int numTargets); void setTargetChoice(const int targetChoice); void setIgnoreAccuracy(const bool ignoreAccuracy); void setCanFlinch(const bool canFlinch); void setCanRandom(const bool canRandom); void setCanSnatch(const bool canSnatch); void setSound(const bool sound); void setPriority(const int priority); void setDescription(const QString& description); QString name() const; Fraction accuracy() const; int power() const; int type() const; bool special() const; int powerPoints() const; int target() const; int numTargets() const; int targetChoice() const; bool ignoreAccuracy() const; bool canFlinch() const; bool canRandom() const; bool canSnatch() const; bool sound() const; int priority() const; QString description() const; const MoveEffect* effect(const int index) const; MoveEffect* effect(const int index); const MoveEffect* effectById(const int id) const; MoveEffect* effectById(const int id); int effectIndex(const int id) const; int effectCount() const; MoveEffect* newEffect(); MoveEffect* newEffect(const QDomElement& xml); MoveEffect* newEffect(const MoveEffect& effect); void deleteEffect(const int index); void deleteEffectById(const int id); Move& operator=(const Move& rhs); private: int newEffectId() const; MoveEffect* newEffect(MoveEffect* effect); void clear(); QString m_name; Fraction m_accuracy; int m_power; int m_type; bool m_special; int m_powerPoints; int m_target; int m_numTargets; int m_targetChoice; bool m_ignoreAccuracy; bool m_canFlinch; bool m_canRandom; bool m_canSnatch; bool m_sound; int m_priority; QString m_description; QList m_effects; }; #endif