summaryrefslogtreecommitdiffstats
path: root/sigmod/Badge.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigmod/Badge.cpp')
-rw-r--r--sigmod/Badge.cpp114
1 files changed, 32 insertions, 82 deletions
diff --git a/sigmod/Badge.cpp b/sigmod/Badge.cpp
index a3936c87..60d1815c 100644
--- a/sigmod/Badge.cpp
+++ b/sigmod/Badge.cpp
@@ -67,12 +67,21 @@ void Sigmod::Badge::validate()
TEST_BEGIN();
if (m_name.isEmpty())
emit(error("Name is empty"));
- TEST(setFace, face);
- TEST(setBadge, badge);
+ TEST(face);
+ TEST(badge);
if (m_face == m_badge)
emit(error("Face and badge sprites are the same"));
- TEST(setObey, obey);
- TEST_ARRAY(setStat, stat, ST_SpecialDefense - ST_Attack + 1);
+ TEST(obey);
+ TEST_ARRAY_INDEX(stat, ST_Attack);
+ TEST_ARRAY_INDEX(stat, ST_Defense);
+ TEST_ARRAY_INDEX(stat, ST_Speed);
+ if (sigmod()->rules()->specialSplit())
+ {
+ TEST_ARRAY_INDEX(stat, ST_SpecialAttack);
+ TEST_ARRAY_INDEX(stat, ST_SpecialDefense);
+ }
+ else
+ TEST_ARRAY_INDEX(stat, ST_Special);
TEST_END();
}
@@ -97,42 +106,23 @@ QDomElement Sigmod::Badge::save() const
return xml;
}
-void Sigmod::Badge::setName(const QString& name)
-{
- CHECK(name);
-}
-
-void Sigmod::Badge::setFace(const int face)
-{
- if (!sigmod()->spriteById(face))
- emit(error(bounds("face", face)));
- else
- CHECK(face);
-}
+SETTER(Badge, QString&, Name, name)
+SETTER(Badge, int, Face, face)
+SETTER(Badge, int, Badge, badge)
+SETTER(Badge, int, Obey, obey)
+SETTER_ARRAY(Badge, Sigcore::Fraction&, Stat, stat, multiplier, Stat, stat, ST_Attack)
-void Sigmod::Badge::setBadge(const int badge)
-{
- if (!sigmod()->spriteById(badge))
- emit(error(bounds("badge", badge)));
- else
- CHECK(badge);
-}
+GETTER(Badge, QString, name)
+GETTER(Badge, int, face)
+GETTER(Badge, int, badge)
+GETTER(Badge, int, obey)
+GETTER_ARRAY(Badge, Sigcore::Fraction, stat, multiplier, Stat, stat, ST_Attack)
-void Sigmod::Badge::setObey(const int obey)
-{
- if (sigmod()->rules()->maxLevel() < obey)
- emit(error(bounds("obey", INT_MIN, sigmod()->rules()->maxLevel(), obey)));
- else
- CHECK(obey);
-}
-
-void Sigmod::Badge::setStat(const Stat stat, const Sigcore::Fraction& multiplier)
-{
- if (multiplier < 1)
- {
- emit(error(bounds("stat multiplier", 1, INT_MAX, multiplier)));
- return;
- }
+CHECK(Badge, QString&, name)
+CHECK_INDEX(Badge, int, face, sigmod(), sprite)
+CHECK_INDEX(Badge, int, badge, sigmod(), sprite)
+CHECK_BOUNDS(Badge, int, obey, INT_MIN, sigmod()->rules()->maxLevel())
+CHECK_BEGIN_ARRAY(Badge, Sigcore::Fraction&, stat, multiplier, Stat, stat)
switch (stat)
{
case ST_SpecialDefense:
@@ -140,51 +130,11 @@ void Sigmod::Badge::setStat(const Stat stat, const Sigcore::Fraction& multiplier
case ST_Attack ... ST_Special:
break;
default:
- emit(warning(bounds("stat", "Attack", sigmod()->rules()->specialSplit() ? "SpecialDefense" : "Special", stat)));
- return;
+ EBOUNDS(stat, "Attack", sigmod()->rules()->specialSplit() ? "SpecialDefense" : "Special");
+ return false;
}
- CHECK_ARRAY(stat[stat - ST_Attack], multiplier);
-}
-
-void Sigmod::Badge::setStat(const Sigcore::Fraction& multiplier)
-{
- if (multiplier < 1)
- emit(error(bounds("stat multiplier", 1, INT_MAX, multiplier)));
-}
-
-QString Sigmod::Badge::name() const
-{
- return m_name;
-}
-
-int Sigmod::Badge::face() const
-{
- return m_face;
-}
-
-int Sigmod::Badge::badge() const
-{
- return m_badge;
-}
-
-int Sigmod::Badge::obey() const
-{
- return m_obey;
-}
-
-Sigcore::Fraction Sigmod::Badge::stat(const Stat stat) const
-{
- switch (stat)
- {
- case ST_SpecialDefense:
- if (sigmod()->rules()->specialSplit())
- case ST_Attack ... ST_Special:
- return m_stat[stat - ST_Attack];
- default:
- emit(warning(bounds("stat", "Attack", sigmod()->rules()->specialSplit() ? "SpecialDefense" : "Special", stat)));
- return Sigcore::Fraction();
- }
-}
+ TBOUNDS(multiplier, 1, INT_MAX)
+CHECK_END()
Sigmod::Badge& Sigmod::Badge::operator=(const Badge& rhs)
{