summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-02-12 17:54:20 -0500
committerBen Boeckel <MathStuf@gmail.com>2009-02-12 18:10:32 -0500
commite45938d4db3a7a14d3dca0606fbcf41ba8237b35 (patch)
treeab65a3ca33c179ac3db3d3490a4aba46ee1bf884
parentfe90e565f584640001906f4eaba5ca03093b984e (diff)
downloadsigen-e45938d4db3a7a14d3dca0606fbcf41ba8237b35.tar.gz
sigen-e45938d4db3a7a14d3dca0606fbcf41ba8237b35.tar.xz
sigen-e45938d4db3a7a14d3dca0606fbcf41ba8237b35.zip
Reorganized species, name, and gender for TeamMember
-rw-r--r--sigencore/TeamMember.cpp55
-rw-r--r--sigencore/TeamMember.h20
2 files changed, 41 insertions, 34 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))
diff --git a/sigencore/TeamMember.h b/sigencore/TeamMember.h
index b5b144d8..7f636f43 100644
--- a/sigencore/TeamMember.h
+++ b/sigencore/TeamMember.h
@@ -97,11 +97,12 @@ class SIGENCORE_EXPORT TeamMember : public Sigscript::Config
void setContainment(Containment* containment);
Q_SCRIPTABLE Containment* containment() const;
- QString name() const;
+ Q_SCRIPTABLE Sigscript::SpeciesWrapper* species() const;
+
+ Q_SCRIPTABLE QString name() const;
+ Q_SCRIPTABLE Gender gender() const;
long long currentHp() const;
- Sigscript::SpeciesWrapper* species() const;
int level() const;
- Gender gender() const;
long long levelExperience() const;
int baseStat(const Sigmod::Stat stat) const;
long long statExperience(const Sigmod::Stat stat) const;
@@ -111,11 +112,13 @@ class SIGENCORE_EXPORT TeamMember : public Sigscript::Config
bool canLearnMove(Sigscript::MoveWrapper* move) const;
public slots:
+ void setName(const QString& name);
+ bool setGender(const Gender gender);
+
void boostLevels(const int levels);
void evolveInto(Sigscript::SpeciesWrapper* newSpecies);
- void setName(const QString& name);
void cureStatus(Sigscript::StatusWrapper* status);
void giveStatus(Sigscript::StatusWrapper* status);
void giveLevelExp(const int exp);
@@ -132,13 +135,13 @@ class SIGENCORE_EXPORT TeamMember : public Sigscript::Config
virtual void writeBack();
signals:
- void speciesChanged(Sigscript::SpeciesWrapper* species);
+
+ void nameChanged(const QString& newName);
+ void genderChanged(const Gender newGender);
void evolveStart();
void evolveEnd();
- void nameChanged(const QString& oldName, const QString& newName);
-
void statusCured(Sigscript::StatusWrapper* status);
void statusInflicted(Sigscript::StatusWrapper* status);
@@ -165,10 +168,10 @@ class SIGENCORE_EXPORT TeamMember : public Sigscript::Config
Sigscript::SigmodWrapper* m_sigmod;
Containment* m_containment;
+ Sigscript::SpeciesWrapper* m_species;
QString m_name;
long long m_currentHp;
- Sigscript::SpeciesWrapper* m_species;
Gender m_gender;
long long m_levelExp;
int m_level;
@@ -184,7 +187,6 @@ class SIGENCORE_EXPORT TeamMember : public Sigscript::Config
QList<Kross::Action*> m_abilityBattleScripts;
QList<Kross::Action*> m_statusBattleScripts;
protected slots:
- void setSpecies(Sigscript::SpeciesWrapper* species);
void setLevel(const int level);
private:
void makeConnections();