mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-10 14:01:52 -05:00
107 lines
2.7 KiB
C
107 lines
2.7 KiB
C
#include "global.h"
|
|
#include "malloc.h"
|
|
#include "menu.h"
|
|
#include "malloc.h"
|
|
|
|
static EWRAM_DATA u8 sHelpMessageWindowId = 0;
|
|
|
|
const u8 gHelpMessageWindow_Gfx[] = INCBIN_U8("graphics/help_system/msg_window.4bpp");
|
|
|
|
static const struct WindowTemplate sHelpMessageWindowTemplate = {
|
|
.bg = 0,
|
|
.tilemapLeft = 0,
|
|
.tilemapTop = 15,
|
|
.width = 30,
|
|
.height = 5,
|
|
.paletteNum = 15,
|
|
.baseBlock = 0x08F
|
|
};
|
|
|
|
void MapNamePopupWindowIdSetDummy(void)
|
|
{
|
|
sHelpMessageWindowId = WINDOW_NONE;
|
|
}
|
|
|
|
u8 CreateHelpMessageWindow(void)
|
|
{
|
|
if (sHelpMessageWindowId == WINDOW_NONE)
|
|
{
|
|
sHelpMessageWindowId = AddWindow(&sHelpMessageWindowTemplate);
|
|
PutWindowTilemap(sHelpMessageWindowId);
|
|
}
|
|
return sHelpMessageWindowId;
|
|
}
|
|
|
|
void DestroyHelpMessageWindow(u8 a0)
|
|
{
|
|
if (sHelpMessageWindowId != WINDOW_NONE)
|
|
{
|
|
FillWindowPixelBuffer(sHelpMessageWindowId, PIXEL_FILL(0));
|
|
ClearWindowTilemap(sHelpMessageWindowId);
|
|
|
|
if (a0)
|
|
CopyWindowToVram(sHelpMessageWindowId, a0);
|
|
|
|
RemoveWindow(sHelpMessageWindowId);
|
|
sHelpMessageWindowId = WINDOW_NONE;
|
|
}
|
|
}
|
|
|
|
// Creates the bottom bar window that displays help text for e.g. the options in the Start menu
|
|
void DrawHelpMessageWindowTilesById(u8 windowId)
|
|
{
|
|
const u8 *ptr = gHelpMessageWindow_Gfx;
|
|
u8 *buffer;
|
|
u8 i, j;
|
|
u8 width, height;
|
|
u8 tileId;
|
|
|
|
width = (u8)GetWindowAttribute(windowId, WINDOW_WIDTH);
|
|
height = (u8)GetWindowAttribute(windowId, WINDOW_HEIGHT);
|
|
|
|
buffer = (u8 *)Alloc(32 * width * height);
|
|
|
|
if (buffer != NULL)
|
|
{
|
|
for (i = 0; i < height; i++)
|
|
{
|
|
for (j = 0; j < width; j++)
|
|
{
|
|
if (i == 0) // Top row
|
|
tileId = 0;
|
|
else if (i == height - 1) // Bottom row
|
|
tileId = 14;
|
|
else // Middle row
|
|
tileId = 5;
|
|
CpuCopy32(
|
|
&ptr[tileId * 32],
|
|
&buffer[(i * width + j) * 32],
|
|
32
|
|
);
|
|
}
|
|
}
|
|
CopyToWindowPixelBuffer(windowId, buffer, width * height * 32, 0);
|
|
Free(buffer);
|
|
}
|
|
}
|
|
|
|
static void DrawHelpMessageWindowTiles(void)
|
|
{
|
|
DrawHelpMessageWindowTilesById(sHelpMessageWindowId);
|
|
}
|
|
|
|
static const u8 sHelpMessageTextColors[3] = {TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_1, TEXT_COLOR_DARK_GRAY};
|
|
|
|
static void PrintHelpMessageText(const u8 *text)
|
|
{
|
|
AddTextPrinterParameterized4(sHelpMessageWindowId, FONT_NORMAL, 2, 5, 1, 1, sHelpMessageTextColors, -1, text);
|
|
}
|
|
|
|
void PrintTextOnHelpMessageWindow(const u8 *text, u8 mode)
|
|
{
|
|
DrawHelpMessageWindowTiles();
|
|
PrintHelpMessageText(text);
|
|
if (mode)
|
|
CopyWindowToVram(sHelpMessageWindowId, mode);
|
|
}
|