Files
tmc/src/subtask/subtaskLocalMapHint.c
T

97 lines
2.5 KiB
C

/**
* @file subtaskLocalMapHint.c
* @ingroup Subtasks
*
* @brief Local Map Hint Subtask
*/
#include "menu.h"
#include "subtask.h"
#include "kinstone.h"
#include "functions.h"
#include "screen.h"
#include "sound.h"
#include "common.h"
void Subtask_LocalMapHint() {
extern void (*const gUnk_08128F1C[])(void);
const struct_gUnk_08128E94* ptr;
FlushSprites();
gUnk_08128F1C[gMenu.menuType]();
ptr = &gUnk_08128E94[gMenu.field_0x3];
gScreen.bg1.yOffset = -ptr->unk5;
gScreen.bg2.yOffset = gMenu.field_0xa - (s8)ptr->unk6;
CopyOAM();
}
void sub_080A6B04(void) {
u32 bVar1;
u32 uVar2;
u32 uVar3;
u32 uVar4;
int uVar6;
u32 uVar7;
const KinstoneWorldEvent* ptr;
const WorldEvent* ptr2;
const struct_gUnk_08128E94* ptr3;
sub_080A4D34();
sub_080A4DB8(6);
ptr = &gKinstoneWorldEvents[gFuseInfo.kinstoneId];
ptr2 = &gWorldEvents[ptr->worldEventId];
bVar1 = ptr->mapMarkerIcon;
uVar3 = ptr2->_c;
uVar4 = ptr2->_e;
uVar2 = GetOverworldLocation(uVar3, uVar4)->windcrestId;
gMenu.field_0x3 = uVar2;
gGenericMenu.unk2b = 1;
sub_080A67C4(uVar2);
ShowAreaName(uVar2, 2);
SetColor(0, 0x475f);
SetColor(0x5f, 0x475f);
MemFill16(0x5001, &gBG3Buffer, sizeof(gBG3Buffer));
if ((gPlayerState.flags & PL_NO_CAP) != 0) {
uVar7 = 101;
} else {
uVar7 = 100;
}
sub_080A698C(gRoomTransition.player_status.overworld_map_x, gRoomTransition.player_status.overworld_map_y,
DRAW_DIRECT_SPRITE_INDEX, uVar7 + 0x100);
sub_080A698C(uVar3, uVar4, DRAW_DIRECT_SPRITE_INDEX, bVar1 + 100);
uVar4 = sub_080A69E0(uVar3, uVar4) >> 0x10;
ptr3 = &gUnk_08128E94[gMenu.field_0x3];
gMenu.field_0xa = 0;
if (ptr3->unk2 != 0) {
uVar6 = uVar4 - 0x3c;
if (uVar6 > 0) {
if (ptr3->unk2 < uVar6) {
uVar6 = ptr3->unk2;
}
gMenu.field_0xa = uVar6;
}
}
gMenu.transitionTimer = 30;
SetMenuType(1);
SetFade(FADE_INSTANT, 8);
}
void sub_080A6C1C(void) {
if (!gFadeControl.active) {
switch (gMenu.transitionTimer) {
case 0:
sub_080A66D0();
switch (gInput.newKeys) {
case A_BUTTON:
case B_BUTTON:
case START_BUTTON:
Subtask_Exit();
break;
}
return;
case 1:
SoundReq(SFX_103);
break;
}
gMenu.transitionTimer--;
}
}