diff options
Diffstat (limited to 'sigencore/TeamMember.cpp')
| -rw-r--r-- | sigencore/TeamMember.cpp | 55 |
1 files changed, 30 insertions, 25 deletions
diff --git a/sigencore/TeamMember.cpp b/sigencore/TeamMember.cpp index e0459a73..5faee8ad 100644 --- a/sigencore/TeamMember.cpp +++ b/sigencore/TeamMember.cpp @@ -178,35 +178,50 @@ Sigencore::Containment* Sigencore::TeamMember::containment() const return m_containment; } -QString Sigencore::TeamMember::name() const +Sigscript::SpeciesWrapper* Sigencore::TeamMember::species() const { - QString name = m_name; - valueOfType("name", &name); - return name; + return m_species; } -long long Sigencore::TeamMember::currentHp() const +void Sigencore::TeamMember::setName(const QString& name) { - return m_currentHp; + m_name = name; + emit(nameChanged(m_name)); } -Sigscript::SpeciesWrapper* Sigencore::TeamMember::species() const +QString Sigencore::TeamMember::name() const { - Sigscript::SpeciesWrapper* species = m_species; - valueOfType("species", &species); - return species; + return m_name; } -int Sigencore::TeamMember::level() const +bool Sigencore::TeamMember::setGender(const Gender gender) { - return m_level; + if (!m_sigmod->rules()->genderAllowed()) + return false; + const Sigcore::Fraction genderFactor = m_species->genderFactor(); + switch (gender) + { + case Male: + if (1 <= genderFactor) + return false; + break; + case Female: + if (genderFactor <= 0) + return false; + break; + case Genderless: + if (0 <= genderFactor) + return false; + break; + } + m_gender = gender; + emit(genderChanged(m_gender)); + return true; } Sigencore::TeamMember::Gender Sigencore::TeamMember::gender() const { - Gender gender = m_gender; - valueOfType("gender", &gender); - return gender; + return m_gender; } long long Sigencore::TeamMember::levelExperience() const @@ -391,16 +406,6 @@ void Sigencore::TeamMember::evolveInto(Sigscript::SpeciesWrapper* newSpecies) emit(evolveEnd()); } -void Sigencore::TeamMember::setName(const QString& name) -{ - if (m_name != name) - { - const QString oldName = m_name; - m_name = name; - emit(nameChanged(oldName, m_name)); - } -} - void Sigencore::TeamMember::cureStatus(Sigscript::StatusWrapper* status) { if (m_status.contains(status)) |
