Port PSS utility functions
This commit is contained in:
@@ -0,0 +1,189 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
enum
|
||||
{
|
||||
WALLPAPER_FOREST,
|
||||
WALLPAPER_CITY,
|
||||
WALLPAPER_DESERT,
|
||||
WALLPAPER_SAVANNA,
|
||||
WALLPAPER_CRAG,
|
||||
WALLPAPER_VOLCANO,
|
||||
WALLPAPER_SNOW,
|
||||
WALLPAPER_CAVE,
|
||||
WALLPAPER_BEACH,
|
||||
WALLPAPER_SEAFLOOR,
|
||||
WALLPAPER_RIVER,
|
||||
WALLPAPER_SKY,
|
||||
WALLPAPER_POLKADOT,
|
||||
WALLPAPER_POKECENTER,
|
||||
WALLPAPER_MACHINE,
|
||||
WALLPAPER_PLAIN,
|
||||
WALLPAPER_COUNT
|
||||
};
|
||||
|
||||
void BackupPokemonStorage(struct PokemonStorage * dest)
|
||||
{
|
||||
*dest = *gPokemonStoragePtr;
|
||||
}
|
||||
|
||||
void RestorePokemonStorage(struct PokemonStorage * src)
|
||||
{
|
||||
*gPokemonStoragePtr = *src;
|
||||
}
|
||||
|
||||
// Functions here are general utility functions.
|
||||
u8 StorageGetCurrentBox(void)
|
||||
{
|
||||
return gPokemonStoragePtr->currentBox;
|
||||
}
|
||||
|
||||
void SetCurrentBox(u8 boxId)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT)
|
||||
gPokemonStoragePtr->currentBox = boxId;
|
||||
}
|
||||
|
||||
u32 GetBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT)
|
||||
return GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], request);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SetBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, const void *value)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT)
|
||||
SetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], request, value);
|
||||
}
|
||||
|
||||
u32 GetCurrentBoxMonData(u8 boxPosition, s32 request)
|
||||
{
|
||||
return GetBoxMonDataAt(gPokemonStoragePtr->currentBox, boxPosition, request);
|
||||
}
|
||||
|
||||
void SetCurrentBoxMonData(u8 boxPosition, s32 request, const void *value)
|
||||
{
|
||||
SetBoxMonDataAt(gPokemonStoragePtr->currentBox, boxPosition, request, value);
|
||||
}
|
||||
|
||||
void GetBoxMonNickAt(u8 boxId, u8 boxPosition, u8 *dst)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT)
|
||||
GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_NICKNAME, dst);
|
||||
else
|
||||
*dst = EOS;
|
||||
}
|
||||
|
||||
void SetBoxMonNickAt(u8 boxId, u8 boxPosition, const u8 *nick)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT)
|
||||
SetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_NICKNAME, nick);
|
||||
}
|
||||
|
||||
u32 GetAndCopyBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, void *dst)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT)
|
||||
return GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], request, dst);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SetBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon *src)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT)
|
||||
gPokemonStoragePtr->boxes[boxId][boxPosition] = *src;
|
||||
}
|
||||
|
||||
void CopyBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon *dst)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT)
|
||||
*dst = gPokemonStoragePtr->boxes[boxId][boxPosition];
|
||||
}
|
||||
|
||||
void CreateBoxMonAt(u8 boxId, u8 boxPosition, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 personality, u8 otIDType, u32 otID)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT)
|
||||
{
|
||||
CreateBoxMon(&gPokemonStoragePtr->boxes[boxId][boxPosition],
|
||||
species,
|
||||
level,
|
||||
fixedIV,
|
||||
hasFixedPersonality, personality,
|
||||
otIDType, otID);
|
||||
}
|
||||
}
|
||||
|
||||
void ZeroBoxMonAt(u8 boxId, u8 boxPosition)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT)
|
||||
ZeroBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition]);
|
||||
}
|
||||
|
||||
void BoxMonAtToMon(u8 boxId, u8 boxPosition, struct Pokemon *dst)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT)
|
||||
BoxMonToMon(&gPokemonStoragePtr->boxes[boxId][boxPosition], dst);
|
||||
}
|
||||
|
||||
struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 boxPosition)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT)
|
||||
return &gPokemonStoragePtr->boxes[boxId][boxPosition];
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
u8 *GetBoxNamePtr(u8 boxId)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT)
|
||||
return gPokemonStoragePtr->boxNames[boxId];
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
u8 GetBoxWallpaper(u8 boxId)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT)
|
||||
return gPokemonStoragePtr->boxWallpapers[boxId];
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SetBoxWallpaper(u8 boxId, u8 wallpaperId)
|
||||
{
|
||||
if (boxId < TOTAL_BOXES_COUNT && wallpaperId < WALLPAPER_COUNT)
|
||||
gPokemonStoragePtr->boxWallpapers[boxId] = wallpaperId;
|
||||
}
|
||||
|
||||
s16 sub_808BDE8(struct BoxPokemon *boxMons, u8 currIndex, u8 maxIndex, u8 arg3)
|
||||
{
|
||||
s16 i;
|
||||
s16 adder = -1;
|
||||
|
||||
if (arg3 < 2)
|
||||
adder = 1;
|
||||
|
||||
if (arg3 == 1 || arg3 == 3)
|
||||
{
|
||||
for (i = (s8)currIndex + adder; i >= 0 && i <= maxIndex; i += adder)
|
||||
{
|
||||
if (GetBoxMonData(&boxMons[i], MON_DATA_SPECIES) != SPECIES_NONE)
|
||||
return i;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = (s8)currIndex + adder; i >= 0 && i <= maxIndex; i += adder)
|
||||
{
|
||||
if (GetBoxMonData(&boxMons[i], MON_DATA_SPECIES) != SPECIES_NONE
|
||||
&& !GetBoxMonData(&boxMons[i], MON_DATA_IS_EGG))
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
Reference in New Issue
Block a user