summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEblo <7004497+Eblo@users.noreply.github.com>2025-10-29 12:57:35 -0400
committerGitHub <noreply@github.com>2025-10-29 12:57:35 -0400
commit0209ea3b0f64fc5b78721cc2d90c1a55d21b49b1 (patch)
tree992a5e0cbb4c8f02f44380b2ad774f44655a62fa
parente5db91da04b507c194c25fce45d5c87cb992123c (diff)
Add frogs to the item tracker (#1307)
-rw-r--r--mm/2s2h/Enhancements/Trackers/ItemTracker.cpp48
-rw-r--r--mm/2s2h/Enhancements/Trackers/ItemTracker.h7
-rw-r--r--mm/2s2h/Enhancements/Trackers/ItemTrackerSettings.cpp1
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);