diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2007-05-25 00:15:36 +0000 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2007-05-25 00:15:36 +0000 |
| commit | 75b7d5c767428f7061365a186cb17a22de4112cc (patch) | |
| tree | 46db9c129f3fa848a6ea084a31e01f2c59e67b2a /pokemod/NatureEffect.cpp | |
| parent | 1a4b623c8ecb9d0c7d991312c12d78be4a68eff2 (diff) | |
| download | sigen-75b7d5c767428f7061365a186cb17a22de4112cc.tar.gz sigen-75b7d5c767428f7061365a186cb17a22de4112cc.tar.xz sigen-75b7d5c767428f7061365a186cb17a22de4112cc.zip | |
More modules PokéMod added
git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@14 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'pokemod/NatureEffect.cpp')
| -rw-r--r-- | pokemod/NatureEffect.cpp | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/pokemod/NatureEffect.cpp b/pokemod/NatureEffect.cpp new file mode 100644 index 00000000..6b249a58 --- /dev/null +++ b/pokemod/NatureEffect.cpp @@ -0,0 +1,155 @@ +/////////////////////////////////////////////////////////////////////////////
+// Name: pokemod/NatureEffect.cpp
+// Purpose: Define an effect of a nature
+// Author: Ben Boeckel
+// Modified by: Ben Boeckel
+// Created: Sun Mar 18 23:01:22 2007
+// Copyright: ©2007 Ben Boeckel and Nerdy Productions
+// Licence:
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+/////////////////////////////////////////////////////////////////////////////
+
+#include "NatureEffect.h"
+
+PokeGen::PokeMod::NatureEffect::NatureEffect(unsigned _id)
+{
+ LogCtor("NatureEffect", _id);
+ stat = 0;
+ multiplier.Set(1, 1);
+ id = _id;
+}
+
+PokeGen::PokeMod::NatureEffect::NatureEffect(Ini &ini, unsigned _id)
+{
+ LogCtorIni("NatureEffect", _id);
+ ImportIni(ini, _id);
+ if (id == UINT_MAX)
+ LogIdError("NatureEffect");
+}
+
+PokeGen::PokeMod::NatureEffect::~NatureEffect()
+{
+ LogDtor("NatureEffect", id);
+}
+
+#ifdef PG_DEBUG_WINDOW
+void PokeGen::PokeMod::NatureEffect::Validate(const wxListBox &output)
+#else
+void PokeGen::PokeMod::NatureEffect::Validate()
+#endif
+{
+ LogValidateStart("NatureEffect", _id);
+ // TODO (Validation#1#): NatureEffect Validation
+ LogValidateOver("NatureEffect", _id);
+}
+
+void PokeGen::PokeMod::NatureEffect::ImportIni(Ini &ini, unsigned _id)
+{
+ PMLog("NatureEffect Import: Starting", PM_DEBUG_INFO);
+ std::string curName;
+ xml.GetAttributeOrDefault("id", &id, UINT_MAX);
+ if (id == UINT_MAX)
+ PMLog("NatureEffect Import: No id attribute found!", PM_DEBUG_ERROR);
+ for (ticpp::Element *child = xml.FirstChildElement(); child; child = child->NextSiblingElement())
+ {
+ curName = child->Value();
+ if (curName == "stat")
+ child->GetTextOrDefault(&stat, 0);
+ else if (curName == "multiplier")
+ multiplier.ImportXml(*child);
+ else
+ PMLog(PMString("NatureEffect Import: Unknown XML element \"%s\"", curName.c_str()), PM_DEBUG_ERROR);
+ }
+ PMLog("NatureEffect Import: Finished", PM_DEBUG_INFO);
+}
+
+void PokeGen::PokeMod::NatureEffect::ExportXml(std::ofstream &fout, const String &nature) const
+{
+ LogExportStart("NatureEffect", id, name);
+ // Make elements
+ Ini exNatureEffect(nature + " natureEffect");
+ exNatureEffect.AddField("id", id);
+ exNatureEffect.AddField("stat", stat);
+ exNatureEffect.AddField("multiplier-n", multiplier.GetNum());
+ exNatureEffect.AddField("multiplier-d", multiplier.GetDenom());
+ exNatureEffect.Export(fout);
+ LogExportOver("NatureEffect", id, name);
+}
+
+void PokeGen::PokeMod::NatureEffect::SetStat(unsigned s)
+{
+ LogSetVar("NatureEffect", id, "stat", s);
+ stat = s;
+}
+
+void PokeGen::PokeMod::NatureEffect::SetStat(const String &s)
+{
+ LogSetVar("NatureEffect", id, "stat string", s);
+ stat = FindIn(curPokeMod.IsSpecialSplit() ? STH_END_GSC : STH_END_RBY, s, curPokeMod.IsSpecialSplit() ? StatHPGSCStr : StatHPRBYStr);
+}
+
+void PokeGen::PokeMod::NatureEffect::SetMultiplier(const Frac &m)
+{
+ LogSetVar("NatureEffect", id, "multiplier frac", m.GetNum(), m.GetDenom());
+ multiplier = m;
+}
+
+void PokeGen::PokeMod::NatureEffect::SetMultiplier(unsigned n, unsigned d)
+{
+ LogSetVar("NatureEffect", id, "multiplier", n, d);
+ multiplier.Set(n, d);
+}
+
+void PokeGen::PokeMod::NatureEffect::SetMultiplierNum(unsigned n)
+{
+ LogSetVar("NatureEffect", id, "multiplier numerator", n);
+ multiplier.SetNum(n);
+}
+
+void PokeGen::PokeMod::NatureEffect::SetMultiplierDenom(unsigned d)
+{
+ LogSetVar("NatureEffect", id, "multiplier denominator", d);
+ multiplier.SetDenom(d);
+}
+
+unsigned PokeGen::PokeMod::NatureEffect::GetStat() const
+{
+ LogFetchVar("NatureEffect", id, "stat", stat);
+ return stat;
+}
+
+PokeGen::PokeMod::String PokeGen::PokeMod::NatureEffect::GetStatString() const
+{
+ LogFetchVar("NatureEffect", id, "stat string", stat);
+ return (curPokeMod.IsSpecialSplit() ? StatHPGSCStr : StatHPRBYStr)[stat];
+}
+
+PokeGen::PokeMod::Frac PokeGen::PokeMod::NatureEffect::GetMultiplier() const
+{
+ LogFetchVar("NatureEffect", id, "multiplier", multiplier.GetNum());
+ return multiplier;
+}
+
+unsigned PokeGen::PokeMod::NatureEffect::GetMultiplierNum() const
+{
+ LogFetchVar("NatureEffect", id, "multiplier numerator", multiplier.GetNum());
+ return multiplier.GetNum();
+}
+
+unsigned PokeGen::PokeMod::NatureEffect::GetMultiplierDenom() const
+{
+ LogFetchVar("NatureEffect", id, "multiplier denominator", multiplier.GetDenom());
+ return multiplier.GetDenom();
+}
|
