mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
Add Hud Editor support for timers (#376)
* hud editor support for timers * split out modify top/left values to new func * rename func for better reusability * rename func
This commit is contained in:
@@ -8,20 +8,22 @@ extern "C" int16_t OTRGetRectDimensionFromRightEdge(float v);
|
||||
HudEditorElementID hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
|
||||
|
||||
HudEditorElement hudEditorElements[HUD_EDITOR_ELEMENT_MAX] = {
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_B, "B Button", "B", 167, 17, 100, 255, 120, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_C_LEFT, "C-Left Button", "CLeft", 227, 18, 255, 240, 0, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_C_DOWN, "C-Down Button", "CDown", 249, 34, 255, 240, 0, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_C_RIGHT, "C-Right Button", "CRight", 271, 18, 255, 240, 0, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_A, "A Button", "A", 191, 18, 100, 200, 255, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_C_UP, "C-Up Button", "CUp", 254, 16, 255, 240, 0, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_D_PAD, "D-Pad", "DPad", 271, 55, 255, 255, 255, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_START, "Start Button", "Start", 136, 17, 255, 130, 60, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_MAGIC_METER, "Magic", "Magic", 18, 34, 0, 200, 0, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_HEARTS, "Hearts", "Hearts", 30, 26, 255, 70, 50, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_MINIGAME_COUNTER, "Minigames", "Minigames", 20, 67, 255, 255, 255, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_RUPEE_COUNTER, "Rupees", "Rupees", 26, 206, 200, 255, 100, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_KEY_COUNTER, "Keys", "Keys", 26, 190, 255, 255, 255, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_SKULLTULA_COUNTER, "Skulltulas", "Skulltulas", 26, 190, 255, 255, 255, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_B, "B Button", "B", 167, 17, 100, 255, 120, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_C_LEFT, "C-Left Button", "CLeft", 227, 18, 255, 240, 0, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_C_DOWN, "C-Down Button", "CDown", 249, 34, 255, 240, 0, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_C_RIGHT, "C-Right Button", "CRight", 271, 18, 255, 240, 0, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_A, "A Button", "A", 191, 18, 100, 200, 255, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_C_UP, "C-Up Button", "CUp", 254, 16, 255, 240, 0, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_D_PAD, "D-Pad", "DPad", 271, 55, 255, 255, 255, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_START, "Start Button", "Start", 136, 17, 255, 130, 60, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_HEARTS, "Hearts", "Hearts", 30, 26, 255, 70, 50, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_MAGIC_METER, "Magic", "Magic", 18, 34, 0, 200, 0, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_TIMERS, "Timers", "Timers", 26, 46, 255, 255, 255, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_TIMERS_MOON_CRASH, "Timer - Skull Kid", "SkullKidTimer", 115, 200, 255, 255, 255, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_MINIGAME_COUNTER, "Minigames", "Minigames", 20, 67, 255, 255, 255, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_RUPEE_COUNTER, "Rupees", "Rupees", 26, 206, 200, 255, 100, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_KEY_COUNTER, "Keys", "Keys", 26, 190, 255, 255, 255, 255),
|
||||
HUD_EDITOR_ELEMENT(HUD_EDITOR_ELEMENT_SKULLTULA_COUNTER, "Skulltulas", "Skulltulas", 26, 190, 255, 255, 255, 255),
|
||||
};
|
||||
|
||||
extern "C" bool HudEditor_ShouldOverrideDraw() {
|
||||
@@ -32,25 +34,31 @@ extern "C" void HudEditor_SetActiveElement(HudEditorElementID id) {
|
||||
hudEditorActiveElement = id;
|
||||
}
|
||||
|
||||
extern "C" void HudEditor_ModifyRectPosValues(s16* rectLeft, s16* rectTop) {
|
||||
s16 offsetFromBaseX = *rectLeft - hudEditorElements[hudEditorActiveElement].defaultX;
|
||||
s16 offsetFromBaseY = *rectTop - hudEditorElements[hudEditorActiveElement].defaultY;
|
||||
*rectLeft = CVarGetInteger(hudEditorElements[hudEditorActiveElement].xCvar,
|
||||
hudEditorElements[hudEditorActiveElement].defaultX) +
|
||||
(offsetFromBaseX * CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f));
|
||||
*rectTop = CVarGetInteger(hudEditorElements[hudEditorActiveElement].yCvar,
|
||||
hudEditorElements[hudEditorActiveElement].defaultY) +
|
||||
(offsetFromBaseY * CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f));
|
||||
|
||||
if (CVarGetInteger(hudEditorElements[hudEditorActiveElement].modeCvar, HUD_EDITOR_ELEMENT_MODE_VANILLA) ==
|
||||
HUD_EDITOR_ELEMENT_MODE_MOVABLE_LEFT) {
|
||||
*rectLeft = OTRGetRectDimensionFromLeftEdge(*rectLeft);
|
||||
} else if (CVarGetInteger(hudEditorElements[hudEditorActiveElement].modeCvar, HUD_EDITOR_ELEMENT_MODE_VANILLA) ==
|
||||
HUD_EDITOR_ELEMENT_MODE_MOVABLE_RIGHT) {
|
||||
*rectLeft = OTRGetRectDimensionFromRightEdge(*rectLeft);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void HudEditor_ModifyKaleidoEquipAnimValues(s16* ulx, s16* uly, s16* shrinkRate) {
|
||||
// Normalize the kaleido matrix values to screen rectangle dimensions
|
||||
*ulx = (*ulx / 10) + (SCREEN_WIDTH / 2);
|
||||
*uly = (SCREEN_HEIGHT / 2) - (*uly / 10);
|
||||
|
||||
s16 offsetFromBaseX = *ulx - hudEditorElements[hudEditorActiveElement].defaultX;
|
||||
s16 offsetFromBaseY = *uly - hudEditorElements[hudEditorActiveElement].defaultY;
|
||||
*ulx = CVarGetInteger(hudEditorElements[hudEditorActiveElement].xCvar,
|
||||
hudEditorElements[hudEditorActiveElement].defaultX) +
|
||||
(offsetFromBaseX * CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f));
|
||||
*uly = CVarGetInteger(hudEditorElements[hudEditorActiveElement].yCvar,
|
||||
hudEditorElements[hudEditorActiveElement].defaultY) +
|
||||
(offsetFromBaseY * CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f));
|
||||
|
||||
if (CVarGetInteger(hudEditorElements[hudEditorActiveElement].modeCvar, HUD_EDITOR_ELEMENT_MODE_VANILLA) == HUD_EDITOR_ELEMENT_MODE_MOVABLE_LEFT) {
|
||||
*ulx = OTRGetRectDimensionFromLeftEdge(*ulx);
|
||||
} else if (CVarGetInteger(hudEditorElements[hudEditorActiveElement].modeCvar, HUD_EDITOR_ELEMENT_MODE_VANILLA) == HUD_EDITOR_ELEMENT_MODE_MOVABLE_RIGHT) {
|
||||
*ulx = OTRGetRectDimensionFromRightEdge(*ulx);
|
||||
}
|
||||
HudEditor_ModifyRectPosValues(ulx, uly);
|
||||
|
||||
// Adjust the values to match the kaleido matrix (origin 0,0 at center of screen, +y going up)
|
||||
*ulx -= SCREEN_WIDTH / 2;
|
||||
@@ -68,17 +76,22 @@ extern "C" void HudEditor_ModifyKaleidoEquipAnimValues(s16* ulx, s16* uly, s16*
|
||||
*shrinkRate = 320 - (s16)(endAnimSize * scale);
|
||||
}
|
||||
|
||||
extern "C" void HudEditor_ModifyDrawValues(s16* rectLeft, s16* rectTop, s16* rectWidth, s16* rectHeight, s16* dsdx, s16* dtdy) {
|
||||
s16 offsetFromBaseX = *rectLeft - hudEditorElements[hudEditorActiveElement].defaultX;
|
||||
s16 offsetFromBaseY = *rectTop - hudEditorElements[hudEditorActiveElement].defaultY;
|
||||
*rectLeft = CVarGetInteger(hudEditorElements[hudEditorActiveElement].xCvar, hudEditorElements[hudEditorActiveElement].defaultX) + (offsetFromBaseX * CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f));
|
||||
*rectTop = CVarGetInteger(hudEditorElements[hudEditorActiveElement].yCvar, hudEditorElements[hudEditorActiveElement].defaultY) + (offsetFromBaseY * CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f));
|
||||
extern "C" void HudEditor_ModifyDrawValuesFromBase(s16 baseX, s16 baseY, s16* rectLeft, s16* rectTop, s16* rectWidth,
|
||||
s16* rectHeight, s16* dsdx, s16* dtdy) {
|
||||
s16 offsetFromBaseX = *rectLeft - baseX;
|
||||
s16 offsetFromBaseY = *rectTop - baseY;
|
||||
*rectLeft = baseX + (offsetFromBaseX * CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f));
|
||||
*rectTop = baseY + (offsetFromBaseY * CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f));
|
||||
|
||||
if (CVarGetInteger(hudEditorElements[hudEditorActiveElement].modeCvar, HUD_EDITOR_ELEMENT_MODE_VANILLA) == HUD_EDITOR_ELEMENT_MODE_MOVABLE_LEFT) {
|
||||
*rectLeft = OTRGetRectDimensionFromLeftEdge(*rectLeft);
|
||||
} else if (CVarGetInteger(hudEditorElements[hudEditorActiveElement].modeCvar, HUD_EDITOR_ELEMENT_MODE_VANILLA) == HUD_EDITOR_ELEMENT_MODE_MOVABLE_RIGHT) {
|
||||
*rectLeft = OTRGetRectDimensionFromRightEdge(*rectLeft);
|
||||
}
|
||||
*rectWidth *= CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f);
|
||||
*rectHeight *= CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f);
|
||||
*dsdx /= CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f);
|
||||
*dtdy /= CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f);
|
||||
}
|
||||
|
||||
extern "C" void HudEditor_ModifyDrawValues(s16* rectLeft, s16* rectTop, s16* rectWidth, s16* rectHeight, s16* dsdx,
|
||||
s16* dtdy) {
|
||||
HudEditor_ModifyRectPosValues(rectLeft, rectTop);
|
||||
|
||||
*rectWidth *= CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f);
|
||||
*rectHeight *= CVarGetFloat(hudEditorElements[hudEditorActiveElement].scaleCvar, 1.0f);
|
||||
@@ -141,8 +154,10 @@ void HudEditorWindow::DrawElement() {
|
||||
CVarSetInteger(hudEditorElements[HUD_EDITOR_ELEMENT_C_UP].modeCvar, HUD_EDITOR_ELEMENT_MODE_MOVABLE_RIGHT);
|
||||
CVarSetInteger(hudEditorElements[HUD_EDITOR_ELEMENT_D_PAD].modeCvar, HUD_EDITOR_ELEMENT_MODE_MOVABLE_RIGHT);
|
||||
CVarSetInteger(hudEditorElements[HUD_EDITOR_ELEMENT_START].modeCvar, HUD_EDITOR_ELEMENT_MODE_MOVABLE_RIGHT);
|
||||
CVarSetInteger(hudEditorElements[HUD_EDITOR_ELEMENT_MAGIC_METER].modeCvar, HUD_EDITOR_ELEMENT_MODE_MOVABLE_LEFT);
|
||||
CVarSetInteger(hudEditorElements[HUD_EDITOR_ELEMENT_HEARTS].modeCvar, HUD_EDITOR_ELEMENT_MODE_MOVABLE_LEFT);
|
||||
CVarSetInteger(hudEditorElements[HUD_EDITOR_ELEMENT_MAGIC_METER].modeCvar, HUD_EDITOR_ELEMENT_MODE_MOVABLE_LEFT);
|
||||
CVarSetInteger(hudEditorElements[HUD_EDITOR_ELEMENT_TIMERS].modeCvar, HUD_EDITOR_ELEMENT_MODE_MOVABLE_LEFT);
|
||||
CVarSetInteger(hudEditorElements[HUD_EDITOR_ELEMENT_TIMERS_MOON_CRASH].modeCvar, HUD_EDITOR_ELEMENT_MODE_MOVABLE_43);
|
||||
CVarSetInteger(hudEditorElements[HUD_EDITOR_ELEMENT_MINIGAME_COUNTER].modeCvar, HUD_EDITOR_ELEMENT_MODE_MOVABLE_LEFT);
|
||||
CVarSetInteger(hudEditorElements[HUD_EDITOR_ELEMENT_RUPEE_COUNTER].modeCvar, HUD_EDITOR_ELEMENT_MODE_MOVABLE_LEFT);
|
||||
CVarSetInteger(hudEditorElements[HUD_EDITOR_ELEMENT_KEY_COUNTER].modeCvar, HUD_EDITOR_ELEMENT_MODE_MOVABLE_LEFT);
|
||||
|
||||
@@ -31,8 +31,10 @@ typedef enum {
|
||||
HUD_EDITOR_ELEMENT_C_UP,
|
||||
HUD_EDITOR_ELEMENT_D_PAD,
|
||||
HUD_EDITOR_ELEMENT_START,
|
||||
HUD_EDITOR_ELEMENT_MAGIC_METER,
|
||||
HUD_EDITOR_ELEMENT_HEARTS,
|
||||
HUD_EDITOR_ELEMENT_MAGIC_METER,
|
||||
HUD_EDITOR_ELEMENT_TIMERS,
|
||||
HUD_EDITOR_ELEMENT_TIMERS_MOON_CRASH,
|
||||
HUD_EDITOR_ELEMENT_MINIGAME_COUNTER,
|
||||
HUD_EDITOR_ELEMENT_RUPEE_COUNTER,
|
||||
HUD_EDITOR_ELEMENT_KEY_COUNTER,
|
||||
@@ -50,7 +52,9 @@ typedef enum {
|
||||
|
||||
void HudEditor_SetActiveElement(HudEditorElementID id);
|
||||
bool HudEditor_ShouldOverrideDraw();
|
||||
void HudEditor_ModifyRectPosValues(s16* rectLeft, s16* rectTop);
|
||||
void HudEditor_ModifyKaleidoEquipAnimValues(s16* ulx, s16* uly, s16* shrinkRate);
|
||||
void HudEditor_ModifyDrawValuesFromBase(s16 baseX, s16 baseY, s16* rectLeft, s16* rectTop, s16* rectWidth, s16* rectHeight, s16* dsdx, s16* dtdy);
|
||||
void HudEditor_ModifyDrawValues(s16* rectLeft, s16* rectTop, s16* rectWidth, s16* rectHeight, s16* dsdx, s16* dtdy);
|
||||
|
||||
typedef struct {
|
||||
|
||||
+119
-19
@@ -307,7 +307,13 @@ Gfx* Gfx_DrawTexRectIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 text
|
||||
return gfx;
|
||||
}
|
||||
|
||||
HudEditor_ModifyDrawValues(&rectLeft, &rectTop, &rectWidth, &rectHeight, &dsdx, &dtdy);
|
||||
if (hudEditorActiveElement == HUD_EDITOR_ELEMENT_TIMERS ||
|
||||
hudEditorActiveElement == HUD_EDITOR_ELEMENT_TIMERS_MOON_CRASH) {
|
||||
HudEditor_ModifyDrawValuesFromBase(gSaveContext.timerX[sTimerId], gSaveContext.timerY[sTimerId], &rectLeft,
|
||||
&rectTop, &rectWidth, &rectHeight, &dsdx, &dtdy);
|
||||
} else {
|
||||
HudEditor_ModifyDrawValues(&rectLeft, &rectTop, &rectWidth, &rectHeight, &dsdx, &dtdy);
|
||||
}
|
||||
|
||||
hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
|
||||
}
|
||||
@@ -568,7 +574,13 @@ Gfx* Gfx_DrawTexRectI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textu
|
||||
return gfx;
|
||||
}
|
||||
|
||||
HudEditor_ModifyDrawValues(&rectLeft, &rectTop, &rectWidth, &rectHeight, &dsdx, &dtdy);
|
||||
if (hudEditorActiveElement == HUD_EDITOR_ELEMENT_TIMERS ||
|
||||
hudEditorActiveElement == HUD_EDITOR_ELEMENT_TIMERS_MOON_CRASH) {
|
||||
HudEditor_ModifyDrawValuesFromBase(gSaveContext.timerX[sTimerId], gSaveContext.timerY[sTimerId], &rectLeft,
|
||||
&rectTop, &rectWidth, &rectHeight, &dsdx, &dtdy);
|
||||
} else {
|
||||
HudEditor_ModifyDrawValues(&rectLeft, &rectTop, &rectWidth, &rectHeight, &dsdx, &dtdy);
|
||||
}
|
||||
|
||||
hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
|
||||
}
|
||||
@@ -7080,6 +7092,11 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
OSTime postmanTimerStopOsTime;
|
||||
s16 j;
|
||||
s16 i;
|
||||
// 2S2H [Cosmetic] Hud editor values for timers
|
||||
s16 newTimerX;
|
||||
s16 newTimerY;
|
||||
u8 modifiedTimerHudValues;
|
||||
s16 hudTimerElement;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
@@ -7114,8 +7131,40 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
|
||||
sTimerId = i;
|
||||
|
||||
// #region 2S2H [Cosmetic] Hud editor values for initial timer positions
|
||||
if (sTimerId == TIMER_ID_MOON_CRASH) {
|
||||
hudTimerElement = HUD_EDITOR_ELEMENT_TIMERS_MOON_CRASH;
|
||||
newTimerX = R_MOON_CRASH_TIMER_X;
|
||||
newTimerY = R_MOON_CRASH_TIMER_Y;
|
||||
} else {
|
||||
hudTimerElement = HUD_EDITOR_ELEMENT_TIMERS;
|
||||
newTimerX = 26;
|
||||
// In minigame that hides the hud, but not minigames where the timer starts in the center
|
||||
if (interfaceCtx->minigameState != MINIGAME_STATE_NONE && interfaceCtx->magicAlpha != 255) {
|
||||
newTimerY = 22;
|
||||
} else if (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) {
|
||||
newTimerY = 54; // two rows of hearts
|
||||
} else {
|
||||
newTimerY = 46; // one row of hearts
|
||||
}
|
||||
}
|
||||
// #endreion
|
||||
|
||||
// Process the timer for the postman counting minigame
|
||||
if (sTimerId == TIMER_ID_POSTMAN) {
|
||||
// #region 2S2H [Cosmetic] Hud editor values for postman timer
|
||||
HudEditor_SetActiveElement(hudTimerElement);
|
||||
if (HudEditor_ShouldOverrideDraw()) {
|
||||
HudEditor_ModifyRectPosValues(&newTimerX, &newTimerY);
|
||||
} else {
|
||||
newTimerX = 115;
|
||||
newTimerY = 80;
|
||||
}
|
||||
gSaveContext.timerX[sTimerId] = newTimerX;
|
||||
gSaveContext.timerY[sTimerId] = newTimerY;
|
||||
hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
|
||||
// #endregion
|
||||
|
||||
switch (gSaveContext.timerStates[TIMER_ID_POSTMAN]) {
|
||||
case TIMER_STATE_POSTMAN_START:
|
||||
if (gSaveContext.timerDirections[TIMER_ID_POSTMAN] != TIMER_COUNT_DOWN) {
|
||||
@@ -7160,6 +7209,17 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
gSaveContext.timerY[sTimerId] = 46; // one row of hearts
|
||||
}
|
||||
|
||||
// #region 2S2H [Cosmetic] Hud editor values for static minigame timers
|
||||
HudEditor_SetActiveElement(hudTimerElement);
|
||||
if (HudEditor_ShouldOverrideDraw()) {
|
||||
HudEditor_ModifyRectPosValues(&newTimerX, &newTimerY);
|
||||
modifiedTimerHudValues = true;
|
||||
gSaveContext.timerX[sTimerId] = newTimerX;
|
||||
gSaveContext.timerY[sTimerId] = newTimerY;
|
||||
}
|
||||
hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
|
||||
// #endregion
|
||||
|
||||
if ((interfaceCtx->minigameState == MINIGAME_STATE_COUNTDOWN_GO) ||
|
||||
(interfaceCtx->minigameState == MINIGAME_STATE_PLAYING)) {
|
||||
if (gSaveContext.timerStates[sTimerId] == TIMER_STATE_START) {
|
||||
@@ -7188,34 +7248,54 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
break;
|
||||
|
||||
case TIMER_STATE_MOVING_TIMER:
|
||||
// Move the timer from the center of the screen to the timer location where it will count.
|
||||
if (sTimerId == TIMER_ID_MOON_CRASH) {
|
||||
j = ((((void)0, gSaveContext.timerX[sTimerId]) - R_MOON_CRASH_TIMER_X) / sTimerStateTimer);
|
||||
gSaveContext.timerX[sTimerId] = ((void)0, gSaveContext.timerX[sTimerId]) - j;
|
||||
j = ((((void)0, gSaveContext.timerY[sTimerId]) - R_MOON_CRASH_TIMER_Y) / sTimerStateTimer);
|
||||
gSaveContext.timerY[sTimerId] = ((void)0, gSaveContext.timerY[sTimerId]) - j;
|
||||
} else {
|
||||
j = ((((void)0, gSaveContext.timerX[sTimerId]) - 26) / sTimerStateTimer);
|
||||
// #region 2S2H [Cosmetic] Hud Editor values for timers animation position
|
||||
HudEditor_SetActiveElement(hudTimerElement);
|
||||
if (HudEditor_ShouldOverrideDraw()) {
|
||||
HudEditor_ModifyRectPosValues(&newTimerX, &newTimerY);
|
||||
modifiedTimerHudValues = true;
|
||||
j = ((((void)0, gSaveContext.timerX[sTimerId]) - newTimerX) / sTimerStateTimer);
|
||||
gSaveContext.timerX[sTimerId] = ((void)0, gSaveContext.timerX[sTimerId]) - j;
|
||||
|
||||
j = (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0)
|
||||
? ((((void)0, gSaveContext.timerY[sTimerId]) - 54) / sTimerStateTimer)
|
||||
: ((((void)0, gSaveContext.timerY[sTimerId]) - 46) / sTimerStateTimer);
|
||||
j = ((((void)0, gSaveContext.timerY[sTimerId]) - newTimerY) / sTimerStateTimer);
|
||||
gSaveContext.timerY[sTimerId] = ((void)0, gSaveContext.timerY[sTimerId]) - j;
|
||||
} else {
|
||||
// #endregion
|
||||
// Move the timer from the center of the screen to the timer location where it will count.
|
||||
if (sTimerId == TIMER_ID_MOON_CRASH) {
|
||||
j = ((((void)0, gSaveContext.timerX[sTimerId]) - R_MOON_CRASH_TIMER_X) / sTimerStateTimer);
|
||||
gSaveContext.timerX[sTimerId] = ((void)0, gSaveContext.timerX[sTimerId]) - j;
|
||||
j = ((((void)0, gSaveContext.timerY[sTimerId]) - R_MOON_CRASH_TIMER_Y) / sTimerStateTimer);
|
||||
gSaveContext.timerY[sTimerId] = ((void)0, gSaveContext.timerY[sTimerId]) - j;
|
||||
} else {
|
||||
j = ((((void)0, gSaveContext.timerX[sTimerId]) - 26) / sTimerStateTimer);
|
||||
gSaveContext.timerX[sTimerId] = ((void)0, gSaveContext.timerX[sTimerId]) - j;
|
||||
|
||||
j = (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0)
|
||||
? ((((void)0, gSaveContext.timerY[sTimerId]) - 54) / sTimerStateTimer)
|
||||
: ((((void)0, gSaveContext.timerY[sTimerId]) - 46) / sTimerStateTimer);
|
||||
gSaveContext.timerY[sTimerId] = ((void)0, gSaveContext.timerY[sTimerId]) - j;
|
||||
}
|
||||
}
|
||||
|
||||
sTimerStateTimer--;
|
||||
if (sTimerStateTimer == 0) {
|
||||
sTimerStateTimer = 20;
|
||||
|
||||
if (sTimerId == TIMER_ID_MOON_CRASH) {
|
||||
gSaveContext.timerY[sTimerId] = R_MOON_CRASH_TIMER_Y;
|
||||
// #region 2S2H [Cosmetic] Hud Editor clamp final timer position
|
||||
if (HudEditor_ShouldOverrideDraw()) {
|
||||
gSaveContext.timerX[sTimerId] = newTimerX;
|
||||
gSaveContext.timerY[sTimerId] = newTimerY;
|
||||
} else {
|
||||
gSaveContext.timerX[sTimerId] = 26;
|
||||
if (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) {
|
||||
gSaveContext.timerY[sTimerId] = 54; // two rows of hearts
|
||||
// #endregion
|
||||
if (sTimerId == TIMER_ID_MOON_CRASH) {
|
||||
gSaveContext.timerY[sTimerId] = R_MOON_CRASH_TIMER_Y;
|
||||
} else {
|
||||
gSaveContext.timerY[sTimerId] = 46; // one row of hearts
|
||||
gSaveContext.timerX[sTimerId] = 26;
|
||||
if (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) {
|
||||
gSaveContext.timerY[sTimerId] = 54; // two rows of hearts
|
||||
} else {
|
||||
gSaveContext.timerY[sTimerId] = 46; // one row of hearts
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7224,6 +7304,8 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
gSaveContext.timerStopTimes[sTimerId] = SECONDS_TO_TIMER(0);
|
||||
gSaveContext.timerPausedOsTimes[sTimerId] = 0;
|
||||
}
|
||||
|
||||
hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
|
||||
// fallthrough
|
||||
case TIMER_STATE_COUNTING:
|
||||
if ((gSaveContext.timerStates[sTimerId] == TIMER_STATE_COUNTING) &&
|
||||
@@ -7231,6 +7313,19 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
gSaveContext.timerX[TIMER_ID_MOON_CRASH] = R_MOON_CRASH_TIMER_X;
|
||||
gSaveContext.timerY[TIMER_ID_MOON_CRASH] = R_MOON_CRASH_TIMER_Y;
|
||||
}
|
||||
|
||||
// #region 2S2H [Cosmetic] Hud Editor set timers final position
|
||||
if ((gSaveContext.timerStates[sTimerId] == TIMER_STATE_COUNTING)) {
|
||||
HudEditor_SetActiveElement(hudTimerElement);
|
||||
// If we are in a fallthrough, we don't want to modify the values a second time
|
||||
if (HudEditor_ShouldOverrideDraw() && !modifiedTimerHudValues) {
|
||||
HudEditor_ModifyRectPosValues(&newTimerX, &newTimerY);
|
||||
}
|
||||
gSaveContext.timerX[sTimerId] = newTimerX;
|
||||
gSaveContext.timerY[sTimerId] = newTimerY;
|
||||
hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE;
|
||||
}
|
||||
// #endregion
|
||||
break;
|
||||
|
||||
case TIMER_STATE_10:
|
||||
@@ -7443,6 +7538,8 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
gDPPipeSync(OVERLAY_DISP++);
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255);
|
||||
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0);
|
||||
|
||||
HudEditor_SetActiveElement(hudTimerElement);
|
||||
OVERLAY_DISP = Gfx_DrawTexRectIA8(
|
||||
OVERLAY_DISP, gTimerClockIconTex, 0x10, 0x10, ((void)0, gSaveContext.timerX[sTimerId]),
|
||||
((void)0, gSaveContext.timerY[sTimerId]) + 2, 0x10, 0x10, 1 << 10, 1 << 10);
|
||||
@@ -7492,6 +7589,7 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
if (sPostmanBunnyHoodState == POSTMAN_MINIGAME_BUNNY_HOOD_ON) {
|
||||
// draw sTimerDigits[3] (10s of seconds) to sTimerDigits[6] (100s of milliseconds)
|
||||
for (j = 0; j < 4; j++) {
|
||||
HudEditor_SetActiveElement(hudTimerElement);
|
||||
OVERLAY_DISP = Gfx_DrawTexRectI8(
|
||||
OVERLAY_DISP, sCounterTextures[sTimerDigits[j + 3]], 8, 0x10,
|
||||
((void)0, gSaveContext.timerX[sTimerId]) + sTimerDigitsOffsetX[j],
|
||||
@@ -7500,6 +7598,7 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
} else {
|
||||
// draw sTimerDigits[3] (10s of seconds) to sTimerDigits[7] (10s of milliseconds)
|
||||
for (j = 0; j < 5; j++) {
|
||||
HudEditor_SetActiveElement(hudTimerElement);
|
||||
OVERLAY_DISP = Gfx_DrawTexRectI8(
|
||||
OVERLAY_DISP, sCounterTextures[sTimerDigits[j + 3]], 8, 0x10,
|
||||
((void)0, gSaveContext.timerX[sTimerId]) + sTimerDigitsOffsetX[j],
|
||||
@@ -7509,6 +7608,7 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
} else {
|
||||
// draw sTimerDigits[3] (6s of minutes) to sTimerDigits[7] (10s of milliseconds)
|
||||
for (j = 0; j < 8; j++) {
|
||||
HudEditor_SetActiveElement(hudTimerElement);
|
||||
OVERLAY_DISP = Gfx_DrawTexRectI8(
|
||||
OVERLAY_DISP, sCounterTextures[sTimerDigits[j]], 8, 0x10,
|
||||
((void)0, gSaveContext.timerX[sTimerId]) + sTimerDigitsOffsetX[j],
|
||||
|
||||
Reference in New Issue
Block a user