Move Radio Message changes to Hooks

This commit is contained in:
Kiloku 2025-02-10 18:30:17 -03:00 committed by Lywx
parent 9b9cf0ca5a
commit 2b9b387539
3 changed files with 24 additions and 49 deletions

View File

@ -18,6 +18,7 @@
#include "assets/ast_area_6.h" #include "assets/ast_area_6.h"
#include "assets/ast_title.h" #include "assets/ast_title.h"
#include "assets/ast_zoness.h" #include "assets/ast_zoness.h"
#include "port/hooks/Events.h"
u16** gRadioMsgList; u16** gRadioMsgList;
s32 gRadioMsgListIndex; s32 gRadioMsgListIndex;
@ -174,7 +175,7 @@ void func_radio_800BAAE8(void) {
sRadioUseRedBox = false; sRadioUseRedBox = false;
mirror = false; mirror = false;
bool enemyRedRadio = CVarGetInteger("gEnemyRedRadio", 0); CALL_EVENT(PreSetupRadioMsgEvent, &sRadioUseRedBox);
switch (gCurrentRadioPortrait) { switch (gCurrentRadioPortrait) {
case RCID_FOX_RED: case RCID_FOX_RED:
sRadioUseRedBox = true; sRadioUseRedBox = true;
@ -232,139 +233,105 @@ void func_radio_800BAAE8(void) {
break; break;
case RCID_WOLF: case RCID_WOLF:
radioPortraitTex = D_STAR_WOLF_F00B580; radioPortraitTex = D_STAR_WOLF_F00B580;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_WOLF + 1: case RCID_WOLF + 1:
radioPortraitTex = D_STAR_WOLF_F00C4A0; radioPortraitTex = D_STAR_WOLF_F00C4A0;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_PIGMA: case RCID_PIGMA:
radioPortraitTex = D_STAR_WOLF_F003C80; radioPortraitTex = D_STAR_WOLF_F003C80;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_PIGMA + 1: case RCID_PIGMA + 1:
radioPortraitTex = D_STAR_WOLF_F004BA0; radioPortraitTex = D_STAR_WOLF_F004BA0;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_LEON: case RCID_LEON:
radioPortraitTex = D_STAR_WOLF_F007900; radioPortraitTex = D_STAR_WOLF_F007900;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_LEON + 1: case RCID_LEON + 1:
radioPortraitTex = D_STAR_WOLF_F008820; radioPortraitTex = D_STAR_WOLF_F008820;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_ANDREW: case RCID_ANDREW:
radioPortraitTex = D_STAR_WOLF_F000000; radioPortraitTex = D_STAR_WOLF_F000000;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_ANDREW + 1: case RCID_ANDREW + 1:
radioPortraitTex = D_STAR_WOLF_F000F20; radioPortraitTex = D_STAR_WOLF_F000F20;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_WOLF_2: case RCID_WOLF_2:
radioPortraitTex = D_STAR_WOLF_F00D3C0; radioPortraitTex = D_STAR_WOLF_F00D3C0;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_WOLF_2 + 1: case RCID_WOLF_2 + 1:
radioPortraitTex = D_STAR_WOLF_F00E2E0; radioPortraitTex = D_STAR_WOLF_F00E2E0;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_PIGMA_2: case RCID_PIGMA_2:
radioPortraitTex = D_STAR_WOLF_F005AC0; radioPortraitTex = D_STAR_WOLF_F005AC0;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_PIGMA_2 + 1: case RCID_PIGMA_2 + 1:
radioPortraitTex = D_STAR_WOLF_F0069E0; radioPortraitTex = D_STAR_WOLF_F0069E0;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_LEON_2: case RCID_LEON_2:
radioPortraitTex = D_STAR_WOLF_F009740; radioPortraitTex = D_STAR_WOLF_F009740;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_LEON_2 + 1: case RCID_LEON_2 + 1:
radioPortraitTex = D_STAR_WOLF_F00A660; radioPortraitTex = D_STAR_WOLF_F00A660;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_ANDREW_2: case RCID_ANDREW_2:
radioPortraitTex = D_STAR_WOLF_F001E40; radioPortraitTex = D_STAR_WOLF_F001E40;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_ANDREW_2 + 1: case RCID_ANDREW_2 + 1:
radioPortraitTex = D_STAR_WOLF_F002D60; radioPortraitTex = D_STAR_WOLF_F002D60;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_CORNERIA: case RCID_BOSS_CORNERIA:
radioPortraitTex = D_CO_6026420; radioPortraitTex = D_CO_6026420;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_CORNERIA + 1: case RCID_BOSS_CORNERIA + 1:
radioPortraitTex = D_CO_6027340; radioPortraitTex = D_CO_6027340;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_CORNERIA2: case RCID_BOSS_CORNERIA2:
radioPortraitTex = D_CO_60245E0; radioPortraitTex = D_CO_60245E0;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_CORNERIA2 + 1: case RCID_BOSS_CORNERIA2 + 1:
radioPortraitTex = D_CO_6025500; radioPortraitTex = D_CO_6025500;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_METEO: case RCID_BOSS_METEO:
radioPortraitTex = D_ME_601C8E0; radioPortraitTex = D_ME_601C8E0;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_METEO + 1: case RCID_BOSS_METEO + 1:
radioPortraitTex = D_ME_601D800; radioPortraitTex = D_ME_601D800;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_AREA6: case RCID_BOSS_AREA6:
radioPortraitTex = D_A6_60047E0; radioPortraitTex = D_A6_60047E0;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_AREA6 + 1: case RCID_BOSS_AREA6 + 1:
radioPortraitTex = D_A6_6005700; radioPortraitTex = D_A6_6005700;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_CAIMAN_AREA6: case RCID_CAIMAN_AREA6:
radioPortraitTex = D_A6_60029A0; radioPortraitTex = D_A6_60029A0;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_CAIMAN_AREA6 + 1: case RCID_CAIMAN_AREA6 + 1:
radioPortraitTex = D_A6_60038C0; radioPortraitTex = D_A6_60038C0;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_ZONESS: case RCID_BOSS_ZONESS:
radioPortraitTex = D_ZO_6014510; radioPortraitTex = D_ZO_6014510;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_ZONESS + 1: case RCID_BOSS_ZONESS + 1:
radioPortraitTex = D_ZO_6015430; radioPortraitTex = D_ZO_6015430;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_SECTORX: case RCID_BOSS_SECTORX:
radioPortraitTex = D_SX_6020FB0; radioPortraitTex = D_SX_6020FB0;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_SECTORX + 1: case RCID_BOSS_SECTORX + 1:
radioPortraitTex = D_SX_6021ED0; radioPortraitTex = D_SX_6021ED0;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_SECTORY: case RCID_BOSS_SECTORY:
radioPortraitTex = D_SY_6018F30; radioPortraitTex = D_SY_6018F30;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_SECTORY + 1: case RCID_BOSS_SECTORY + 1:
radioPortraitTex = D_SY_6019E50; radioPortraitTex = D_SY_6019E50;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_MACBETH: case RCID_BOSS_MACBETH:
radioPortraitTex = D_MA_6010C20; radioPortraitTex = D_MA_6010C20;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_BOSS_MACBETH + 1: case RCID_BOSS_MACBETH + 1:
radioPortraitTex = D_MA_6011B40; radioPortraitTex = D_MA_6011B40;
sRadioUseRedBox = enemyRedRadio;
break; break;
case RCID_ROB64_RED: case RCID_ROB64_RED:
sRadioUseRedBox = true; sRadioUseRedBox = true;
@ -457,20 +424,6 @@ void func_radio_800BAAE8(void) {
if (((s32) gRadioMsgRadioId == RCID_ANDROSS) || ((s32) gRadioMsgRadioId == RCID_ANDROSS_RED)) { if (((s32) gRadioMsgRadioId == RCID_ANDROSS) || ((s32) gRadioMsgRadioId == RCID_ANDROSS_RED)) {
sRadioUseRedBox = true; sRadioUseRedBox = true;
} }
if (enemyRedRadio)
{ //This ensures the box stays red when the message is closing and already showing static in the portrait.
if (gRadioMsgRadioId == RCID_BOSS_CORNERIA || gRadioMsgRadioId == RCID_BOSS_CORNERIA2 ||
gRadioMsgRadioId == RCID_BOSS_METEO || gRadioMsgRadioId == RCID_BOSS_SECTORX ||
gRadioMsgRadioId == RCID_BOSS_SECTORY || gRadioMsgRadioId == RCID_BOSS_MACBETH ||
gRadioMsgRadioId == RCID_BOSS_ZONESS || gRadioMsgRadioId == RCID_BOSS_AREA6 ||
gRadioMsgRadioId == RCID_CAIMAN_AREA6 || gRadioMsgRadioId == RCID_WOLF ||
gRadioMsgRadioId == RCID_PIGMA || gRadioMsgRadioId == RCID_LEON ||
gRadioMsgRadioId == RCID_ANDREW || gRadioMsgRadioId == RCID_WOLF_2 ||
gRadioMsgRadioId == RCID_PIGMA_2 || gRadioMsgRadioId == RCID_LEON_2 ||
gRadioMsgRadioId == RCID_ANDREW_2) {
sRadioUseRedBox = true;
}
}
break; break;
} }
if ((radioPortraitTex != NULL) && (gRadioPortraitScaleY != 0.0f)) { if ((radioPortraitTex != NULL) && (gRadioPortraitScaleY != 0.0f)) {

View File

@ -18,6 +18,7 @@ DEFINE_EVENT(DrawRadarHUDEvent);
DEFINE_EVENT(DrawBoostGaugeHUDEvent); DEFINE_EVENT(DrawBoostGaugeHUDEvent);
DEFINE_EVENT(DrawBombCounterHUDEvent); DEFINE_EVENT(DrawBombCounterHUDEvent);
DEFINE_EVENT(DrawIncomingMsgHUDEvent); DEFINE_EVENT(DrawIncomingMsgHUDEvent);
DEFINE_EVENT(PreSetupRadioMsgEvent, s32* radioRedBox);
DEFINE_EVENT(DrawGoldRingsHUDEvent); DEFINE_EVENT(DrawGoldRingsHUDEvent);
DEFINE_EVENT(DrawLivesCounterHUDEvent); DEFINE_EVENT(DrawLivesCounterHUDEvent);
DEFINE_EVENT(DrawTrainingRingPassCountHUDEvent); DEFINE_EVENT(DrawTrainingRingPassCountHUDEvent);

View File

@ -299,6 +299,25 @@ void OnBombCounterDraw(IEvent* ev){
HUD_BombCounter_Draw(253.0f, 18.0f); HUD_BombCounter_Draw(253.0f, 18.0f);
} }
void OnPreSetupRadioMsgEvent(PreSetupRadioMsgEvent* ev){
bool enemyRedRadio = CVarGetInteger("gEnemyRedRadio", 0);
if (!enemyRedRadio)
{
return;
}
if (gRadioMsgRadioId == RCID_BOSS_CORNERIA || gRadioMsgRadioId == RCID_BOSS_CORNERIA2 ||
gRadioMsgRadioId == RCID_BOSS_METEO || gRadioMsgRadioId == RCID_BOSS_SECTORX ||
gRadioMsgRadioId == RCID_BOSS_SECTORY || gRadioMsgRadioId == RCID_BOSS_MACBETH ||
gRadioMsgRadioId == RCID_BOSS_ZONESS || gRadioMsgRadioId == RCID_BOSS_AREA6 ||
gRadioMsgRadioId == RCID_CAIMAN_AREA6 || gRadioMsgRadioId == RCID_WOLF ||
gRadioMsgRadioId == RCID_PIGMA || gRadioMsgRadioId == RCID_LEON ||
gRadioMsgRadioId == RCID_ANDREW || gRadioMsgRadioId == RCID_WOLF_2 ||
gRadioMsgRadioId == RCID_PIGMA_2 || gRadioMsgRadioId == RCID_LEON_2 ||
gRadioMsgRadioId == RCID_ANDREW_2) {
*ev->radioRedBox = true;
}
}
void OnLivesCounterDraw(IEvent* ev){ void OnLivesCounterDraw(IEvent* ev){
bool restore = CVarGetInteger("gRestoreBetaBoostGauge", 0) == 1; bool restore = CVarGetInteger("gRestoreBetaBoostGauge", 0) == 1;
if(!restore){ if(!restore){
@ -327,6 +346,7 @@ void PortEnhancements_Init() {
REGISTER_LISTENER(DrawBoostGaugeHUDEvent, OnBoostGaugeDraw, EVENT_PRIORITY_NORMAL); REGISTER_LISTENER(DrawBoostGaugeHUDEvent, OnBoostGaugeDraw, EVENT_PRIORITY_NORMAL);
REGISTER_LISTENER(DrawLivesCounterHUDEvent, OnLivesCounterDraw, EVENT_PRIORITY_NORMAL); REGISTER_LISTENER(DrawLivesCounterHUDEvent, OnLivesCounterDraw, EVENT_PRIORITY_NORMAL);
REGISTER_LISTENER(DrawBombCounterHUDEvent, OnBombCounterDraw, EVENT_PRIORITY_NORMAL); REGISTER_LISTENER(DrawBombCounterHUDEvent, OnBombCounterDraw, EVENT_PRIORITY_NORMAL);
REGISTER_LISTENER(PreSetupRadioMsgEvent, OnPreSetupRadioMsgEvent, EVENT_PRIORITY_NORMAL);
REGISTER_LISTENER(ObjectUpdateEvent, OnItemGoldRingUpdate, EVENT_PRIORITY_NORMAL); REGISTER_LISTENER(ObjectUpdateEvent, OnItemGoldRingUpdate, EVENT_PRIORITY_NORMAL);
REGISTER_LISTENER(ObjectDrawPostSetupEvent, OnItemGoldRingDraw, EVENT_PRIORITY_NORMAL); REGISTER_LISTENER(ObjectDrawPostSetupEvent, OnItemGoldRingDraw, EVENT_PRIORITY_NORMAL);
@ -358,6 +378,7 @@ void PortEnhancements_Register() {
REGISTER_EVENT(DrawBoostGaugeHUDEvent); REGISTER_EVENT(DrawBoostGaugeHUDEvent);
REGISTER_EVENT(DrawBombCounterHUDEvent); REGISTER_EVENT(DrawBombCounterHUDEvent);
REGISTER_EVENT(DrawIncomingMsgHUDEvent); REGISTER_EVENT(DrawIncomingMsgHUDEvent);
REGISTER_EVENT(PreSetupRadioMsgEvent);
REGISTER_EVENT(DrawGoldRingsHUDEvent); REGISTER_EVENT(DrawGoldRingsHUDEvent);
REGISTER_EVENT(DrawLivesCounterHUDEvent); REGISTER_EVENT(DrawLivesCounterHUDEvent);
REGISTER_EVENT(DrawTrainingRingPassCountHUDEvent); REGISTER_EVENT(DrawTrainingRingPassCountHUDEvent);