166 if(saveFile ==
nullptr)
169 auto toolset = saveFile->
toolset;
184 it->offsetTo(0x2B34);
191 it->offsetTo(0x2B51);
202 auto toolset = saveFile->
toolset;
212 it->offsetTo(0x2B34);
218 it->offsetTo(0x2B51);
291 for(
int i = 0; i < monData.size(); i++) {
292 grassMons[i]->index = monData.at(i)->getToPokemon()->ind;
296 grassMons[i]->level = monData.at(i)->getLevel();
303 for(
int i = 0; i < monDataWater.size(); i++) {
304 waterMons[i]->index = monDataWater.at(i)->getToPokemon()->ind;
308 waterMons[i]->level = monDataWater.at(i)->getLevel();
constexpr var8 wildMonsCount
Wild-encounter slots per list (grass or water).
One wild-encounter slot: a species index and a level.
void reset()
Blank this slot.
int index
Species index (backs property).
bool operator>(const AreaPokemonWild &a)
Order by encounter value.
void save(SaveFileIterator *it)
Write one entry at the cursor.
bool operator<(const AreaPokemonWild &a)
Order by encounter value.
AreaPokemonWild(int index=0, int level=0)
< Species index.
protected::void indexChanged()
int level
Encounter level (backs property).
void load(SaveFileIterator *it)
Read one entry at the cursor.
void randomize()
Generates a random Pokemon from any dex entry and level.
void waterMonsSwap(int from, int to)
Reorder water slots.
int waterMonsCount()
Water-slot count (wildMonsCount).
void load(SaveFile *saveFile=nullptr)
Expand both encounter tables from the save.
AreaPokemonWild * grassMons[wildMonsCount]
The 10 grass-encounter slots.
void grassMonsSwap(int from, int to)
Reorder grass slots.
void randomize()
Randomize the encounter tables.
AreaPokemonWild * waterMons[wildMonsCount]
The 10 water-encounter slots.
void setTo(MapDBEntry *map)
Set encounters from map.
void pauseMons3StepsChanged()
int grassMonsCount()
Grass-slot count (wildMonsCount).
AreaPokemonWild * grassMonsAt(int ind)
Grass slot ind (GC-protected return).
AreaPokemonWild * waterMonsAt(int ind)
Water slot ind (GC-protected return).
void reset()
Blank both encounter tables.
protected::void grassRateChanged()
AreaPokemon(SaveFile *saveFile=nullptr)
< Grass encounter rate (0 = none).
void save(SaveFile *saveFile)
Flatten both encounter tables to the save.
static PokemonDB * inst()
< Number of species.
PokemonDBEntry * getIndAt(const QString &key) const
Species by name key (for QML).
bool flipCoin() const
50/50 coin flip via the integer path (chanceSuccess(50)).
int rangeInclusive(const int start, const int end) const
Random integer in the closed interval [start, end].
static Random * inst()
< Convenience 50% coin flip (integer path), readable from QML.
A moving cursor over a SaveFile, layering auto-advancing reads/writes on top of SaveFileToolset.
void setBit(var8 size, var8 bit, bool value, bool reverse=false)
Set a bit at the cursor.
void setByte(var8 val, var16 padding=0)
Write a byte at the cursor; advances.
var8 getByte(var16 padding=0)
Read a byte at the cursor; advances.
One loaded save: the raw 32 KB bytes, their expanded object tree, and the tools that move between the...
SaveFileToolset * toolset
Tools to operate directly on the raw sav file data.
SaveFileIterator * iterator()
Returns a unique iterator that's setup to iterate over the raw sav file data.
var8e var8
Everyday 8-bit alias. Exact (not "fastest") to dodge the pointer-width bug noted above.
constexpr var8 pokemonDexCount
Number of species.
constexpr var8 pokemonLevelMax
Maximum level.
qmlCppOwned() – protect Q_INVOKABLE QObject returns from QML's GC.
static T * qmlCppOwned(T *obj)
Hand QML CppOwnership of a C++-owned QObject returned from a Q_INVOKABLE.
One map's complete static definition – the root of the MapDBEntry family.
const QVector< MapDBEntryWildMon * > getMonsBlue() const
Blue-version wild encounters.
const QVector< MapDBEntryWildMon * > getMonsWater() const
Water wild encounters.
int getMonRateWater() const
const QVector< MapDBEntryWildMon * > getMonsRed() const
Red-version wild encounters.