Worked with ShinyDragonHunter to get signpost working
This commit is contained in:
parent
a0c5e5511c
commit
389f4e4180
3 changed files with 125 additions and 3 deletions
Binary file not shown.
Before Width: | Height: | Size: 164 B After Width: | Height: | Size: 193 B |
126
src/menu.c
126
src/menu.c
|
@ -17,6 +17,7 @@
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
#include "string_util.h"
|
#include "string_util.h"
|
||||||
#include "strings.h"
|
#include "strings.h"
|
||||||
|
#include "script.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "text_window.h"
|
#include "text_window.h"
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
@ -48,6 +49,7 @@ struct Menu
|
||||||
|
|
||||||
static u16 AddWindowParameterized(u8, u8, u8, u8, u8, u8, u16);
|
static u16 AddWindowParameterized(u8, u8, u8, u8, u8, u8, u16);
|
||||||
static void WindowFunc_DrawStandardFrame(u8, u8, u8, u8, u8, u8);
|
static void WindowFunc_DrawStandardFrame(u8, u8, u8, u8, u8, u8);
|
||||||
|
static void WindowFunc_DrawSignFrame(u8, u8, u8, u8, u8, u8);
|
||||||
static void WindowFunc_DrawDialogueFrame(u8, u8, u8, u8, u8, u8);
|
static void WindowFunc_DrawDialogueFrame(u8, u8, u8, u8, u8, u8);
|
||||||
static void WindowFunc_ClearStdWindowAndFrame(u8, u8, u8, u8, u8, u8);
|
static void WindowFunc_ClearStdWindowAndFrame(u8, u8, u8, u8, u8, u8);
|
||||||
static void WindowFunc_ClearDialogWindowAndFrame(u8, u8, u8, u8, u8, u8);
|
static void WindowFunc_ClearDialogWindowAndFrame(u8, u8, u8, u8, u8, u8);
|
||||||
|
@ -216,13 +218,133 @@ void LoadMessageBoxAndBorderGfx(void)
|
||||||
|
|
||||||
void LoadSignPostWindowFrameGfx(void)
|
void LoadSignPostWindowFrameGfx(void)
|
||||||
{
|
{
|
||||||
|
Menu_LoadStdPal();
|
||||||
LoadSignBoxGfx(0, DLG_WINDOW_BASE_TILE_NUM, BG_PLTT_ID(DLG_WINDOW_PALETTE_NUM));
|
LoadSignBoxGfx(0, DLG_WINDOW_BASE_TILE_NUM, BG_PLTT_ID(DLG_WINDOW_PALETTE_NUM));
|
||||||
//LoadUserWindowBorderGfx(0, STD_WINDOW_BASE_TILE_NUM, BG_PLTT_ID(STD_WINDOW_PALETTE_NUM));
|
LoadUserWindowBorderGfx(0, STD_WINDOW_BASE_TILE_NUM, BG_PLTT_ID(STD_WINDOW_PALETTE_NUM));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void WindowFunc_DrawSignFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
|
||||||
|
{
|
||||||
|
// Top left
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
DLG_WINDOW_BASE_TILE_NUM + 0,
|
||||||
|
tilemapLeft - 2,
|
||||||
|
tilemapTop - 1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
DLG_WINDOW_BASE_TILE_NUM + 1,
|
||||||
|
tilemapLeft - 1,
|
||||||
|
tilemapTop - 1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
DLG_WINDOW_BASE_TILE_NUM + 2,
|
||||||
|
tilemapLeft - 2,
|
||||||
|
tilemapTop,
|
||||||
|
1,
|
||||||
|
4,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
DLG_WINDOW_BASE_TILE_NUM + 3,
|
||||||
|
tilemapLeft - 1,
|
||||||
|
tilemapTop,
|
||||||
|
1,
|
||||||
|
4,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
|
||||||
|
// Bottom left
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 0),
|
||||||
|
tilemapLeft - 2,
|
||||||
|
tilemapTop + 4,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 1),
|
||||||
|
tilemapLeft - 1,
|
||||||
|
tilemapTop + 4,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
|
||||||
|
// Top
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
DLG_WINDOW_BASE_TILE_NUM + 4,
|
||||||
|
tilemapLeft,
|
||||||
|
tilemapTop - 1,
|
||||||
|
26,
|
||||||
|
1,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
|
||||||
|
// Top right
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
BG_TILE_H_FLIP(DLG_WINDOW_BASE_TILE_NUM + 0),
|
||||||
|
tilemapLeft + 27,
|
||||||
|
tilemapTop - 1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
BG_TILE_H_FLIP(DLG_WINDOW_BASE_TILE_NUM + 1),
|
||||||
|
tilemapLeft + 26,
|
||||||
|
tilemapTop - 1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
BG_TILE_H_FLIP(DLG_WINDOW_BASE_TILE_NUM + 2),
|
||||||
|
tilemapLeft + 27,
|
||||||
|
tilemapTop,
|
||||||
|
1,
|
||||||
|
4,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
BG_TILE_H_FLIP(DLG_WINDOW_BASE_TILE_NUM + 3),
|
||||||
|
tilemapLeft + 26,
|
||||||
|
tilemapTop,
|
||||||
|
1,
|
||||||
|
4,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
|
||||||
|
// Bottom right
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
BG_TILE_V_FLIP(BG_TILE_H_FLIP(DLG_WINDOW_BASE_TILE_NUM + 0)),
|
||||||
|
tilemapLeft + 27,
|
||||||
|
tilemapTop + 4,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
BG_TILE_V_FLIP(BG_TILE_H_FLIP(DLG_WINDOW_BASE_TILE_NUM + 1)),
|
||||||
|
tilemapLeft + 26,
|
||||||
|
tilemapTop + 4,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
|
||||||
|
// Bottom
|
||||||
|
FillBgTilemapBufferRect(bg,
|
||||||
|
BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 4),
|
||||||
|
tilemapLeft,
|
||||||
|
tilemapTop + 4,
|
||||||
|
26,
|
||||||
|
1,
|
||||||
|
DLG_WINDOW_PALETTE_NUM);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *GetWindowFunc_DialogueFrame(void)
|
||||||
|
{
|
||||||
|
return (IsMsgSignPost() ? WindowFunc_DrawSignFrame : WindowFunc_DrawDialogueFrame);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawDialogueFrame(u8 windowId, bool8 copyToVram)
|
void DrawDialogueFrame(u8 windowId, bool8 copyToVram)
|
||||||
{
|
{
|
||||||
CallWindowFunction(windowId, WindowFunc_DrawDialogueFrame);
|
CallWindowFunction(windowId, GetWindowFunc_DialogueFrame());
|
||||||
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
|
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
|
||||||
PutWindowTilemap(windowId);
|
PutWindowTilemap(windowId);
|
||||||
if (copyToVram == TRUE)
|
if (copyToVram == TRUE)
|
||||||
|
|
|
@ -100,7 +100,7 @@ void LoadMessageBoxGfx(u8 windowId, u16 destOffset, u8 palOffset)
|
||||||
void LoadSignBoxGfx(u8 windowId, u16 destOffset, u8 palOffset)
|
void LoadSignBoxGfx(u8 windowId, u16 destOffset, u8 palOffset)
|
||||||
{
|
{
|
||||||
LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gSignpostWindow_Gfx, 0x1C0, destOffset);
|
LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gSignpostWindow_Gfx, 0x1C0, destOffset);
|
||||||
LoadPalette(GetOverworldTextboxPalettePtr(), palOffset, PLTT_SIZE_4BPP);
|
LoadPalette(GetTextWindowPalette(1), palOffset, PLTT_SIZE_4BPP);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoadUserWindowBorderGfx_(u8 windowId, u16 destOffset, u8 palOffset)
|
void LoadUserWindowBorderGfx_(u8 windowId, u16 destOffset, u8 palOffset)
|
||||||
|
|
Loading…
Reference in a new issue