/* * 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_SPECIES__ #define __POKEMOD_SPECIES__ // Pokemod includes #include "Fraction.h" #include "Object.h" #include "Pokemod.h" // Qt includes #include // Forward declarations class SpeciesAbility; class SpeciesEvolution; class SpeciesItem; class SpeciesMove; class Species : public Object { Q_OBJECT public: enum { Fluctuating = 0, Fading = 1, Slow = 2, Normal = 3, Fast = 5, Erratic = 6, End = 7 }; static const QStringList StyleStr; Species(const Species& species); Species(const Pokemod* parent, const int id); Species(const Species& species, const Pokemod* parent, const int id); Species(const QDomElement& xml, const Pokemod* parent, const int id = INT_MAX); ~Species(); void validate(); void load(const QDomElement& xml, int id = INT_MAX); QDomElement save() const; void setName(const QString& name); void setBaseStat(const int stat, const int base); void setEffortValue(const int stat, const int effortPoints); void setGrowth(const int growth); void setExperienceValue(const int experienceValue); void setCatchValue(const int catchValue); void setRunChance(const Fraction& runChance); void setFleeChance(const Fraction& fleeChance); void setItemChance(const Fraction& itemChance); void setPokedexNumber(const int pokedexNumber); void setWeight(const int weight); void setHeightFeet(const int feet); void setHeightInches(const int inches); void setPokedexEntry(const QString& pokedexEntry); void setFrontMaleSprite(const QPixmap& frontMaleSprite); void setBackMaleSprite(const QPixmap& backMaleSprite); void setFrontFemaleSprite(const QPixmap& frontFemaleSprite); void setBackFemaleSprite(const QPixmap& backFemaleSprite); void setListSprite(const QPixmap& listSprite); void setGenderFactor(const Fraction& genderFactor); void setEggSpecies(const int eggSpecies); void setEggSteps(const int eggSteps); void setNidoranGroup(const int nidoranGroup); void setType(const int type, const bool state); void setEggGroup(const int eggGroup, const bool state); QString name() const; int baseStat(const int stat) const; int effortValue(const int stat) const; int growth() const; int experienceValue() const; int catchValue() const; Fraction runChance() const; Fraction fleeChance() const; Fraction itemChance() const; int pokedexNumber() const; int weight() const; int heightFeet() const; int heightInches() const; QString pokedexEntry() const; QPixmap frontMaleSprite() const; QPixmap backMaleSprite() const; QPixmap frontFemaleSprite() const; QPixmap backFemaleSprite() const; QPixmap listSprite() const; Fraction genderFactor() const; int eggSpecies() const; int eggSteps() const; int nidoranGroup() const; bool type(const int type) const; bool eggGroup(const int eggGroup) const; const SpeciesAbility* ability(const int index) const; SpeciesAbility* ability(const int index); const SpeciesAbility* abilityById(const int id) const; SpeciesAbility* abilityById(const int id); int abilityIndex(const int id) const; int abilityCount() const; SpeciesAbility* newAbility(); SpeciesAbility* newAbility(const QDomElement& xml); SpeciesAbility* newAbility(const SpeciesAbility& ability); void deleteAbility(const int index); void deleteAbilityById(const int id); const SpeciesEvolution* evolution(const int index) const; SpeciesEvolution* evolution(const int index); const SpeciesEvolution* evolutionById(const int id) const; SpeciesEvolution* evolutionById(const int id); int evolutionIndex(const int id) const; int evolutionCount() const; SpeciesEvolution* newEvolution(); SpeciesEvolution* newEvolution(const QDomElement& xml); SpeciesEvolution* newEvolution(const SpeciesEvolution& evolution); void deleteEvolution(const int index); void deleteEvolutionById(const int id); const SpeciesItem* item(const int index) const; SpeciesItem* item(const int index); const SpeciesItem* itemById(const int i) const; SpeciesItem* itemById(const int i); int itemIndex(const int id) const; int itemCount() const; SpeciesItem* newItem(); SpeciesItem* newItem(const QDomElement& xml); SpeciesItem* newItem(const SpeciesItem& item); void deleteItem(const int index); void deleteItemById(const int id); const SpeciesMove* move(const int index) const; SpeciesMove* move(const int index); const SpeciesMove* moveById(const int id) const; SpeciesMove* moveById(const int id); int moveIndex(const int id) const; int moveCount() const; SpeciesMove* newMove(); SpeciesMove* newMove(const QDomElement& xml); SpeciesMove* newMove(const SpeciesMove& move); void deleteMove(const int index); void deleteMoveById(const int id); Species& operator=(const Species& rhs); private: int newAbilityId() const; SpeciesAbility* newAbility(SpeciesAbility* ability); int newEvolutionId() const; SpeciesEvolution* newEvolution(SpeciesEvolution* evolution); int newItemId() const; SpeciesItem* newItem(SpeciesItem* item); int newMoveId() const; SpeciesMove* newMove(SpeciesMove* move); void clear(); QString m_name; bool m_baseStat[Pokemod::ST_End_GSC]; bool m_effortValue[Pokemod::ST_End_GSC]; int m_growth; int m_experienceValue; int m_catchValue; Fraction m_runChance; Fraction m_fleeChance; Fraction m_itemChance; int m_pokedexNumber; int m_weight; int m_heightFeet; int m_heightInches; QPixmap m_frontMaleSprite; QPixmap m_backMaleSprite; QPixmap m_frontFemaleSprite; QPixmap m_backFemaleSprite; QPixmap m_listSprite; QString m_pokedexEntry; Fraction m_genderFactor; int m_eggSpecies; int m_eggSteps; int m_nidoranGroup; QList m_type; QList m_eggGroup; QList m_abilities; QList m_evolutions; QList m_items; QList m_moves; }; #endif