diff options
Diffstat (limited to 'sigmod/Badge.cpp')
| -rw-r--r-- | sigmod/Badge.cpp | 114 |
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) { |
