summaryrefslogtreecommitdiff
path: root/mm/src/code
diff options
context:
space:
mode:
authorJameriquiah <42100286+Jameriquiah@users.noreply.github.com>2026-04-26 11:27:45 -0400
committerGitHub <noreply@github.com>2026-04-26 11:27:45 -0400
commit661dc37b664d1f087ee8ebdfeee467a4fe02f4e9 (patch)
tree6bce7e4730822f3588326b22335b795f35e8dea4 /mm/src/code
parent5c35f92ef9eea31449224ecf0e09fe08ca420f5b (diff)
Port SoH Cosmetics Editor UI (#1633)
* port soh cosmetics editor ui * fix wrong hearts color * fix rainbow * cosmetics editor refactor * formatting
Diffstat (limited to 'mm/src/code')
-rw-r--r--mm/src/code/z_eff_blure.c32
-rw-r--r--mm/src/code/z_lifemeter.c18
-rw-r--r--mm/src/code/z_map_disp.c2
-rw-r--r--mm/src/code/z_parameter.c35
4 files changed, 43 insertions, 44 deletions
diff --git a/mm/src/code/z_eff_blure.c b/mm/src/code/z_eff_blure.c
index f3a920737..63cdb354e 100644
--- a/mm/src/code/z_eff_blure.c
+++ b/mm/src/code/z_eff_blure.c
@@ -321,40 +321,40 @@ void EffectBlure_GetComputedValues(EffectBlure* this, s32 index, f32 ratio, Vec3
if (gPlayState != NULL) {
Player* player = GET_PLAYER(gPlayState);
if (player != NULL) {
- u8 elementId = 255;
+ const char* cosmeticId = NULL;
for (int i = 0; i < 3; i++) {
if (player->meleeWeaponEffectIndex[i] != -1 &&
this == (EffectBlure*)Effect_GetByIndex(player->meleeWeaponEffectIndex[i])) {
if (player->transformation == PLAYER_FORM_FIERCE_DEITY)
- elementId = COSMETIC_ELEMENT_TRAIL_SWORD_FIERCE_DEITY;
+ cosmeticId = COSMETIC_ID("Trails.FierceDeitySwordTrail");
else if (player->transformation == PLAYER_FORM_ZORA)
- elementId = (player->meleeWeaponAnimation == PLAYER_MWA_ZORA_PUNCH_KICK ||
- player->meleeWeaponAnimation == PLAYER_MWA_ZORA_JUMPKICK_START ||
- player->meleeWeaponAnimation == PLAYER_MWA_ZORA_JUMPKICK_FINISH)
- ? COSMETIC_ELEMENT_TRAIL_ZORA_KICK
- : COSMETIC_ELEMENT_TRAIL_ZORA_PUNCH;
+ cosmeticId = (player->meleeWeaponAnimation == PLAYER_MWA_ZORA_PUNCH_KICK ||
+ player->meleeWeaponAnimation == PLAYER_MWA_ZORA_JUMPKICK_START ||
+ player->meleeWeaponAnimation == PLAYER_MWA_ZORA_JUMPKICK_FINISH)
+ ? COSMETIC_ID("Trails.ZoraKickTrail")
+ : COSMETIC_ID("Trails.ZoraPunchTrail");
else if (player->transformation == PLAYER_FORM_DEKU)
- elementId = COSMETIC_ELEMENT_TRAIL_DEKU_SPIN;
+ cosmeticId = COSMETIC_ID("Trails.DekuSpinTrail");
else if (player->heldItemAction == PLAYER_IA_SWORD_KOKIRI)
- elementId = COSMETIC_ELEMENT_TRAIL_SWORD_KOKIRI;
+ cosmeticId = COSMETIC_ID("Trails.KokiriSwordTrail");
else if (player->heldItemAction == PLAYER_IA_SWORD_RAZOR)
- elementId = COSMETIC_ELEMENT_TRAIL_SWORD_RAZOR;
+ cosmeticId = COSMETIC_ID("Trails.RazorSwordTrail");
else if (player->heldItemAction == PLAYER_IA_SWORD_GILDED)
- elementId = COSMETIC_ELEMENT_TRAIL_SWORD_GILDED;
+ cosmeticId = COSMETIC_ID("Trails.GildedSwordTrail");
else if (player->heldItemAction == PLAYER_IA_SWORD_TWO_HANDED)
- elementId = COSMETIC_ELEMENT_TRAIL_SWORD_GREAT_FAIRY;
+ cosmeticId = COSMETIC_ID("Trails.GreatFairySwordTrail");
else if (player->heldItemAction == PLAYER_IA_DEKU_STICK)
- elementId = COSMETIC_ELEMENT_TRAIL_DEKU_STICK;
+ cosmeticId = COSMETIC_ID("Trails.DekuStickTrail");
break;
}
}
- if (elementId != 255) {
+ if (cosmeticId != NULL) {
Color_RGBA8 newP1Start =
- CosmeticEditor_GetChangedColor(p1Start.r, p1Start.g, p1Start.b, p1Start.a, elementId);
+ CosmeticEditor_GetChangedColor(p1Start.r, p1Start.g, p1Start.b, p1Start.a, cosmeticId);
if (*(u32*)&newP1Start != *(u32*)&p1Start) {
p1Start = newP1Start;
- p2Start = CosmeticEditor_GetChangedColor(p2Start.r, p2Start.g, p2Start.b, p2Start.a, elementId);
+ p2Start = CosmeticEditor_GetChangedColor(p2Start.r, p2Start.g, p2Start.b, p2Start.a, cosmeticId);
p1End.r = p1Start.r;
p1End.g = p1Start.g;
p1End.b = p1Start.b;
diff --git a/mm/src/code/z_lifemeter.c b/mm/src/code/z_lifemeter.c
index 45406350a..d10922a28 100644
--- a/mm/src/code/z_lifemeter.c
+++ b/mm/src/code/z_lifemeter.c
@@ -253,10 +253,10 @@ void LifeMeter_Draw(PlayState* play) {
// Normal Heart
gDPSetPrimColorOverride(OVERLAY_DISP++, 0, 0, interfaceCtx->heartsPrimR[0],
interfaceCtx->heartsPrimG[0], interfaceCtx->heartsPrimB[0],
- interfaceCtx->healthAlpha, COSMETIC_ELEMENT_HEARTS);
+ interfaceCtx->healthAlpha, COSMETIC_ID("HUD.Hearts"));
// Normal Heart Border
gDPSetEnvColorOverrideEx(OVERLAY_DISP++, interfaceCtx->heartsEnvR[0], interfaceCtx->heartsEnvG[0],
- interfaceCtx->heartsEnvB[0], 255, COSMETIC_ELEMENT_HEARTS,
+ interfaceCtx->heartsEnvB[0], 255, COSMETIC_ID("HUD.Hearts"),
COSMETIC_COLOR_MODE_DIVIDE, 4.0f);
}
} else if (i == fullHeartCount) {
@@ -266,11 +266,11 @@ void LifeMeter_Draw(PlayState* play) {
// Normal Beating Heart
gDPSetPrimColorOverride(OVERLAY_DISP++, 0, 0, interfaceCtx->beatingHeartPrim[0],
interfaceCtx->beatingHeartPrim[1], interfaceCtx->beatingHeartPrim[2],
- interfaceCtx->healthAlpha, COSMETIC_ELEMENT_HEARTS);
+ interfaceCtx->healthAlpha, COSMETIC_ID("HUD.Hearts"));
// Normal Beating Heart Border
gDPSetEnvColorOverrideEx(OVERLAY_DISP++, interfaceCtx->beatingHeartEnv[0],
interfaceCtx->beatingHeartEnv[1], interfaceCtx->beatingHeartEnv[2], 255,
- COSMETIC_ELEMENT_HEARTS, COSMETIC_COLOR_MODE_DIVIDE, 4.0f);
+ COSMETIC_ID("HUD.Hearts"), COSMETIC_COLOR_MODE_DIVIDE, 4.0f);
}
} else if (fullHeartCount < i) {
if (curColorSet != 2) {
@@ -278,9 +278,9 @@ void LifeMeter_Draw(PlayState* play) {
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColorOverride(OVERLAY_DISP++, 0, 0, interfaceCtx->heartsPrimR[0],
interfaceCtx->heartsPrimG[0], interfaceCtx->heartsPrimB[0],
- interfaceCtx->healthAlpha, COSMETIC_ELEMENT_HEARTS);
+ interfaceCtx->healthAlpha, COSMETIC_ID("HUD.Hearts"));
gDPSetEnvColorOverrideEx(OVERLAY_DISP++, interfaceCtx->heartsEnvR[0], interfaceCtx->heartsEnvG[0],
- interfaceCtx->heartsEnvB[0], 255, COSMETIC_ELEMENT_HEARTS,
+ interfaceCtx->heartsEnvB[0], 255, COSMETIC_ID("HUD.Hearts"),
COSMETIC_COLOR_MODE_DIVIDE, 4.0f);
}
} else {
@@ -311,7 +311,7 @@ void LifeMeter_Draw(PlayState* play) {
interfaceCtx->healthAlpha);
// Double Defense Non Active Heart
gDPSetEnvColorOverrideEx(OVERLAY_DISP++, sHeartsDDEnv[0][0], sHeartsDDEnv[0][1], sHeartsDDEnv[0][2],
- 255, COSMETIC_ELEMENT_HEARTS, COSMETIC_COLOR_MODE_SUBTRACT, 55.0f);
+ 255, COSMETIC_ID("HUD.Hearts"), COSMETIC_COLOR_MODE_SUBTRACT, 55.0f);
}
} else if (i == fullHeartCount) {
if (curColorSet != 5) {
@@ -322,7 +322,7 @@ void LifeMeter_Draw(PlayState* play) {
sBeatingHeartsDDPrim[2], interfaceCtx->healthAlpha);
// Double Defense Beating Heart
gDPSetEnvColorOverrideEx(OVERLAY_DISP++, sBeatingHeartsDDEnv[0], sBeatingHeartsDDEnv[1],
- sBeatingHeartsDDEnv[2], 255, COSMETIC_ELEMENT_HEARTS,
+ sBeatingHeartsDDEnv[2], 255, COSMETIC_ID("HUD.Hearts"),
COSMETIC_COLOR_MODE_SUBTRACT, 55.0f);
}
} else if (i > fullHeartCount) {
@@ -334,7 +334,7 @@ void LifeMeter_Draw(PlayState* play) {
interfaceCtx->healthAlpha);
// Double Defense Empty Heart
gDPSetEnvColorOverrideEx(OVERLAY_DISP++, sHeartsDDEnv[0][0], sHeartsDDEnv[0][1], sHeartsDDEnv[0][2],
- 255, COSMETIC_ELEMENT_HEARTS, COSMETIC_COLOR_MODE_SUBTRACT, 55.0f);
+ 255, COSMETIC_ID("HUD.Hearts"), COSMETIC_COLOR_MODE_SUBTRACT, 55.0f);
}
} else if (curColorSet != 7) {
curColorSet = 7;
diff --git a/mm/src/code/z_map_disp.c b/mm/src/code/z_map_disp.c
index ed51b27da..9da95c745 100644
--- a/mm/src/code/z_map_disp.c
+++ b/mm/src/code/z_map_disp.c
@@ -296,7 +296,7 @@ void MapDisp_DrawMinimapRoom(PlayState* play, TexturePtr texture, s32 x, s32 y,
MapData_GetMapColor(MapData_GetMapColorIndex(mapDataRoom->mapId), &color);
gDPSetPrimColorOverride(OVERLAY_DISP++, 0, 0, color.r, color.g, color.b,
(s32)(play->interfaceCtx.minimapAlpha * intensity * color.a / 255.0f),
- COSMETIC_ELEMENT_MINIMAP);
+ COSMETIC_ID("HUD.Minimap"));
MapData_GetDrawType(mapDataRoom->mapId, &drawType);
switch (drawType) {
diff --git a/mm/src/code/z_parameter.c b/mm/src/code/z_parameter.c
index 6b924c6cd..dbfa4273c 100644
--- a/mm/src/code/z_parameter.c
+++ b/mm/src/code/z_parameter.c
@@ -5676,7 +5676,7 @@ void Magic_DrawMeter(PlayState* play) {
if (gSaveContext.magicState == MAGIC_STATE_METER_FLASH_2) {
// Yellow part of the meter indicating the amount of magic to be subtracted
gDPSetPrimColorOverrideEx(OVERLAY_DISP++, 0, 0, 250, 250, 0, interfaceCtx->magicAlpha,
- COSMETIC_ELEMENT_MAGIC, COSMETIC_COLOR_MODE_ROTATE, -60.0f);
+ COSMETIC_ID("HUD.Magic"), COSMETIC_COLOR_MODE_ROTATE, -60.0f);
gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicMeterFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
@@ -5714,11 +5714,11 @@ void Magic_DrawMeter(PlayState* play) {
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) {
// Blue magic
gDPSetPrimColorOverrideEx(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha,
- COSMETIC_ELEMENT_MAGIC, COSMETIC_COLOR_MODE_ROTATE, 120.0f);
+ COSMETIC_ID("HUD.Magic"), COSMETIC_COLOR_MODE_ROTATE, 120.0f);
} else {
// Green magic (default)
gDPSetPrimColorOverride(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha,
- COSMETIC_ELEMENT_MAGIC);
+ COSMETIC_ID("HUD.Magic"));
}
// #region 2S2H [Cosmetic] Hud Editor
@@ -5756,11 +5756,11 @@ void Magic_DrawMeter(PlayState* play) {
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) {
// Blue magic
gDPSetPrimColorOverrideEx(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha,
- COSMETIC_ELEMENT_MAGIC, COSMETIC_COLOR_MODE_ROTATE, 120.0f);
+ COSMETIC_ID("HUD.Magic"), COSMETIC_COLOR_MODE_ROTATE, 120.0f);
} else {
// Green magic (default)
gDPSetPrimColorOverride(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha,
- COSMETIC_ELEMENT_MAGIC);
+ COSMETIC_ID("HUD.Magic"));
}
gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicMeterFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP,
@@ -5917,7 +5917,7 @@ void Interface_DrawItemButtons(PlayState* play) {
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_D_PAD);
OVERLAY_DISP =
Gfx_DrawTexRectIA16_DropShadowOverride(OVERLAY_DISP, gDPadTex, 32, 32, 271, 55, 32, 32, 1024, 1024, 255,
- 255, 255, dpadAlpha, COSMETIC_ELEMENT_D_PAD_BUTTON);
+ 255, 255, dpadAlpha, COSMETIC_ID("Buttons.DPad"));
gDPPipeSync(OVERLAY_DISP++);
}
// #endregion
@@ -5928,7 +5928,7 @@ void Interface_DrawItemButtons(PlayState* play) {
OVERLAY_DISP, gButtonBackgroundTex, 32, 32, sBCButtonXPositions[EQUIP_SLOT_B],
sBCButtonYPositions[EQUIP_SLOT_B], sBCButtonSizes[EQUIP_SLOT_B], sBCButtonSizes[EQUIP_SLOT_B],
sBCButtonScales[EQUIP_SLOT_B] * 2, sBCButtonScales[EQUIP_SLOT_B] * 2, 100, 255, 120, interfaceCtx->bAlpha,
- COSMETIC_ELEMENT_B_BUTTON);
+ COSMETIC_ID("Buttons.B"));
gDPPipeSync(OVERLAY_DISP++);
// C-Left Button Color & Texture
@@ -5936,27 +5936,26 @@ void Interface_DrawItemButtons(PlayState* play) {
OVERLAY_DISP = Gfx_DrawRect_DropShadowOverride(
OVERLAY_DISP, sBCButtonXPositions[EQUIP_SLOT_C_LEFT], sBCButtonYPositions[EQUIP_SLOT_C_LEFT],
sBCButtonSizes[EQUIP_SLOT_C_LEFT], sBCButtonSizes[EQUIP_SLOT_C_LEFT], sBCButtonScales[EQUIP_SLOT_C_LEFT] * 2,
- sBCButtonScales[EQUIP_SLOT_C_LEFT] * 2, 255, 240, 0, interfaceCtx->cLeftAlpha, COSMETIC_ELEMENT_C_LEFT_BUTTON);
+ sBCButtonScales[EQUIP_SLOT_C_LEFT] * 2, 255, 240, 0, interfaceCtx->cLeftAlpha, COSMETIC_ID("Buttons.CLeft"));
// C-Down Button Color & Texture
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_C_DOWN);
OVERLAY_DISP = Gfx_DrawRect_DropShadowOverride(
OVERLAY_DISP, sBCButtonXPositions[EQUIP_SLOT_C_DOWN], sBCButtonYPositions[EQUIP_SLOT_C_DOWN],
sBCButtonSizes[EQUIP_SLOT_C_DOWN], sBCButtonSizes[EQUIP_SLOT_C_DOWN], sBCButtonScales[EQUIP_SLOT_C_DOWN] * 2,
- sBCButtonScales[EQUIP_SLOT_C_DOWN] * 2, 255, 240, 0, interfaceCtx->cDownAlpha, COSMETIC_ELEMENT_C_DOWN_BUTTON);
+ sBCButtonScales[EQUIP_SLOT_C_DOWN] * 2, 255, 240, 0, interfaceCtx->cDownAlpha, COSMETIC_ID("Buttons.CDown"));
// C-Right Button Color & Texture
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_C_RIGHT);
OVERLAY_DISP = Gfx_DrawRect_DropShadowOverride(
OVERLAY_DISP, sBCButtonXPositions[EQUIP_SLOT_C_RIGHT], sBCButtonYPositions[EQUIP_SLOT_C_RIGHT],
sBCButtonSizes[EQUIP_SLOT_C_RIGHT], sBCButtonSizes[EQUIP_SLOT_C_RIGHT], sBCButtonScales[EQUIP_SLOT_C_RIGHT] * 2,
- sBCButtonScales[EQUIP_SLOT_C_RIGHT] * 2, 255, 240, 0, interfaceCtx->cRightAlpha,
- COSMETIC_ELEMENT_C_RIGHT_BUTTON);
+ sBCButtonScales[EQUIP_SLOT_C_RIGHT] * 2, 255, 240, 0, interfaceCtx->cRightAlpha, COSMETIC_ID("Buttons.CRight"));
if (!IS_PAUSE_STATE_GAMEOVER(pauseCtx)) {
if (IS_PAUSED(&play->pauseCtx)) {
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_START);
OVERLAY_DISP = Gfx_DrawRect_DropShadowOverride(OVERLAY_DISP, 136, 17, 22, 22, (s32)(1.4277344f * (1 << 10)),
(s32)(1.4277344f * (1 << 10)), 255, 130, 60,
- interfaceCtx->startAlpha, COSMETIC_ELEMENT_START_BUTTON);
+ interfaceCtx->startAlpha, COSMETIC_ID("Buttons.Start"));
// Start Button Texture, Color & Label
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->startAlpha);
@@ -6068,13 +6067,13 @@ void Interface_DrawItemButtons(PlayState* play) {
if (GET_CUR_FORM_BTN_ITEM(temp) > 0xF0) {
if (temp == EQUIP_SLOT_C_LEFT) {
gDPSetPrimColorOverride(OVERLAY_DISP++, 0, 0, 255, 240, 0, interfaceCtx->cLeftAlpha,
- COSMETIC_ELEMENT_C_LEFT_BUTTON);
+ COSMETIC_ID("Buttons.CLeft"));
} else if (temp == EQUIP_SLOT_C_DOWN) {
gDPSetPrimColorOverride(OVERLAY_DISP++, 0, 0, 255, 240, 0, interfaceCtx->cDownAlpha,
- COSMETIC_ELEMENT_C_DOWN_BUTTON);
+ COSMETIC_ID("Buttons.CDown"));
} else { // EQUIP_SLOT_C_RIGHT
gDPSetPrimColorOverride(OVERLAY_DISP++, 0, 0, 255, 240, 0, interfaceCtx->cRightAlpha,
- COSMETIC_ELEMENT_C_RIGHT_BUTTON);
+ COSMETIC_ID("Buttons.CRight"));
}
HudEditor_SetActiveElement(temp);
OVERLAY_DISP =
@@ -6641,7 +6640,7 @@ void Interface_DrawAButton(PlayState* play) {
gDPPipeSync(OVERLAY_DISP++);
Interface_SetPerspectiveView(play, 23 + R_A_BTN_Y_OFFSET, 68 + R_A_BTN_Y_OFFSET, 190, 235);
gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0], 4, 0);
- gDPSetPrimColorOverride(OVERLAY_DISP++, 0, 0, 100, 200, 255, interfaceCtx->aAlpha, COSMETIC_ELEMENT_A_BUTTON);
+ gDPSetPrimColorOverride(OVERLAY_DISP++, 0, 0, 100, 200, 255, interfaceCtx->aAlpha, COSMETIC_ID("Buttons.A"));
gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0);
// Draw A Button Do-Action
@@ -8977,7 +8976,7 @@ void Interface_Draw(PlayState* play) {
gDPSetPrimColorOverride(OVERLAY_DISP++, 0, 0, sRupeeCounterIconPrimColors[CUR_UPG_VALUE(UPG_WALLET)].r,
sRupeeCounterIconPrimColors[CUR_UPG_VALUE(UPG_WALLET)].g,
sRupeeCounterIconPrimColors[CUR_UPG_VALUE(UPG_WALLET)].b, interfaceCtx->magicAlpha,
- COSMETIC_ELEMENT_RUPEE_ICON);
+ COSMETIC_ID("HUD.RupeeIcon"));
gDPSetEnvColor(OVERLAY_DISP++, sRupeeCounterIconEnvColors[CUR_UPG_VALUE(UPG_WALLET)].r,
sRupeeCounterIconEnvColors[CUR_UPG_VALUE(UPG_WALLET)].g,
sRupeeCounterIconEnvColors[CUR_UPG_VALUE(4)].b, 255);
@@ -8996,7 +8995,7 @@ void Interface_Draw(PlayState* play) {
// Small Key Icon
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColorOverride(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha,
- COSMETIC_ELEMENT_SMALL_KEY);
+ COSMETIC_ID("HUD.SmallKey"));
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 20, 255);
HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_KEY_COUNTER);