summaryrefslogtreecommitdiff
path: root/src/map_name_popup.c
blob: 7e4aa60e5b4b0b2d52e265b7ca3a0e7c66dfccc5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include "global.h"
#include "map_name_popup.h"
#include "event_data.h"
#include "menu.h"
#include "region_map.h"
#include "task.h"

EWRAM_DATA static u8 sTaskId = 0;

static void Task_MapNamePopup(u8);
static void DrawMapNamePopup(void);

bool8 unref_sub_80A2F44(void)
{
    CloseMenu();
    ShowMapNamePopup();
    return 1;
}

void ShowMapNamePopup(void)
{
    if (FlagGet(FLAG_HIDE_MAP_NAME_POPUP) != TRUE)
    {
        if (!FuncIsActiveTask(Task_MapNamePopup))
        {
            sTaskId = CreateTask(Task_MapNamePopup, 90);
            REG_BG0VOFS = 32;
            DrawMapNamePopup();
            gTasks[sTaskId].data[0] = 0;
            gTasks[sTaskId].data[2] = 32;
        }
        else
        {
            if (gTasks[sTaskId].data[0] != 2)
                gTasks[sTaskId].data[0] = 2;
            gTasks[sTaskId].data[3] = 1;
        }
    }
}

void Task_MapNamePopup(u8 taskId)
{
    struct Task *task = &gTasks[taskId];

    switch (task->data[0])
    {
    case 0:
        task->data[2] -= 2;
        if (task->data[2] <= 0 )
        {
            task->data[0] = 1;
            gTasks[sTaskId].data[1] = 0;
        }
        break;
    case 1:
        task->data[1]++;
        if (task->data[1] > 120 )
        {
            task->data[1] = 0;
            task->data[0] = 2;
        }
        break;
    case 2:
        task->data[2] += 2;
        if (task->data[2] > 31)
        {
            if (task->data[3])
            {
                DrawMapNamePopup();
                task->data[0] = 0;
                task->data[3] = 0;
            }
            else
            {
                task->data[0] = 4;
                return;
            }
        }
        break;
    case 4:
        HideMapNamePopup();
        return;
    }

    REG_BG0VOFS = task->data[2];
}

void HideMapNamePopup(void)
{
    if (FuncIsActiveTask(Task_MapNamePopup))
    {
        Menu_LoadStdFrameGraphics();
        Menu_EraseWindowRect(0, 0, 13, 3);
        REG_BG0VOFS = 0;
        DestroyTask(sTaskId);
    }
}

void DrawMapNamePopup(void)
{
    u8 name[20];

    Menu_LoadStdFrameGraphicsOverrideStyle(0);
    GetMapSectionName(name, gMapHeader.regionMapSectionId, 0);
    Menu_DrawStdWindowFrame(0, 0, 13, 3);
    MenuPrint_Centered(name, 1, 1, 0x60);
}