summaryrefslogtreecommitdiffstats
path: root/pokemod/Ability.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2007-11-22 20:18:43 +0000
committerBen Boeckel <MathStuf@gmail.com>2007-11-22 20:18:43 +0000
commit4cc4d62d084bc3002e35f6bd15a73f22157114e4 (patch)
treee492df521e068e0cd726382d0c08a939858196f2 /pokemod/Ability.cpp
parent83f4b43f63960ba30e38cf5bb53cd98ae738ef74 (diff)
downloadsigen-4cc4d62d084bc3002e35f6bd15a73f22157114e4.tar.gz
sigen-4cc4d62d084bc3002e35f6bd15a73f22157114e4.tar.xz
sigen-4cc4d62d084bc3002e35f6bd15a73f22157114e4.zip
[FIX] classes more usable
[FIX] Matrix class [ADD] pokemod/Rules.{h, cpp} [FIX] coding style cleaned up git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@28 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'pokemod/Ability.cpp')
-rw-r--r--pokemod/Ability.cpp159
1 files changed, 102 insertions, 57 deletions
diff --git a/pokemod/Ability.cpp b/pokemod/Ability.cpp
index de32f4b3..d4f68221 100644
--- a/pokemod/Ability.cpp
+++ b/pokemod/Ability.cpp
@@ -23,123 +23,168 @@
#include "Ability.h"
-PokeGen::PokeMod::Ability::Ability(const Pokemod* par, const unsigned _id) :
- Object(_id, par),
+
+PokeGen::PokeMod::Ability::Ability(const Pokemod& par, const unsigned _id) :
+ Object(par, _id),
name("")
{
}
-PokeGen::PokeMod::Ability::Ability(const Pokemod* par, Ini& ini, const unsigned _id) :
- Object(_id, par)
+PokeGen::PokeMod::Ability::Ability(const Pokemod& par, const Ability& a, const unsigned _id) :
+ Object(par, _id)
+{
+ *this = a;
+}
+
+PokeGen::PokeMod::Ability::Ability(const Pokemod& par, const QString& fname, const unsigned _id) :
+ Object(par, _id)
{
- ImportIni(ini, _id);
+ load(fname, _id);
}
-bool PokeGen::PokeMod::Ability::Validate()
+bool PokeGen::PokeMod::Ability::validate() const
{
- pokemod->ValidationMsg(QString("---Ability \"%1\" with id %2---").arg(name).arg(id), Pokemod::V_Msg);
+ bool valid = true;
+ pokemod.validationMsg(QString("---Ability \"%1\" with id %2---").arg(name).arg(id), Pokemod::V_Msg);
if (name == "")
{
- pokemod->ValidationMsg("No Name");
- isValid = false;
+ pokemod.validationMsg("No Name");
+ valid = false;
}
-
- if (GetEffectCount())
+ if (getEffectCount())
{
QMap<unsigned, unsigned> idChecker;
- for (QList<AbilityEffect>::Iterator i = effects.begin(); i != effects.end(); ++i)
+ for (QListIterator<AbilityEffect> i(effects); i.hasNext(); i.next())
{
- if (!i->IsValid())
- isValid = false;
- ++idChecker[i->GetId()];
+ if (!i.peekNext().isValid())
+ valid = false;
+ ++idChecker[i.peekNext().getId()];
}
- for (QMap<unsigned, unsigned>::ConstIterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ for (QMapIterator<unsigned, unsigned> i(idChecker); i.hasNext(); i.next())
{
if (1 < i.value())
{
- pokemod->ValidationMsg(QString("%2 effects with id %3").arg(name).arg(i.value()).arg(i.key()));
- isValid = false;
+ pokemod.validationMsg(QString("%2 effects with id %3").arg(name).arg(i.value()).arg(i.key()));
+ valid = false;
}
}
}
else
{
- pokemod->ValidationMsg(QString("No effects").arg(name));
- isValid = false;
+ pokemod.validationMsg(QString("No effects").arg(name));
+ valid = false;
}
- return isValid;
+ return valid;
+}
+
+unsigned PokeGen::PokeMod::Ability::getNewId() const
+{
+ unsigned i = 0;
+ for (; (i < getEffectCount()) && (getEffectByID(i) != UINT_MAX); ++i)
+ ;
+ return i;
}
-void PokeGen::PokeMod::Ability::ImportIni(Ini& ini, const unsigned _id)
+void PokeGen::PokeMod::Ability::load(const QString& fname, const unsigned _id)
{
+ Ini ini(fname);
if (_id == UINT_MAX)
- ini.GetValue("id", id);
+ ini.getValue("id", id);
else
id = _id;
- ini.GetValue("name", name);
+ ini.getValue("name", name);
+ QStringList path = pokemod.getPath().split('/');
+ path.removeLast();
+ QDir fdir(path.join("/"));
effects.clear();
+ if (fdir.cd("effect"))
+ {
+ for (QStringListIterator i(fdir.entryList(QStringList("*.pini"), QDir::Files, QDir::Name)); i.hasNext(); )
+ newEffect(i.next());
+ }
}
-void PokeGen::PokeMod::Ability::ExportIni(QFile& fout) const
+void PokeGen::PokeMod::Ability::save() const
{
- Ini exAbility("ability");
- exAbility.AddField("id", id);
- exAbility.AddField("name", name);
- exAbility.Export(fout);
- for (QList<AbilityEffect>::ConstIterator i = effects.begin(); i != effects.end(); ++i)
- i->ExportIni(fout, name);
+ Ini ini;
+ ini.addField("id", id);
+ ini.addField("name", name);
+ ini.save(QString("%1/ability/%2/data.pini").arg(pokemod.getPath()).arg(name));
+ for (QListIterator<AbilityEffect> i(effects); i.hasNext(); )
+ i.next().save(name);
}
-void PokeGen::PokeMod::Ability::SetName(const QString& n)
+void PokeGen::PokeMod::Ability::setName(const QString& n)
{
name = n;
}
-QString PokeGen::PokeMod::Ability::GetName() const
+QString PokeGen::PokeMod::Ability::getName() const
{
return name;
}
-const PokeGen::PokeMod::AbilityEffect* PokeGen::PokeMod::Ability::GetEffect(const unsigned i) const
+const PokeGen::PokeMod::AbilityEffect& PokeGen::PokeMod::Ability::getEffect(const unsigned i) const
+{
+ if (getEffectCount() <= i)
+ throw("Ability: out-of-bounds");
+ return effects.at(i);
+}
+
+PokeGen::PokeMod::AbilityEffect& PokeGen::PokeMod::Ability::getEffect(const unsigned i)
{
- if (i < GetEffectCount())
- return &effects[i];
- return NULL;
+ if (getEffectCount() <= i)
+ throw("Ability: out-of-bounds");
+ return effects[i];
}
-unsigned PokeGen::PokeMod::Ability::GetEffectByID(const unsigned _id) const
+unsigned PokeGen::PokeMod::Ability::getEffectByID(const unsigned _id) const
{
- for (unsigned i = 0; i < GetEffectCount(); ++i)
+ for (unsigned i = 0; i < getEffectCount(); ++i)
{
- if (effects[i].GetId() == _id)
+ if (effects[i].getId() == _id)
return i;
}
return UINT_MAX;
}
-unsigned PokeGen::PokeMod::Ability::GetEffectCount() const
+unsigned PokeGen::PokeMod::Ability::getEffectCount() const
{
return effects.size();
}
-const PokeGen::PokeMod::AbilityEffect* PokeGen::PokeMod::Ability::NewEffect(Ini* const ini)
+PokeGen::PokeMod::AbilityEffect& PokeGen::PokeMod::Ability::newEffect()
{
- unsigned i = 0;
- for (; (i < GetEffectCount()) && (GetEffectByID(i) != UINT_MAX); ++i)
- ;
- AbilityEffect newEffect(pokemod, i);
- if (ini)
- newEffect.ImportIni(*ini);
- effects.append(newEffect);
- return &effects[GetEffectCount() - 1];
+ effects.append(AbilityEffect(pokemod, getNewId()));
+ return effects[getEffectCount() - 1];
}
-bool PokeGen::PokeMod::Ability::DeleteEffect(const unsigned i)
+PokeGen::PokeMod::AbilityEffect& PokeGen::PokeMod::Ability::newEffect(const QString& fname)
{
- if (i < GetEffectCount())
- {
- effects.erase(effects.begin() + i);
- return true;
- }
- return false;
+ effects.append(AbilityEffect(pokemod, fname, getNewId()));
+ return effects[getEffectCount() - 1];
+}
+
+PokeGen::PokeMod::AbilityEffect& PokeGen::PokeMod::Ability::newEffect(const AbilityEffect& e)
+{
+ effects.append(AbilityEffect(pokemod, e, getNewId()));
+ return effects[getEffectCount() - 1];
+}
+
+void PokeGen::PokeMod::Ability::deleteEffect(const unsigned i)
+{
+ if (getEffectCount() <= i)
+ throw("Ability: out-of-bounds");
+ effects.removeAt(i);
+}
+
+PokeGen::PokeMod::Ability& PokeGen::PokeMod::Ability::operator=(const Ability& rhs)
+{
+ if (this == &rhs)
+ return *this;
+ name = rhs.name;
+ effects.clear();
+ for (unsigned i = 0; i < rhs.getEffectCount(); ++i)
+ newEffect(rhs.getEffect(i));
+ return *this;
}