mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-03-14 01:32:23 +01:00
Merge pull request #542 from Slawter666/pss
Label some summary screen functions
This commit is contained in:
commit
646533cfa3
@ -43,10 +43,11 @@
|
||||
#include "constants/items.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/region_map_sections.h"
|
||||
#include "constants/rgb.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
static EWRAM_DATA struct UnkSummaryStruct
|
||||
static EWRAM_DATA struct PssData
|
||||
{
|
||||
/*0x00*/ union {
|
||||
struct Pokemon *mons;
|
||||
@ -135,21 +136,21 @@ static bool8 SummaryScreen_DecompressGraphics(void);
|
||||
static void CopyMonToSummaryStruct(struct Pokemon* a);
|
||||
static bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a);
|
||||
static void sub_81C0348(void);
|
||||
static void sub_81C0484(u8 taskId);
|
||||
static void sub_81C0510(u8 taskId);
|
||||
static void sub_81C0604(u8 taskId, s8 a);
|
||||
static void CloseSummaryScreen(u8 taskId);
|
||||
static void HandleInput(u8 taskId);
|
||||
static void ChangePokemon(u8 taskId, s8 a);
|
||||
static void sub_81C0704(u8 taskId);
|
||||
static s8 sub_81C08F8(s8 a);
|
||||
static s8 sub_81C09B4(s8 a);
|
||||
static bool8 sub_81C0A50(struct Pokemon* mon);
|
||||
static void sub_81C0A8C(u8 taskId, s8 a);
|
||||
static void ChangePage(u8 taskId, s8 a);
|
||||
static void sub_81C0B8C(u8 taskId);
|
||||
static void sub_81C0C68(u8 taskId);
|
||||
static void sub_81C0CC4(u8 taskId);
|
||||
static void sub_81C0D44(u8 taskId);
|
||||
static void sub_81C0E24(void);
|
||||
static void sub_81C0E48(u8 taskId);
|
||||
static void sub_81C0F44(u8 taskId);
|
||||
static void HandleInput_MoveSelect(u8 taskId);
|
||||
static bool8 sub_81C1040(void);
|
||||
static void sub_81C1070(s16* a, s8 b, u8* c);
|
||||
static void sub_81C11F4(u8 a);
|
||||
@ -173,21 +174,21 @@ static void sub_81C20F0(u8 taskId);
|
||||
static void sub_81C2194(u16 *a, u16 b, u8 c);
|
||||
static void sub_81C2228(struct Pokemon* mon);
|
||||
static void DrawExperienceProgressBar(struct Pokemon* mon);
|
||||
static void sub_81C240C(u16 a);
|
||||
static void DrawContestMoveHearts(u16 move);
|
||||
static void sub_81C2524(void);
|
||||
static void sub_81C2554(void);
|
||||
static void ResetWindows(void);
|
||||
static void sub_81C25E8(void);
|
||||
static void sub_81C2628(void);
|
||||
static void sub_81C2794(void);
|
||||
static void sub_81C27DC(struct Pokemon *mon, u16 a);
|
||||
static void PrintPageNamesAndStatsPageToWindows(void);
|
||||
static void sub_81C2AFC(u8 a);
|
||||
static void sub_81C2C38(u8 a);
|
||||
static void CreatePageWindowTilemaps(u8 a);
|
||||
static void ClearPageWindowTilemaps(u8 a);
|
||||
static void SummaryScreen_RemoveWindowByIndex(u8 a);
|
||||
static void sub_81C2D9C(u8 a);
|
||||
static void sub_81C2DE4(u8 a);
|
||||
static void sub_81C2E00(void);
|
||||
static void sub_81C2E40(u8 taskId);
|
||||
static void PrintPageSpecificText(u8 a);
|
||||
static void CreateTextPrinterTask(u8 a);
|
||||
static void PrintInfoPageText(void);
|
||||
static void Task_PrintInfoPage(u8 taskId);
|
||||
static void PrintMonOTName(void);
|
||||
static void PrintMonOTID(void);
|
||||
static void PrintMonAbilityName(void);
|
||||
@ -203,39 +204,39 @@ static void PrintEggOTName(void);
|
||||
static void PrintEggOTID(void);
|
||||
static void PrintEggState(void);
|
||||
static void PrintEggMemo(void);
|
||||
static void sub_81C3554(u8 taskId);
|
||||
static void Task_PrintSkillsPage(u8 taskId);
|
||||
static void PrintHeldItemName(void);
|
||||
static void sub_81C3530(void);
|
||||
static void PrintSkillsPageText(void);
|
||||
static void PrintRibbonCount(void);
|
||||
static void BufferLeftColumnStats(void);
|
||||
static void PrintLeftColumnStats(void);
|
||||
static void BufferRightColumnStats(void);
|
||||
static void PrintRightColumnStats(void);
|
||||
static void PrintExpPointsNextLevel(void);
|
||||
static void sub_81C3984(void);
|
||||
static void sub_81C39F0(u8 taskId);
|
||||
static void PrintBattleMoves(void);
|
||||
static void Task_PrintBattleMoves(u8 taskId);
|
||||
static void PrintMoveNameAndPP(u8 a);
|
||||
static void sub_81C3D08(void);
|
||||
static void sub_81C3D54(u8 taskId);
|
||||
static void PrintContestMoves(void);
|
||||
static void Task_PrintContestMoves(u8 taskId);
|
||||
static void PrintContestMoveDescription(u8 a);
|
||||
static void PrintMoveDetails(u16 a);
|
||||
static void PrintNewMoveDetailsOrCancelText(void);
|
||||
static void sub_81C4064(void);
|
||||
static void sub_81C40A0(u8 a, u8 b);
|
||||
static void PrintHMMovesCantBeForgotten(void);
|
||||
static void sub_81C4190(void);
|
||||
static void sub_81C4204(u8 a, u8 b);
|
||||
static void sub_81C424C(void);
|
||||
static void sub_81C4280(void);
|
||||
static void sub_81C42C8(void);
|
||||
static void sub_81C43A0(void);
|
||||
static void sub_81C4420(void);
|
||||
static void sub_81C4484(void);
|
||||
static void sub_81C44F0(void);
|
||||
static void ResetSpriteIds(void);
|
||||
static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible);
|
||||
static void HidePageSpecificSprites(void);
|
||||
static void SetTypeIcons(void);
|
||||
static void CreateMoveTypeIcons(void);
|
||||
static void SetMonTypeIcons(void);
|
||||
static void SetMoveTypeIcons(void);
|
||||
static void SetContestMoveTypeIcons(void);
|
||||
static void SetNewMoveTypeIcon(void);
|
||||
static void sub_81C4568(u8 a, u8 b);
|
||||
static u8 sub_81C45F4(struct Pokemon *a, s16 *b);
|
||||
static u8 CreatePokemonSprite(struct Pokemon *a, s16 *b);
|
||||
static u8 sub_81C47B4(struct Pokemon *unused);
|
||||
static void sub_81C4844(struct Sprite *);
|
||||
static void SpriteCB_Pokemon(struct Sprite *);
|
||||
static void sub_81C48F0(void);
|
||||
static void CreateMonMarkingsSprite(struct Pokemon *mon);
|
||||
static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon);
|
||||
@ -626,22 +627,26 @@ static const u8 sTextColors_861CD2C[][3] =
|
||||
{0, 5, 6},
|
||||
{0, 7, 8}
|
||||
};
|
||||
|
||||
static const u8 gUnknown_0861CD53[] = INCBIN_U8("graphics/interface/summary_a_button.4bpp");
|
||||
static const u8 gUnknown_0861CDD3[] = INCBIN_U8("graphics/interface/summary_b_button.4bpp");
|
||||
static void (*const gUnknown_0861CE54[])(void) =
|
||||
|
||||
static void (*const sTextPrinterFunctions[])(void) =
|
||||
{
|
||||
sub_81C2E00,
|
||||
sub_81C3530,
|
||||
sub_81C3984,
|
||||
sub_81C3D08
|
||||
PrintInfoPageText,
|
||||
PrintSkillsPageText,
|
||||
PrintBattleMoves,
|
||||
PrintContestMoves
|
||||
};
|
||||
static void (*const gUnknown_0861CE64[])(u8 taskId) =
|
||||
|
||||
static void (*const sTextPrinterTasks[])(u8 taskId) =
|
||||
{
|
||||
sub_81C2E40,
|
||||
sub_81C3554,
|
||||
sub_81C39F0,
|
||||
sub_81C3D54
|
||||
Task_PrintInfoPage,
|
||||
Task_PrintSkillsPage,
|
||||
Task_PrintBattleMoves,
|
||||
Task_PrintContestMoves
|
||||
};
|
||||
|
||||
static const u8 gUnknown_0861CE74[] = _("{COLOR LIGHT_RED}{SHADOW GREEN}");
|
||||
static const u8 gUnknown_0861CE7B[] = _("{COLOR WHITE}{SHADOW DARK_GREY}");
|
||||
static const u8 gUnknown_0861CE82[] = _("{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}\n{SPECIAL_F7 0x03}");
|
||||
@ -968,13 +973,13 @@ static const union AnimCmd *const sSpriteAnimTable_StatusCondition[] = {
|
||||
sSpriteAnim_StatusPokerus,
|
||||
sSpriteAnim_StatusFaint,
|
||||
};
|
||||
static const struct CompressedSpriteSheet gUnknown_0861D0F8 =
|
||||
static const struct CompressedSpriteSheet sStatusIconsSpriteSheet =
|
||||
{
|
||||
.data = gStatusGfx_Icons,
|
||||
.size = 0x380,
|
||||
.tag = 30001
|
||||
};
|
||||
static const struct CompressedSpritePalette gUnknown_0861D100 =
|
||||
static const struct CompressedSpritePalette sStatusIconsSpritePalette =
|
||||
{
|
||||
.data = gStatusPal_Icons,
|
||||
.tag = 30001
|
||||
@ -1104,7 +1109,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 7:
|
||||
sub_81C2554();
|
||||
ResetWindows();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 8:
|
||||
@ -1129,7 +1134,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 13:
|
||||
sub_81C2D9C(pssData->currPageIndex);
|
||||
PrintPageSpecificText(pssData->currPageIndex);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 14:
|
||||
@ -1137,17 +1142,17 @@ static bool8 SummaryScreen_LoadGraphics(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 15:
|
||||
sub_81C2AFC(pssData->currPageIndex);
|
||||
CreatePageWindowTilemaps(pssData->currPageIndex);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 16:
|
||||
sub_81C4190();
|
||||
sub_81C42C8();
|
||||
ResetSpriteIds();
|
||||
CreateMoveTypeIcons();
|
||||
pssData->unk40F0 = 0;
|
||||
gMain.state++;
|
||||
break;
|
||||
case 17:
|
||||
pssData->spriteIds[0] = sub_81C45F4(&pssData->currentMon, &pssData->unk40F0);
|
||||
pssData->spriteIds[0] = CreatePokemonSprite(&pssData->currentMon, &pssData->unk40F0);
|
||||
if (pssData->spriteIds[0] != 0xFF)
|
||||
{
|
||||
pssData->unk40F0 = 0;
|
||||
@ -1167,12 +1172,12 @@ static bool8 SummaryScreen_LoadGraphics(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 21:
|
||||
sub_81C4280();
|
||||
SetTypeIcons();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 22:
|
||||
if (pssData->mode != PSS_MODE_SELECT_MOVE)
|
||||
CreateTask(sub_81C0510, 0);
|
||||
CreateTask(HandleInput, 0);
|
||||
else
|
||||
CreateTask(sub_81C171C, 0);
|
||||
gMain.state++;
|
||||
@ -1182,7 +1187,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 24:
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
|
||||
gPaletteFade.bufferTransferDisabled = 0;
|
||||
gMain.state++;
|
||||
break;
|
||||
@ -1259,11 +1264,11 @@ static bool8 SummaryScreen_DecompressGraphics(void)
|
||||
pssData->unk40F0++;
|
||||
break;
|
||||
case 9:
|
||||
LoadCompressedSpriteSheet(&gUnknown_0861D0F8);
|
||||
LoadCompressedSpriteSheet(&sStatusIconsSpriteSheet);
|
||||
pssData->unk40F0++;
|
||||
break;
|
||||
case 10:
|
||||
LoadCompressedSpritePalette(&gUnknown_0861D100);
|
||||
LoadCompressedSpritePalette(&sStatusIconsSpritePalette);
|
||||
pssData->unk40F0++;
|
||||
break;
|
||||
case 11:
|
||||
@ -1374,7 +1379,7 @@ static void sub_81C0348(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_81C240C(pssData->summary.moves[pssData->firstMoveIndex]);
|
||||
DrawContestMoveHearts(pssData->summary.moves[pssData->firstMoveIndex]);
|
||||
sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0);
|
||||
sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0);
|
||||
SetBgTilemapBuffer(1, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0]);
|
||||
@ -1402,13 +1407,13 @@ static void sub_81C0434(void)
|
||||
Free(pssData);
|
||||
}
|
||||
|
||||
static void sub_81C044C(u8 taskId)
|
||||
static void BeginCloseSummaryScreen(u8 taskId)
|
||||
{
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
|
||||
gTasks[taskId].func = sub_81C0484;
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
gTasks[taskId].func = CloseSummaryScreen;
|
||||
}
|
||||
|
||||
static void sub_81C0484(u8 taskId)
|
||||
static void CloseSummaryScreen(u8 taskId)
|
||||
{
|
||||
if (sub_81221EC() != TRUE && !gPaletteFade.active)
|
||||
{
|
||||
@ -1426,25 +1431,25 @@ static void sub_81C0484(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C0510(u8 taskId)
|
||||
static void HandleInput(u8 taskId)
|
||||
{
|
||||
if (sub_81221EC() != TRUE && !gPaletteFade.active)
|
||||
{
|
||||
if (gMain.newKeys & DPAD_UP)
|
||||
{
|
||||
sub_81C0604(taskId, -1);
|
||||
ChangePokemon(taskId, -1);
|
||||
}
|
||||
else if (gMain.newKeys & DPAD_DOWN)
|
||||
{
|
||||
sub_81C0604(taskId, 1);
|
||||
ChangePokemon(taskId, 1);
|
||||
}
|
||||
else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysState() == 1)
|
||||
{
|
||||
sub_81C0A8C(taskId, -1);
|
||||
ChangePage(taskId, -1);
|
||||
}
|
||||
else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysState() == 2)
|
||||
{
|
||||
sub_81C0A8C(taskId, 1);
|
||||
ChangePage(taskId, 1);
|
||||
}
|
||||
else if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
@ -1454,7 +1459,7 @@ static void sub_81C0510(u8 taskId)
|
||||
{
|
||||
sub_81C48F0();
|
||||
PlaySE(SE_SELECT);
|
||||
sub_81C044C(taskId);
|
||||
BeginCloseSummaryScreen(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1467,12 +1472,12 @@ static void sub_81C0510(u8 taskId)
|
||||
{
|
||||
sub_81C48F0();
|
||||
PlaySE(SE_SELECT);
|
||||
sub_81C044C(taskId);
|
||||
BeginCloseSummaryScreen(taskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C0604(u8 taskId, s8 a)
|
||||
static void ChangePokemon(u8 taskId, s8 a)
|
||||
{
|
||||
s8 r4_2;
|
||||
|
||||
@ -1510,7 +1515,7 @@ static void sub_81C0604(u8 taskId, s8 a)
|
||||
PlaySE(SE_SELECT);
|
||||
if (pssData->summary.unk7 != 0)
|
||||
{
|
||||
sub_81C4204(2, 1);
|
||||
SetSpriteInvisibility(2, 1);
|
||||
ClearWindowTilemap(13);
|
||||
schedule_bg_copy_tilemap_to_vram(0);
|
||||
sub_81C2074(0, 2);
|
||||
@ -1559,7 +1564,7 @@ static void sub_81C0704(u8 taskId)
|
||||
data[1] = 0;
|
||||
break;
|
||||
case 8:
|
||||
pssData->spriteIds[0] = sub_81C45F4(&pssData->currentMon, &data[1]);
|
||||
pssData->spriteIds[0] = CreatePokemonSprite(&pssData->currentMon, &data[1]);
|
||||
if (pssData->spriteIds[0] == 0xFF)
|
||||
return;
|
||||
gSprites[pssData->spriteIds[0]].data[2] = 1;
|
||||
@ -1567,13 +1572,13 @@ static void sub_81C0704(u8 taskId)
|
||||
data[1] = 0;
|
||||
break;
|
||||
case 9:
|
||||
sub_81C4280();
|
||||
SetTypeIcons();
|
||||
break;
|
||||
case 10:
|
||||
sub_81C25E8();
|
||||
break;
|
||||
case 11:
|
||||
sub_81C2D9C(pssData->currPageIndex);
|
||||
PrintPageSpecificText(pssData->currPageIndex);
|
||||
sub_81C2524();
|
||||
break;
|
||||
case 12:
|
||||
@ -1583,7 +1588,7 @@ static void sub_81C0704(u8 taskId)
|
||||
if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0)
|
||||
{
|
||||
data[0] = 0;
|
||||
gTasks[taskId].func = sub_81C0510;
|
||||
gTasks[taskId].func = HandleInput;
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -1656,7 +1661,7 @@ static bool8 sub_81C0A50(struct Pokemon* mon)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_81C0A8C(u8 taskId, s8 b)
|
||||
static void ChangePage(u8 taskId, s8 b)
|
||||
{
|
||||
struct PokeSummary *summary = &pssData->summary;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
@ -1669,15 +1674,15 @@ static void sub_81C0A8C(u8 taskId, s8 b)
|
||||
return;
|
||||
|
||||
PlaySE(SE_SELECT);
|
||||
sub_81C2C38(pssData->currPageIndex);
|
||||
ClearPageWindowTilemaps(pssData->currPageIndex);
|
||||
pssData->currPageIndex += b;
|
||||
data[0] = 0;
|
||||
if (b == 1)
|
||||
SetTaskFuncWithFollowupFunc(taskId, sub_81C0B8C, gTasks[taskId].func);
|
||||
else
|
||||
SetTaskFuncWithFollowupFunc(taskId, sub_81C0CC4, gTasks[taskId].func);
|
||||
sub_81C2DE4(pssData->currPageIndex);
|
||||
sub_81C424C();
|
||||
CreateTextPrinterTask(pssData->currPageIndex);
|
||||
HidePageSpecificSprites();
|
||||
}
|
||||
|
||||
static void sub_81C0B8C(u8 taskId)
|
||||
@ -1717,8 +1722,8 @@ static void sub_81C0C68(u8 taskId)
|
||||
data[1] = 0;
|
||||
data[0] = 0;
|
||||
sub_81C1BA0();
|
||||
sub_81C2AFC(pssData->currPageIndex);
|
||||
sub_81C4280();
|
||||
CreatePageWindowTilemaps(pssData->currPageIndex);
|
||||
SetTypeIcons();
|
||||
sub_81C0E24();
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
}
|
||||
@ -1766,8 +1771,8 @@ static void sub_81C0D44(u8 taskId)
|
||||
data[1] = 0;
|
||||
data[0] = 0;
|
||||
sub_81C1BA0();
|
||||
sub_81C2AFC(pssData->currPageIndex);
|
||||
sub_81C4280();
|
||||
CreatePageWindowTilemaps(pssData->currPageIndex);
|
||||
SetTypeIcons();
|
||||
sub_81C0E24();
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
}
|
||||
@ -1797,15 +1802,15 @@ static void sub_81C0E48(u8 taskId)
|
||||
sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0);
|
||||
PrintMoveDetails(move);
|
||||
PrintNewMoveDetailsOrCancelText();
|
||||
sub_81C44F0();
|
||||
SetNewMoveTypeIcon();
|
||||
schedule_bg_copy_tilemap_to_vram(0);
|
||||
schedule_bg_copy_tilemap_to_vram(1);
|
||||
schedule_bg_copy_tilemap_to_vram(2);
|
||||
sub_81C4AF8(8);
|
||||
gTasks[taskId].func = sub_81C0F44;
|
||||
gTasks[taskId].func = HandleInput_MoveSelect;
|
||||
}
|
||||
|
||||
static void sub_81C0F44(u8 taskId)
|
||||
static void HandleInput_MoveSelect(u8 taskId)
|
||||
{
|
||||
u8 id = taskId;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
@ -1883,7 +1888,7 @@ static void sub_81C1070(s16 *a, s8 b, u8 *c)
|
||||
if (move != 0)
|
||||
break;
|
||||
}
|
||||
sub_81C240C(move);
|
||||
DrawContestMoveHearts(move);
|
||||
schedule_bg_copy_tilemap_to_vram(1);
|
||||
schedule_bg_copy_tilemap_to_vram(2);
|
||||
PrintMoveDetails(move);
|
||||
@ -1930,7 +1935,7 @@ static void sub_81C11F4(u8 taskId)
|
||||
schedule_bg_copy_tilemap_to_vram(0);
|
||||
schedule_bg_copy_tilemap_to_vram(1);
|
||||
schedule_bg_copy_tilemap_to_vram(2);
|
||||
gTasks[taskId].func = sub_81C0510;
|
||||
gTasks[taskId].func = HandleInput;
|
||||
}
|
||||
|
||||
static void sub_81C129C(u8 taskId)
|
||||
@ -2003,10 +2008,10 @@ static void sub_81C13B0(u8 taskId, bool8 b)
|
||||
|
||||
move = pssData->summary.moves[pssData->firstMoveIndex];
|
||||
PrintMoveDetails(move);
|
||||
sub_81C240C(move);
|
||||
DrawContestMoveHearts(move);
|
||||
schedule_bg_copy_tilemap_to_vram(1);
|
||||
schedule_bg_copy_tilemap_to_vram(2);
|
||||
gTasks[taskId].func = sub_81C0F44;
|
||||
gTasks[taskId].func = HandleInput_MoveSelect;
|
||||
}
|
||||
|
||||
static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2)
|
||||
@ -2081,7 +2086,7 @@ static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2
|
||||
|
||||
static void sub_81C171C(u8 taskId)
|
||||
{
|
||||
sub_81C44F0();
|
||||
SetNewMoveTypeIcon();
|
||||
sub_81C4AF8(8);
|
||||
gTasks[taskId].func = sub_81C174C;
|
||||
}
|
||||
@ -2106,11 +2111,11 @@ static void sub_81C174C(u8 taskId)
|
||||
}
|
||||
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
|
||||
{
|
||||
sub_81C0A8C(taskId, -1);
|
||||
ChangePage(taskId, -1);
|
||||
}
|
||||
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
|
||||
{
|
||||
sub_81C0A8C(taskId, 1);
|
||||
ChangePage(taskId, 1);
|
||||
}
|
||||
else if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
@ -2120,7 +2125,7 @@ static void sub_81C174C(u8 taskId)
|
||||
PlaySE(SE_SELECT);
|
||||
gUnknown_0203CF21 = pssData->firstMoveIndex;
|
||||
gSpecialVar_0x8005 = gUnknown_0203CF21;
|
||||
sub_81C044C(taskId);
|
||||
BeginCloseSummaryScreen(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2135,7 +2140,7 @@ static void sub_81C174C(u8 taskId)
|
||||
PlaySE(SE_SELECT);
|
||||
gUnknown_0203CF21 = 4;
|
||||
gSpecialVar_0x8005 = 4;
|
||||
sub_81C044C(taskId);
|
||||
BeginCloseSummaryScreen(taskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2191,7 +2196,7 @@ static void sub_81C1940(u8 taskId)
|
||||
ClearWindowTilemap(13);
|
||||
move = pssData->summary.moves[pssData->firstMoveIndex];
|
||||
gTasks[taskId].func = sub_81C174C;
|
||||
sub_81C0A8C(taskId, -1);
|
||||
ChangePage(taskId, -1);
|
||||
sub_81C1DA4(9, -2);
|
||||
sub_81C1EFC(9, -2, move);
|
||||
}
|
||||
@ -2205,7 +2210,7 @@ static void sub_81C1940(u8 taskId)
|
||||
ClearWindowTilemap(13);
|
||||
move = pssData->summary.moves[pssData->firstMoveIndex];
|
||||
gTasks[taskId].func = sub_81C174C;
|
||||
sub_81C0A8C(taskId, 1);
|
||||
ChangePage(taskId, 1);
|
||||
sub_81C1DA4(9, -2);
|
||||
sub_81C1EFC(9, -2, move);
|
||||
}
|
||||
@ -2415,7 +2420,7 @@ static void sub_81C1F80(u8 taskId)
|
||||
{
|
||||
if (pssData->currPageIndex == 3 && FuncIsActiveTask(sub_81C0B8C) == 0)
|
||||
PutWindowTilemap(15);
|
||||
sub_81C240C(data[2]);
|
||||
DrawContestMoveHearts(data[2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2566,7 +2571,7 @@ static void DrawExperienceProgressBar(struct Pokemon *unused)
|
||||
schedule_bg_copy_tilemap_to_vram(2);
|
||||
}
|
||||
|
||||
static void sub_81C240C(u16 move)
|
||||
static void DrawContestMoveHearts(u16 move)
|
||||
{
|
||||
u16 *tilemap = pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1];
|
||||
u8 i;
|
||||
@ -2618,7 +2623,7 @@ static void sub_81C2524(void)
|
||||
ChangeBgX(3, 0, 0);
|
||||
}
|
||||
|
||||
static void sub_81C2554(void)
|
||||
static void ResetWindows(void)
|
||||
{
|
||||
u8 i;
|
||||
InitWindows(gUnknown_0861CC24);
|
||||
@ -2628,7 +2633,7 @@ static void sub_81C2554(void)
|
||||
{
|
||||
FillWindowPixelBuffer(i, 0);
|
||||
}
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 0; i < ARRAY_COUNT(pssData->windowIds); i++)
|
||||
{
|
||||
pssData->windowIds[i] = 0xFF;
|
||||
}
|
||||
@ -2782,7 +2787,7 @@ static void PrintPageNamesAndStatsPageToWindows(void)
|
||||
SummaryScreen_PrintTextOnWindow(15, gText_Jam, 0, 17, 0, 1);
|
||||
}
|
||||
|
||||
static void sub_81C2AFC(u8 a)
|
||||
static void CreatePageWindowTilemaps(u8 page)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
@ -2791,22 +2796,22 @@ static void sub_81C2AFC(u8 a)
|
||||
ClearWindowTilemap(2);
|
||||
ClearWindowTilemap(3);
|
||||
|
||||
switch (a)
|
||||
switch (page)
|
||||
{
|
||||
case 0:
|
||||
case PSS_PAGE_INFO:
|
||||
PutWindowTilemap(0);
|
||||
PutWindowTilemap(4);
|
||||
if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE)
|
||||
PutWindowTilemap(8);
|
||||
PutWindowTilemap(9);
|
||||
break;
|
||||
case 1:
|
||||
case PSS_PAGE_SKILLS:
|
||||
PutWindowTilemap(1);
|
||||
PutWindowTilemap(10);
|
||||
PutWindowTilemap(11);
|
||||
PutWindowTilemap(12);
|
||||
break;
|
||||
case 2:
|
||||
case PSS_PAGE_BATTLE_MOVES:
|
||||
PutWindowTilemap(2);
|
||||
if (pssData->mode == PSS_MODE_SELECT_MOVE)
|
||||
{
|
||||
@ -2818,7 +2823,7 @@ static void sub_81C2AFC(u8 a)
|
||||
PutWindowTilemap(5);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
case PSS_PAGE_CONTEST_MOVES:
|
||||
PutWindowTilemap(3);
|
||||
if (pssData->mode == PSS_MODE_SELECT_MOVE)
|
||||
{
|
||||
@ -2832,7 +2837,7 @@ static void sub_81C2AFC(u8 a)
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 0; i < ARRAY_COUNT(pssData->windowIds); i++)
|
||||
{
|
||||
PutWindowTilemap(pssData->windowIds[i]);
|
||||
}
|
||||
@ -2840,23 +2845,23 @@ static void sub_81C2AFC(u8 a)
|
||||
schedule_bg_copy_tilemap_to_vram(0);
|
||||
}
|
||||
|
||||
static void sub_81C2C38(u8 a)
|
||||
static void ClearPageWindowTilemaps(u8 page)
|
||||
{
|
||||
u8 i;
|
||||
switch (a)
|
||||
switch (page)
|
||||
{
|
||||
case 0:
|
||||
case PSS_PAGE_INFO:
|
||||
ClearWindowTilemap(4);
|
||||
if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE)
|
||||
ClearWindowTilemap(8);
|
||||
ClearWindowTilemap(9);
|
||||
break;
|
||||
case 1:
|
||||
case PSS_PAGE_SKILLS:
|
||||
ClearWindowTilemap(10);
|
||||
ClearWindowTilemap(11);
|
||||
ClearWindowTilemap(12);
|
||||
break;
|
||||
case 2:
|
||||
case PSS_PAGE_BATTLE_MOVES:
|
||||
if (pssData->mode == PSS_MODE_SELECT_MOVE)
|
||||
{
|
||||
if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
|
||||
@ -2867,7 +2872,7 @@ static void sub_81C2C38(u8 a)
|
||||
ClearWindowTilemap(5);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
case PSS_PAGE_CONTEST_MOVES:
|
||||
if (pssData->mode == PSS_MODE_SELECT_MOVE)
|
||||
{
|
||||
if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
|
||||
@ -2880,7 +2885,7 @@ static void sub_81C2C38(u8 a)
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 0; i < ARRAY_COUNT(pssData->windowIds); i++)
|
||||
{
|
||||
SummaryScreen_RemoveWindowByIndex(i);
|
||||
}
|
||||
@ -2910,23 +2915,23 @@ static void SummaryScreen_RemoveWindowByIndex(u8 windowIndex)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C2D9C(u8 pageIndex)
|
||||
static void PrintPageSpecificText(u8 pageIndex)
|
||||
{
|
||||
u16 i;
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 0; i < ARRAY_COUNT(pssData->windowIds); i++)
|
||||
{
|
||||
if (pssData->windowIds[i] != 0xFF)
|
||||
FillWindowPixelBuffer(pssData->windowIds[i], 0);
|
||||
}
|
||||
gUnknown_0861CE54[pageIndex]();
|
||||
sTextPrinterFunctions[pageIndex]();
|
||||
}
|
||||
|
||||
static void sub_81C2DE4(u8 pageIndex)
|
||||
static void CreateTextPrinterTask(u8 pageIndex)
|
||||
{
|
||||
CreateTask(gUnknown_0861CE64[pageIndex], 16);
|
||||
CreateTask(sTextPrinterTasks[pageIndex], 16);
|
||||
}
|
||||
|
||||
static void sub_81C2E00(void)
|
||||
static void PrintInfoPageText(void)
|
||||
{
|
||||
if (pssData->summary.isEgg)
|
||||
{
|
||||
@ -2946,7 +2951,7 @@ static void sub_81C2E00(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C2E40(u8 taskId)
|
||||
static void Task_PrintInfoPage(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
switch (data[0])
|
||||
@ -3074,7 +3079,7 @@ static void PrintMonTrainerMemo(void)
|
||||
|
||||
static void BufferNatureString(void)
|
||||
{
|
||||
struct UnkSummaryStruct *sumStruct = pssData;
|
||||
struct PssData *sumStruct = pssData;
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gNatureNamePointers[sumStruct->summary.nature]);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, gText_EmptyString5);
|
||||
}
|
||||
@ -3200,7 +3205,7 @@ static void PrintEggMemo(void)
|
||||
SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), text, 0, 1, 0, 0);
|
||||
}
|
||||
|
||||
static void sub_81C3530(void)
|
||||
static void PrintSkillsPageText(void)
|
||||
{
|
||||
PrintHeldItemName();
|
||||
PrintRibbonCount();
|
||||
@ -3211,7 +3216,7 @@ static void sub_81C3530(void)
|
||||
PrintExpPointsNextLevel();
|
||||
}
|
||||
|
||||
static void sub_81C3554(u8 taskId)
|
||||
static void Task_PrintSkillsPage(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
@ -3357,7 +3362,7 @@ static void PrintExpPointsNextLevel(void)
|
||||
SummaryScreen_PrintTextOnWindow(windowId, gStringVar1, offset, 17, 0, 0);
|
||||
}
|
||||
|
||||
static void sub_81C3984(void)
|
||||
static void PrintBattleMoves(void)
|
||||
{
|
||||
PrintMoveNameAndPP(0);
|
||||
PrintMoveNameAndPP(1);
|
||||
@ -3379,7 +3384,7 @@ static void sub_81C3984(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C39F0(u8 taskId)
|
||||
static void Task_PrintBattleMoves(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
@ -3430,7 +3435,7 @@ static void PrintMoveNameAndPP(u8 moveIndex)
|
||||
u32 ppState;
|
||||
const u8 *text;
|
||||
u32 offset;
|
||||
struct UnkSummaryStruct *summaryStruct = pssData;
|
||||
struct PssData *summaryStruct = pssData;
|
||||
u8 moveNameWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0);
|
||||
u8 ppValueWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 1);
|
||||
u16 move = summaryStruct->summary.moves[moveIndex];
|
||||
@ -3493,7 +3498,7 @@ static void PrintMovePowerAndAccuracy(u16 moveIndex)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C3D08(void)
|
||||
static void PrintContestMoves(void)
|
||||
{
|
||||
PrintMoveNameAndPP(0);
|
||||
PrintMoveNameAndPP(1);
|
||||
@ -3507,7 +3512,7 @@ static void sub_81C3D08(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C3D54(u8 taskId)
|
||||
static void Task_PrintContestMoves(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
s16 dataa = data[0] - 1;
|
||||
@ -3641,11 +3646,11 @@ static void PrintHMMovesCantBeForgotten(void)
|
||||
SummaryScreen_PrintTextOnWindow(windowId, gText_HMMovesCantBeForgotten2, 6, 1, 0, 0);
|
||||
}
|
||||
|
||||
static void sub_81C4190(void)
|
||||
static void ResetSpriteIds(void)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < 28; i++)
|
||||
for (i = 0; i < ARRAY_COUNT(pssData->spriteIds); i++)
|
||||
{
|
||||
pssData->spriteIds[i] = 0xFF;
|
||||
}
|
||||
@ -3660,41 +3665,42 @@ static void DestroySpriteInArray(u8 spriteArrayId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C4204(u8 spriteArrayId, bool8 invisible)
|
||||
static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible)
|
||||
{
|
||||
gSprites[pssData->spriteIds[spriteArrayId]].invisible = invisible;
|
||||
}
|
||||
|
||||
static void sub_81C424C(void)
|
||||
static void HidePageSpecificSprites(void)
|
||||
{
|
||||
// Keeps Pokémon, caught ball and status sprites visible.
|
||||
u8 i;
|
||||
|
||||
for (i = 3; i < 28; i++)
|
||||
for (i = 3; i < ARRAY_COUNT(pssData->spriteIds); i++)
|
||||
{
|
||||
if (pssData->spriteIds[i] != 0xFF)
|
||||
sub_81C4204(i, TRUE);
|
||||
SetSpriteInvisibility(i, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C4280(void)
|
||||
static void SetTypeIcons(void)
|
||||
{
|
||||
switch (pssData->currPageIndex)
|
||||
{
|
||||
case 0:
|
||||
sub_81C43A0();
|
||||
case PSS_PAGE_INFO:
|
||||
SetMonTypeIcons();
|
||||
break;
|
||||
case 2:
|
||||
sub_81C4420();
|
||||
sub_81C44F0();
|
||||
case PSS_PAGE_BATTLE_MOVES:
|
||||
SetMoveTypeIcons();
|
||||
SetNewMoveTypeIcon();
|
||||
break;
|
||||
case 3:
|
||||
sub_81C4484();
|
||||
sub_81C44F0();
|
||||
case PSS_PAGE_CONTEST_MOVES:
|
||||
SetContestMoveTypeIcons();
|
||||
SetNewMoveTypeIcon();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C42C8(void)
|
||||
static void CreateMoveTypeIcons(void)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
@ -3703,7 +3709,7 @@ static void sub_81C42C8(void)
|
||||
if (pssData->spriteIds[i] == 0xFF)
|
||||
pssData->spriteIds[i] = CreateSprite(&sSpriteTemplate_MoveTypes, 0, 0, 2);
|
||||
|
||||
sub_81C4204(i, TRUE);
|
||||
SetSpriteInvisibility(i, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3714,16 +3720,16 @@ static void SetMoveTypeSpritePosAndType(u8 typeId, u8 x, u8 y, u8 spriteArrayId)
|
||||
sprite->oam.paletteNum = sMoveTypeToOamPaletteNum[typeId];
|
||||
sprite->pos1.x = x + 16;
|
||||
sprite->pos1.y = y + 8;
|
||||
sub_81C4204(spriteArrayId, FALSE);
|
||||
SetSpriteInvisibility(spriteArrayId, FALSE);
|
||||
}
|
||||
|
||||
static void sub_81C43A0(void)
|
||||
static void SetMonTypeIcons(void)
|
||||
{
|
||||
struct PokeSummary *summary = &pssData->summary;
|
||||
if (summary->isEgg)
|
||||
{
|
||||
SetMoveTypeSpritePosAndType(TYPE_MYSTERY, 120, 48, 3);
|
||||
sub_81C4204(4, TRUE);
|
||||
SetSpriteInvisibility(4, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3731,16 +3737,16 @@ static void sub_81C43A0(void)
|
||||
if (gBaseStats[summary->species].type1 != gBaseStats[summary->species].type2)
|
||||
{
|
||||
SetMoveTypeSpritePosAndType(gBaseStats[summary->species].type2, 0xA0, 0x30, 4);
|
||||
sub_81C4204(4, FALSE);
|
||||
SetSpriteInvisibility(4, FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_81C4204(4, TRUE);
|
||||
SetSpriteInvisibility(4, TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C4420(void)
|
||||
static void SetMoveTypeIcons(void)
|
||||
{
|
||||
u8 i;
|
||||
struct PokeSummary *summary = &pssData->summary;
|
||||
@ -3749,11 +3755,11 @@ static void sub_81C4420(void)
|
||||
if (summary->moves[i] != MOVE_NONE)
|
||||
SetMoveTypeSpritePosAndType(gBattleMoves[summary->moves[i]].type, 0x55, 0x20 + (i * 0x10), i + 3);
|
||||
else
|
||||
sub_81C4204(i + 3, TRUE);
|
||||
SetSpriteInvisibility(i + 3, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C4484(void)
|
||||
static void SetContestMoveTypeIcons(void)
|
||||
{
|
||||
u8 i;
|
||||
struct PokeSummary *summary = &pssData->summary;
|
||||
@ -3762,15 +3768,15 @@ static void sub_81C4484(void)
|
||||
if (summary->moves[i] != MOVE_NONE)
|
||||
SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[summary->moves[i]].contestCategory, 0x55, 0x20 + (i * 0x10), i + 3);
|
||||
else
|
||||
sub_81C4204(i + 3, TRUE);
|
||||
SetSpriteInvisibility(i + 3, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C44F0(void)
|
||||
static void SetNewMoveTypeIcon(void)
|
||||
{
|
||||
if (pssData->newMove == MOVE_NONE)
|
||||
{
|
||||
sub_81C4204(7, TRUE);
|
||||
SetSpriteInvisibility(7, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3800,7 +3806,7 @@ static void sub_81C4568(u8 a0, u8 a1)
|
||||
sprite2->animEnded = FALSE;
|
||||
}
|
||||
|
||||
static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1)
|
||||
static u8 CreatePokemonSprite(struct Pokemon *mon, s16 *a1)
|
||||
{
|
||||
const struct CompressedSpritePalette *pal;
|
||||
struct PokeSummary *summary = &pssData->summary;
|
||||
@ -3847,17 +3853,17 @@ static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1)
|
||||
}
|
||||
}
|
||||
(*a1)++;
|
||||
return -1;
|
||||
return 0xFF;
|
||||
case 1:
|
||||
pal = GetMonSpritePalStructFromOtIdPersonality(summary->species2, summary->OTID, summary->pid);
|
||||
LoadCompressedSpritePalette(pal);
|
||||
SetMultiuseSpriteTemplateToPokemon(pal->tag, 1);
|
||||
(*a1)++;
|
||||
return -1;
|
||||
return 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81C4778(void)
|
||||
static void PlayMonCry(void)
|
||||
{
|
||||
struct PokeSummary *summary = &pssData->summary;
|
||||
if (!summary->isEgg)
|
||||
@ -3883,7 +3889,7 @@ static u8 sub_81C47B4(struct Pokemon *unused)
|
||||
|
||||
sprite->data[0] = summary->species2;
|
||||
sprite->data[2] = 0;
|
||||
gSprites[spriteId].callback = sub_81C4844;
|
||||
gSprites[spriteId].callback = SpriteCB_Pokemon;
|
||||
sprite->oam.priority = 0;
|
||||
|
||||
if (!IsMonSpriteNotFlipped(summary->species2))
|
||||
@ -3898,14 +3904,14 @@ static u8 sub_81C47B4(struct Pokemon *unused)
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
static void sub_81C4844(struct Sprite *sprite)
|
||||
static void SpriteCB_Pokemon(struct Sprite *sprite)
|
||||
{
|
||||
struct PokeSummary *summary = &pssData->summary;
|
||||
|
||||
if (!gPaletteFade.active && sprite->data[2] != 1)
|
||||
{
|
||||
sprite->data[1] = IsMonSpriteNotFlipped(sprite->data[0]);
|
||||
sub_81C4778();
|
||||
PlayMonCry();
|
||||
PokemonSummaryDoMonAnimation(sprite, sprite->data[0], summary->isEgg);
|
||||
}
|
||||
}
|
||||
@ -4000,11 +4006,11 @@ static void CreateSetStatusSprite(void)
|
||||
if (anim != 0)
|
||||
{
|
||||
StartSpriteAnim(&gSprites[*spriteId], anim - 1);
|
||||
sub_81C4204(2, FALSE);
|
||||
SetSpriteInvisibility(2, FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_81C4204(2, TRUE);
|
||||
SetSpriteInvisibility(2, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user