diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2007-07-03 04:20:36 +0000 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2007-07-03 04:20:36 +0000 |
| commit | 65cc463f1d91fe99acf1c4dd9bce7e0038593022 (patch) | |
| tree | 95644c3c42a4a23db50dc42722cdeb4489427e14 /pokemod/MapTrainerTeam.cpp | |
| parent | 9102febc37475af113681eaaee02ecc2ea04b4da (diff) | |
| download | sigen-65cc463f1d91fe99acf1c4dd9bce7e0038593022.tar.gz sigen-65cc463f1d91fe99acf1c4dd9bce7e0038593022.tar.xz sigen-65cc463f1d91fe99acf1c4dd9bce7e0038593022.zip | |
Fixed Logging, minor fixes, got rid of NatureEffect, and started migration from wxGTK to Qt
git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@22 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'pokemod/MapTrainerTeam.cpp')
| -rw-r--r-- | pokemod/MapTrainerTeam.cpp | 183 |
1 files changed, 118 insertions, 65 deletions
diff --git a/pokemod/MapTrainerTeam.cpp b/pokemod/MapTrainerTeam.cpp index 6cdd8e03..2c9d42c4 100644 --- a/pokemod/MapTrainerTeam.cpp +++ b/pokemod/MapTrainerTeam.cpp @@ -25,8 +25,7 @@ PokeGen::PokeMod::MapTrainerTeam::MapTrainerTeam(const Pokemod *par, const unsigned _id) :
species(UINT_MAX),
- level(1),
- item(UINT_MAX)
+ level(1)
{
LogCtor("MapTrainerTeam", _id);
id = _id;
@@ -60,39 +59,46 @@ void PokeGen::PokeMod::MapTrainerTeam::Validate() LogOutOfRange("MapTrainerTeam", id, "level", level, GetSpeciesString());
isValid = false;
}
- if (!pokemod->GetItem(item))
- {
- LogVarNotValid("MapTrainerTeam", id, "item");
- isValid = false;
- }
- LogValidateOver("MapTrainerTeam", id, isValid, GetSpeciesString());
-}
-
-#ifdef PG_DEBUG_WINDOW
-void PokeGen::PokeMod::MapTrainerTeam::Validate(const wxListBox &output)
-{
- LogValidateStart("MapTrainerTeam", id);
- if (!pokemod->GetPokemon(species))
- {
- LogVarNotValid("MapTrainerTeam", id, "species", species);
- output.Append(ConsoleLogVarNotValid("MapTrainerTeam", id, "species", species));
- isValid = false;
- }
- if (pokemod->GetMaxLevel() <= level)
- {
- LogVarOutOfRange("MapTrainerTeam", id, "level", level, GetSpeciesString());
- output.Append(ConsoleLogVarOutOfRange("MapTrainerTeam", id, "level", level, GetSpeciesString()));
- isValid = false;
- }
- if (!pokemod->GetItem(item))
- {
- LogVarNotValid("MapTrainerTeam", id, "item", item);
- output.Append(ConsoleLogVarNotValid("MapTrainerTeam", id, "item", item));
- isValid = false;
- }
+ if (GetItemCount() <= pokemod->GetHoldItems()) + { + std::map<unsigned, unsigned> idChecker; + std::map<String, unsigned> itemChecker; + for (std::vector<unsigned>::const_iterator i = items.begin(); i != items.end(); ++i) + { + if (!pokemod->GetItem(*i)) + { + LogVarNotValid("MapTrainerTeam", id, "item"); + isValid = false; + } + ++idChecker[*i]; + ++itemChecker[pokemod->GetItem(*i)->GetName()]; + } + for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i) + { + if (1 < i->second) + { + LogDuplicateId("MapTrainerTeam", id, "item", i->first); + isValid = false; + } + } + for (std::map<String, unsigned>::const_iterator i = itemChecker.begin(); i != itemChecker.end(); ++i) + { + if (1 < i->second) + { + LogDuplicateSubmodule("MapTrainerTeam", id, "item", i->first); + isValid = false; + } + } + } + else if (GetItemCount()) + { + Log::Write(String("MapTrainerTeam Validation: Too many held items in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); + isValid = false; + } + else + LogSubmoduleEmpty("MapTrainerTeam", id, "item"); LogValidateOver("MapTrainerTeam", id, isValid, GetSpeciesString());
}
-#endif
void PokeGen::PokeMod::MapTrainerTeam::ImportIni(Ini &ini, const unsigned _id)
{
@@ -104,10 +110,19 @@ void PokeGen::PokeMod::MapTrainerTeam::ImportIni(Ini &ini, const unsigned _id) LogIdNotFound("MapTrainerTeam");
}
else
- id = _id;
+ id = _id; + unsigned i; + unsigned j; + items.clear(); ini.GetValue("species", species);
- ini.GetValue("level", level, 1);
- ini.GetValue("item", item);
+ ini.GetValue("level", level, 1); + ini.GetValue("numItems", i, 0); + for (unsigned k = 0; k < i; ++k) + { + ini.GetValue(String("item-%u", k), j); + if (k != UINT_MAX) + items.push_back(j); + }
LogImportOver("MapTrainerTeam", id);
}
@@ -117,8 +132,10 @@ void PokeGen::PokeMod::MapTrainerTeam::ExportIni(std::ofstream &fout, const Stri Ini exMapTrainerTeam(String("MapTrainerTeam %u ", trainerId) + map);
exMapTrainerTeam.AddField("id", id);
exMapTrainerTeam.AddField("species", species);
- exMapTrainerTeam.AddField("level", level);
- exMapTrainerTeam.AddField("item", item);
+ exMapTrainerTeam.AddField("level", level); + exMapTrainerTeam.AddField("numItems", GetItemCount()); + for (unsigned i = 0; i < GetItemCount(); ++i)
+ exMapTrainerTeam.AddField(String("item-%u", i), items[i]);
exMapTrainerTeam.Export(fout);
LogExportOver("MapTrainerTeam", id);
}
@@ -144,20 +161,6 @@ void PokeGen::PokeMod::MapTrainerTeam::SetLevel(const unsigned l) level = l;
}
-void PokeGen::PokeMod::MapTrainerTeam::SetItem(const unsigned i)
-{
- LogSetVar("MapTrainerTeam", id, "item", i, GetSpeciesString());
- if (pokemod->GetItem(i))
- item = i;
-}
-
-void PokeGen::PokeMod::MapTrainerTeam::SetItem(const String &i)
-{
- LogSetVar("MapTrainerTeam", id, "item string", i, GetSpeciesString());
- if (const Item *temp = pokemod->GetItem(i))
- item = temp->GetId();
-}
-
unsigned PokeGen::PokeMod::MapTrainerTeam::GetSpecies() const
{
LogFetchVar("MapTrainerTeam", id, "speceis", species);
@@ -178,16 +181,66 @@ unsigned PokeGen::PokeMod::MapTrainerTeam::GetLevel() const return level;
}
-unsigned PokeGen::PokeMod::MapTrainerTeam::GetItem() const
-{
- LogFetchVar("MapTrainerTeam", id, "item", item, GetSpeciesString());
- return item;
-}
-
-PokeGen::PokeMod::String PokeGen::PokeMod::MapTrainerTeam::GetItemString() const
-{
- LogFetchVar("MapTrainerTeam", id, "item string", item, GetSpeciesString());
- if (const Item *i = pokemod->GetItem(item))
- i->GetName();
- return "";
-}
+unsigned PokeGen::PokeMod::MapTrainerTeam::GetItem(const unsigned i) const +{ + LogSubmoduleFetch("MapTrainerTeam", id, "item", i); + if (i < GetItemCount() <= i) + return items[i]; + LogSubmoduleFetchFail("MapTrainerTeam", id, "item", i); + return UINT_MAX; +} + +unsigned PokeGen::PokeMod::MapTrainerTeam::GetItemCount() const +{ + LogSubmoduleCount("MapTrainerTeam", id, "item"); + return items.size(); +} + +void PokeGen::PokeMod::MapTrainerTeam::NewItem(const unsigned i) +{ + LogSubmoduleNew("MapTrainerTeam", id, "item", i); + if ((GetItemCount() < pokemod->GetHoldItems()) && pokemod->GetItem(i)) + items.push_back(i); +} + +void PokeGen::PokeMod::MapTrainerTeam::NewItem(const String &n) +{ + LogSubmoduleNew("MapTrainerTeam", id, "item", n); + if (GetItemCount() < pokemod->GetHoldItems()) + { + if (const Item *i = pokemod->GetItem(n)) + items.push_back(i->GetId()); + } +} + +void PokeGen::PokeMod::MapTrainerTeam::DeleteItem(const unsigned i) +{ + LogSubmoduleRemoveStart("MapTrainerTeam", id, "item", i); + if (i < GetItemCount()) + DeleteItemByID(items[i]); + else + LogSubmoduleRemoveFail("MapTrainerTeam", id, "item", i); +} + +void PokeGen::PokeMod::MapTrainerTeam::DeleteItem(const String &n) +{ + LogSubmoduleRemoveStart("MapTrainerTeam", id, "item", n); + if (const Item *i = pokemod->GetItem(n)) + DeleteItemByID(i->GetId()); + else + LogSubmoduleRemoveFail("MapTrainerTeam", id, "item", n); +} + +void PokeGen::PokeMod::MapTrainerTeam::DeleteItemByID(const unsigned _id) +{ + LogSubmoduleRemoveStart("MapTrainerTeam", id, "item", _id); + for (std::vector<unsigned>::iterator i = items.begin(); i != items.end(); ++i) + { + if (*i == _id) + { + LogSubmoduleRemoved("MapTrainerTeam", id, "item", _id); + items.erase(i); + } + } + LogSubmoduleRemoveFail("MapTrainerTeam", id, "item", _id); +} |
