From bf9236dc286acdd0ebcde9a89e947054f135a627 Mon Sep 17 00:00:00 2001 From: Teddy Heidmann Date: Tue, 11 Aug 2026 13:04:33 -0700 Subject: [PATCH] treasureDraw --- include/d/d_menu_dmap.h | 12 ++++----- src/d/d_menu_dmap.cpp | 54 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 59 insertions(+), 7 deletions(-) diff --git a/include/d/d_menu_dmap.h b/include/d/d_menu_dmap.h index aca30cfec..edc3df4ff 100644 --- a/include/d/d_menu_dmap.h +++ b/include/d/d_menu_dmap.h @@ -18,12 +18,12 @@ struct ResTIMG; struct dMap_pane_c { /* 0x00 */ J2DPicture* ppane; - /* 0x04 */ f32 field_0x04; - /* 0x08 */ f32 field_0x08; - /* 0x0C */ f32 field_0x0C; - /* 0x10 */ f32 field_0x10; - /* 0x14 */ u8 padding_0x14[2]; - /* 0x16 */ u8 field_0x16; + /* 0x04 */ f32 posX; + /* 0x08 */ f32 posY; + /* 0x0C */ f32 width; + /* 0x10 */ f32 height; + /* 0x14 */ s16 angle; + /* 0x16 */ u8 exists; /* 0x17 */ u8 padding_0x17[1]; } /* Size: 0x18 */; diff --git a/src/d/d_menu_dmap.cpp b/src/d/d_menu_dmap.cpp index a788c4351..fbb585533 100644 --- a/src/d/d_menu_dmap.cpp +++ b/src/d/d_menu_dmap.cpp @@ -404,7 +404,59 @@ void dMenu_Dmap_c::treasureSet() { /* 801AAE10-801AB20C .text treasureDraw__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::treasureDraw() { - /* Nonmatching */ + f32 offsetY = mCurFloorMapY - (mMpp1PosY + (mCurFloor - 0x80) * (mMpp1SizeY + mMppGapY)); + f32 drawOffsetY = offsetY + mMapDrawOffsetY; + + for (int i = 0; i < 32; i++) { + if (treasure_p[i].exists != 0) { + f32 y = treasure_p[i].posY; + f32 scale = 0.5f; + if (y + offsetY > mMpp1PosY - mMpp1SizeY * scale && y + offsetY < mMpp1PosY + mMpp1SizeY * scale) { + treasure_p[i].ppane->draw( + treasure_p[i].posX, y + drawOffsetY, + treasure_p[i].width, treasure_p[i].height, + false, false, false); + treasure_p[i].ppane->mAlpha = mCc05pane.mNowAlpha; + } + } + } + + for (int i = 0; i < 32; i++) { + if (door_p[i].exists != 0) { + f32 y = door_p[i].posY; + f32 scale = 0.5f; + if (y + offsetY > mMpp1PosY - mMpp1SizeY * scale && y + offsetY < mMpp1PosY + mMpp1SizeY * scale) { + door_p[i].ppane->draw( + door_p[i].posX, y + drawOffsetY, + door_p[i].width, door_p[i].height, + false, false, false); + door_p[i].ppane->rotate( + door_p[i].width * scale, + door_p[i].height * scale, + ROTATE_Z, + door_p[i].angle * 0.005493164f); + door_p[i].ppane->mAlpha = mCc05pane.mNowAlpha; + } + } + } + + if (npc_p.exists != 0) { + f32 y = npc_p.posY; + f32 scale = 0.5f; + if (y + offsetY > mMpp1PosY - mMpp1SizeY * scale && y + offsetY < mMpp1PosY + mMpp1SizeY * scale) { + npc_p.ppane->draw(npc_p.posX, y + drawOffsetY, npc_p.width, npc_p.height, false, false, false); + npc_p.ppane->mAlpha = mCc05pane.mNowAlpha; + } + } + + if (boss_p.exists != 0) { + f32 y = boss_p.posY; + f32 scale = 0.5f; + if (y + offsetY > mMpp1PosY - mMpp1SizeY * scale && y + offsetY < mMpp1PosY + mMpp1SizeY * scale) { + boss_p.ppane->draw(boss_p.posX, y + drawOffsetY, boss_p.width, boss_p.height, false, false, false); + boss_p.ppane->mAlpha = mCc05pane.mNowAlpha; + } + } } /* 801AB20C-801AB464 .text paneMove__12dMenu_Dmap_cFf */