diff options
| author | Eblo <7004497+Eblo@users.noreply.github.com> | 2025-10-29 12:57:35 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-29 12:57:35 -0400 |
| commit | 0209ea3b0f64fc5b78721cc2d90c1a55d21b49b1 (patch) | |
| tree | 992a5e0cbb4c8f02f44380b2ad774f44655a62fa | |
| parent | e5db91da04b507c194c25fce45d5c87cb992123c (diff) | |
Add frogs to the item tracker (#1307)
| -rw-r--r-- | mm/2s2h/Enhancements/Trackers/ItemTracker.cpp | 48 | ||||
| -rw-r--r-- | mm/2s2h/Enhancements/Trackers/ItemTracker.h | 7 | ||||
| -rw-r--r-- | mm/2s2h/Enhancements/Trackers/ItemTrackerSettings.cpp | 1 |
3 files changed, 56 insertions, 0 deletions
diff --git a/mm/2s2h/Enhancements/Trackers/ItemTracker.cpp b/mm/2s2h/Enhancements/Trackers/ItemTracker.cpp index 1433dfd29..b39066d1b 100644 --- a/mm/2s2h/Enhancements/Trackers/ItemTracker.cpp +++ b/mm/2s2h/Enhancements/Trackers/ItemTracker.cpp @@ -254,6 +254,11 @@ static constexpr std::array<const char*, 4> sStrayFairyTextures = { static constexpr uint16_t sSmallKeyCounts[4] = { 1, 3, 1, 4 }; +static constexpr FrogInfo sFrogInfos[4] = { { WEEKEVENTREG_32_40, "Cyan" }, + { WEEKEVENTREG_32_80, "Pink" }, + { WEEKEVENTREG_33_01, "Blue" }, + { WEEKEVENTREG_33_02, "White" } }; + bool ItemTrackerWindow::HasAmmoCount(int itemId) { switch (itemId) { case ITEM_BOW: @@ -660,6 +665,35 @@ int ItemTrackerWindow::DrawStrayFairies(int columns, int prevDrawnColumns) { return 1; } +int ItemTrackerWindow::DrawFrogs(int columns, int prevDrawnColumns) { + int topPadding = 0; + + for (size_t i = 0; i < 4; i++) { + int row = prevDrawnColumns + (i / columns); + int column = i % columns; + ImVec2 pos = ImVec2((column * (mIconSize + mIconSpacing) + 8.0f), + (row * (mIconSize + mIconSpacing)) + 8.0f + topPadding); + FrogInfo frogInfo = sFrogInfos[i]; + + ImGui::SetCursorPos(pos); + ImGui::BeginGroup(); + DrawItem((char*)gItemIconDonGeroMaskTex, !CHECK_WEEKEVENTREG(frogInfo.flag), mIconSize); + + ImVec2 finalPos = ImGui::GetCursorPos(); + const char* text = frogInfo.name; + ImGui::SetWindowFontScale(mTextSize / 13.0f); + + float x = finalPos.x + (mIconSize / 2.0f) - (ImGui::CalcTextSize(text).x / 2.0f); + float y = finalPos.y - (mTextOffset / 36.0f) * mIconSize - 16 * (mTextSize / 13.0f); + + // Normalize the offset based on the icon being 36x36 to account for larger icons. + ImGui::SetCursorPos({ x, y }); + ImGui::Text("%s", text); + ImGui::EndGroup(); + } + return 1; +} + int ItemTrackerWindow::DrawGoldSkulltulas(int columns, int prevDrawnColumns) { int topPadding = 0; @@ -900,6 +934,20 @@ void ItemTrackerWindow::DrawItemsInRows(int columns) { } } + if (mItemDrawModes[SECTION_FROGS] != ItemTrackerDisplayType::Hidden) { + int drawPos = mainWindowPos; + if (mItemDrawModes[SECTION_FROGS] == ItemTrackerDisplayType::Separate) { + drawPos = 0; + BeginFloatingWindows("Frogs"); + } + advancedBy = DrawFrogs(4, drawPos); + if (mItemDrawModes[SECTION_FROGS] == ItemTrackerDisplayType::Separate) { + EndFloatingWindows(); + } else { + mainWindowPos += advancedBy; + } + } + if (mItemDrawModes[SECTION_GOLD_SKULLTULAS] != ItemTrackerDisplayType::Hidden) { int drawPos = mainWindowPos; if (mItemDrawModes[SECTION_GOLD_SKULLTULAS] == ItemTrackerDisplayType::Separate) { diff --git a/mm/2s2h/Enhancements/Trackers/ItemTracker.h b/mm/2s2h/Enhancements/Trackers/ItemTracker.h index 7aea95f98..f5ac8812d 100644 --- a/mm/2s2h/Enhancements/Trackers/ItemTracker.h +++ b/mm/2s2h/Enhancements/Trackers/ItemTracker.h @@ -22,6 +22,7 @@ typedef enum { SECTION_STRAY_FAIRIES, SECTION_GOLD_SKULLTULAS, SECTION_DUNGEON, + SECTION_FROGS, SECTION_MAX, } ItemTrackerSection; @@ -32,6 +33,11 @@ typedef enum { DrawCapacityMax, } ItemTrackerCapacityMode; +typedef struct FrogInfo { + uint16_t flag; + const char* name; +} FrogInfo; + class ItemTrackerWindow : public Ship::GuiWindow { typedef struct AmmoInfo { uint8_t cur; @@ -77,6 +83,7 @@ class ItemTrackerWindow : public Ship::GuiWindow { int DrawMisc(int columns, int startAt); int DrawSongs(int columns, int startAt); int DrawStrayFairies(int columns, int startAt); + int DrawFrogs(int columns, int prevDrawnColumns); int DrawGoldSkulltulas(int columsn, int startAt); void DrawNote(size_t songIndex, bool drawFaded); void DrawOwlFace(bool drawFaded); diff --git a/mm/2s2h/Enhancements/Trackers/ItemTrackerSettings.cpp b/mm/2s2h/Enhancements/Trackers/ItemTrackerSettings.cpp index 795e9bb3c..ce254f057 100644 --- a/mm/2s2h/Enhancements/Trackers/ItemTrackerSettings.cpp +++ b/mm/2s2h/Enhancements/Trackers/ItemTrackerSettings.cpp @@ -70,6 +70,7 @@ void ItemTrackerSettingsWindow::DrawElement() { UIWidgets::Combobox("Miscellaneous", mItemTrackerWindow->GetDrawModePtr(SECTION_MISC), displayTypes); UIWidgets::Combobox("Songs", mItemTrackerWindow->GetDrawModePtr(SECTION_SONGS), displayTypes); UIWidgets::Combobox("Stray Fairies", mItemTrackerWindow->GetDrawModePtr(SECTION_STRAY_FAIRIES), displayTypes); + UIWidgets::Combobox("Frogs", mItemTrackerWindow->GetDrawModePtr(SECTION_FROGS), displayTypes); UIWidgets::Combobox("Gold Skulltulas", mItemTrackerWindow->GetDrawModePtr(SECTION_GOLD_SKULLTULAS), displayTypes); UIWidgets::Combobox("Dungeon Items", mItemTrackerWindow->GetDrawModePtr(SECTION_DUNGEON), displayTypes); |
