From 614b7f862e1a9b4fd7bef09c9ecc412e2438265d Mon Sep 17 00:00:00 2001 From: pkmnsnfrn Date: Wed, 24 Jul 2024 22:21:00 -0700 Subject: [PATCH] Working version of interactable signpost msgbox --- src/field_control_avatar.c | 16 ++++++++++++++-- src/menu.c | 12 +----------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 3c8e7a206e..df77f798ce 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -82,6 +82,7 @@ static void UpdateLetsGoEvolutionTracker(void); static bool8 UpdatePoisonStepCounter(void); #endif // OW_POISON_DAMAGE static bool8 TrySetUpWalkIntoSignpostScript(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection); +static void SetMsgSignPostAndVarFacing(u32 playerDirection); static void SetUpWalkIntoSignScript(const u8 *script, u8 playerDirection); static u8 GetFacingSignpostType(u16 metatileBehvaior, u8 direction); static const u8 *GetSignpostScriptAtMapPosition(struct MapPosition * position); @@ -379,6 +380,9 @@ static const u8 *GetInteractedBackgroundEventScript(struct MapPosition *position if (bgEvent->bgUnion.script == NULL) return EventScript_TestSignpostMsg; + if (GetFacingSignpostType(metatileBehavior, direction) != SIGNPOST_NA) + SetMsgSignPostAndVarFacing(direction); + switch (bgEvent->kind) { case BG_EVENT_PLAYER_FACING_ANY: @@ -1133,18 +1137,26 @@ static u8 GetFacingSignpostType(u16 metatileBehavior, u8 playerDirection) if (MetatileBehavior_IsPlayerFacingPokeMartSign(metatileBehavior, playerDirection) == TRUE) return SIGNPOST_POKEMART;*/ + DebugPrintf("behavior is %d",metatileBehavior); + if (MetatileBehavior_IsSignpost(metatileBehavior) == TRUE) return SIGNPOST_SCRIPTED; return SIGNPOST_NA; } +static void SetMsgSignPostAndVarFacing(u32 playerDirection) +{ + DebugPrintf("test"); + MsgSetSignPost(); + gSpecialVar_Facing = playerDirection; +} + static void SetUpWalkIntoSignScript(const u8 *script, u8 playerDirection) { - gSpecialVar_Facing = playerDirection; ScriptContext_SetupScript(script); SetWalkingIntoSignVars(); - MsgSetSignPost(); + SetMsgSignPostAndVarFacing(playerDirection); } static const u8 *GetSignpostScriptAtMapPosition(struct MapPosition *position) diff --git a/src/menu.c b/src/menu.c index 6cb9c05492..620c4d13e1 100644 --- a/src/menu.c +++ b/src/menu.c @@ -225,7 +225,6 @@ void LoadSignPostWindowFrameGfx(void) 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, @@ -254,8 +253,6 @@ static void WindowFunc_DrawSignFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 wi 1, 4, DLG_WINDOW_PALETTE_NUM); - - // Bottom left FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 0), tilemapLeft - 2, @@ -270,8 +267,6 @@ static void WindowFunc_DrawSignFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 wi 1, 1, DLG_WINDOW_PALETTE_NUM); - - // Top FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 4, tilemapLeft, @@ -279,8 +274,6 @@ static void WindowFunc_DrawSignFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 wi 26, 1, DLG_WINDOW_PALETTE_NUM); - - // Top right FillBgTilemapBufferRect(bg, BG_TILE_H_FLIP(DLG_WINDOW_BASE_TILE_NUM + 0), tilemapLeft + 27, @@ -309,8 +302,6 @@ static void WindowFunc_DrawSignFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 wi 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, @@ -325,8 +316,6 @@ static void WindowFunc_DrawSignFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 wi 1, 1, DLG_WINDOW_PALETTE_NUM); - - // Bottom FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 4), tilemapLeft, @@ -338,6 +327,7 @@ static void WindowFunc_DrawSignFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 wi static inline void *GetWindowFunc_DialogueFrame(void) { + DebugPrintf("test %d",IsMsgSignPost()); return (IsMsgSignPost() ? WindowFunc_DrawSignFrame : WindowFunc_DrawDialogueFrame); }