From 779970b544ec0c9cbe09c3575a0eb2ba421fce5b Mon Sep 17 00:00:00 2001 From: Livewire Date: Tue, 11 Mar 2025 20:47:04 -0400 Subject: [PATCH 01/10] zNPCSupport - added NPCSupport_Startup --- src/SB/Game/zNPCSupplement.h | 1 + src/SB/Game/zNPCSupport.cpp | 15 ++++++++++++++- src/SB/Game/zNPCSupport.h | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/SB/Game/zNPCSupplement.h b/src/SB/Game/zNPCSupplement.h index 02350575d..bdd2efaa5 100644 --- a/src/SB/Game/zNPCSupplement.h +++ b/src/SB/Game/zNPCSupplement.h @@ -107,6 +107,7 @@ struct StreakInfo }; void NPCC_MakeASplash(const xVec3* pos, F32 radius); +void NPCSupplement_Startup (); void NPCSupplement_Shutdown(); void NPAR_ScenePrepare(); void NPAR_SceneFinish(); diff --git a/src/SB/Game/zNPCSupport.cpp b/src/SB/Game/zNPCSupport.cpp index 69b44fafd..8bd6e9c8f 100644 --- a/src/SB/Game/zNPCSupport.cpp +++ b/src/SB/Game/zNPCSupport.cpp @@ -8,6 +8,16 @@ #include "xMathInlines.h" +void NPCSupport_Startup() + +{ + zNPCHazard_Startup(); + zNPCGlyph_Startup(); + NPCWidget_Startup(); + NPCSupplement_Startup(); + return; +} + void NPCSupport_Shutdown() { zNPCHazard_Shutdown(); @@ -16,6 +26,9 @@ void NPCSupport_Shutdown() NPCSupplement_Shutdown(); } +void NPCWidget_Startup() +{ +} void NPCWidget_Shutdown() { } @@ -42,4 +55,4 @@ F32 NPCC_TmrCycle(float* tmr, float dt, float interval) } return parameterized; -} \ No newline at end of file +} diff --git a/src/SB/Game/zNPCSupport.h b/src/SB/Game/zNPCSupport.h index 74199baaa..da86ac444 100644 --- a/src/SB/Game/zNPCSupport.h +++ b/src/SB/Game/zNPCSupport.h @@ -46,6 +46,7 @@ struct NPCBlinker void Reset(); }; +void NPCWidget_Startup() ; void NPCWidget_Shutdown(); void NPCSupport_Startup(); void NPCSupport_ScenePrepare(); From 8ad094acfee2304e724771333f435d2b9896bfd8 Mon Sep 17 00:00:00 2001 From: Livewire Date: Tue, 11 Mar 2025 20:58:48 -0400 Subject: [PATCH 02/10] clang format pass --- src/SB/Game/zNPCSupplement.h | 2 +- src/SB/Game/zNPCSupport.cpp | 16 ++++++++-------- src/SB/Game/zNPCSupport.h | 5 +++-- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/SB/Game/zNPCSupplement.h b/src/SB/Game/zNPCSupplement.h index bdd2efaa5..7856eac2c 100644 --- a/src/SB/Game/zNPCSupplement.h +++ b/src/SB/Game/zNPCSupplement.h @@ -107,7 +107,7 @@ struct StreakInfo }; void NPCC_MakeASplash(const xVec3* pos, F32 radius); -void NPCSupplement_Startup (); +void NPCSupplement_Startup(); void NPCSupplement_Shutdown(); void NPAR_ScenePrepare(); void NPAR_SceneFinish(); diff --git a/src/SB/Game/zNPCSupport.cpp b/src/SB/Game/zNPCSupport.cpp index 8bd6e9c8f..ac21e005c 100644 --- a/src/SB/Game/zNPCSupport.cpp +++ b/src/SB/Game/zNPCSupport.cpp @@ -11,11 +11,11 @@ void NPCSupport_Startup() { - zNPCHazard_Startup(); - zNPCGlyph_Startup(); - NPCWidget_Startup(); - NPCSupplement_Startup(); - return; + zNPCHazard_Startup(); + zNPCGlyph_Startup(); + NPCWidget_Startup(); + NPCSupplement_Startup(); + return; } void NPCSupport_Shutdown() @@ -26,8 +26,8 @@ void NPCSupport_Shutdown() NPCSupplement_Shutdown(); } -void NPCWidget_Startup() -{ +void NPCWidget_Startup() +{ } void NPCWidget_Shutdown() { @@ -51,7 +51,7 @@ F32 NPCC_TmrCycle(float* tmr, float dt, float interval) if (*tmr > interval) { - *tmr = xfmod(*tmr,interval); + *tmr = xfmod(*tmr, interval); } return parameterized; diff --git a/src/SB/Game/zNPCSupport.h b/src/SB/Game/zNPCSupport.h index da86ac444..f8573a82b 100644 --- a/src/SB/Game/zNPCSupport.h +++ b/src/SB/Game/zNPCSupport.h @@ -46,7 +46,7 @@ struct NPCBlinker void Reset(); }; -void NPCWidget_Startup() ; +void NPCWidget_Startup(); void NPCWidget_Shutdown(); void NPCSupport_Startup(); void NPCSupport_ScenePrepare(); @@ -60,7 +60,8 @@ F32 NPCC_TmrCycle(float* tmr, float dt, float interval); xVec3* NPCC_rightDir(xEnt* ent); xVec3* NPCC_faceDir(xEnt* ent); void NPCC_ang_toXZDir(F32 angle, xVec3* dir); -F32 NPCC_aimVary(xVec3* dir_aim, xVec3* pos_src, xVec3* pos_tgt, F32 dst_vary, S32 flg_vary, xVec3* pos_aimPoint); +F32 NPCC_aimVary(xVec3* dir_aim, xVec3* pos_src, xVec3* pos_tgt, F32 dst_vary, S32 flg_vary, + xVec3* pos_aimPoint); F32 NPCC_ds2_toCam(const xVec3* pos_from, xVec3* delta); void zNPC_SNDStop(_tageNPCSnd snd); void zNPC_SNDPlay3D(_tageNPCSnd snd, xEnt*); From fd5746232d0d6210be3828bb0b32410fe972ed4f Mon Sep 17 00:00:00 2001 From: Livewire Date: Tue, 11 Mar 2025 23:50:07 -0400 Subject: [PATCH 03/10] zNPCSupport - completed some functions --- src/SB/Game/zNPCSupplement.h | 5 ++ src/SB/Game/zNPCSupport.cpp | 91 ++++++++++++++++++++++++++++++++++++ src/SB/Game/zNPCSupport.h | 14 +++++- 3 files changed, 108 insertions(+), 2 deletions(-) diff --git a/src/SB/Game/zNPCSupplement.h b/src/SB/Game/zNPCSupplement.h index 7856eac2c..38219ab51 100644 --- a/src/SB/Game/zNPCSupplement.h +++ b/src/SB/Game/zNPCSupplement.h @@ -109,6 +109,11 @@ struct StreakInfo void NPCC_MakeASplash(const xVec3* pos, F32 radius); void NPCSupplement_Startup(); void NPCSupplement_Shutdown(); +void NPCSupplement_ScenePrepare(); +void NPCSupplement_SceneFinish(); +void NPCSupplement_SceneReset(); +void NPCSupplement_ScenePostInit(); +void NPCSupplement_Timestep(F32 dt); void NPAR_ScenePrepare(); void NPAR_SceneFinish(); NPARMgmt* NPAR_PartySetup(en_nparptyp parType, void** userData, NPARXtraData* xtraData); diff --git a/src/SB/Game/zNPCSupport.cpp b/src/SB/Game/zNPCSupport.cpp index ac21e005c..17ed8c330 100644 --- a/src/SB/Game/zNPCSupport.cpp +++ b/src/SB/Game/zNPCSupport.cpp @@ -26,6 +26,56 @@ void NPCSupport_Shutdown() NPCSupplement_Shutdown(); } + +bool NPCSupport_ScenePrepare() +{ + zNPCHazard_ScenePrepare(); + zNPCGlyph_ScenePrepare(); + NPCWidget_ScenePrepare(); + NPCSupplement_ScenePrepare(); + Firework_ScenePrepare(); + return NPCC_ForceTalkOk(); +} + +void NPCSupport_SceneFinish() +{ + zNPCHazard_SceneFinish(); + zNPCGlyph_SceneFinish(); + NPCWidget_SceneFinish(); + NPCSupplement_SceneFinish(); + Firework_SceneFinish(); + return; +} + +void NPCSupport_ScenePostInit() +{ + zNPCHazard_ScenePostInit(); + zNPCGlyph_ScenePostInit(); + NPCWidget_ScenePostInit(); + NPCSupplement_ScenePostInit(); + zNPC_SNDInit(); + return; +} + +void NPCSupport_SceneReset() +{ + zNPCHazard_SceneReset(); + zNPCGlyph_SceneReset(); + NPCWidget_SceneReset(); + NPCSupplement_SceneReset(); + Firework_SceneReset(0); + return; +} + +void NPCSupport_Timestep(F32 dt) +{ + zNPCGlyph_Timestep(dt); + zNPCHazard_Timestep(dt); + NPCSupplement_Timestep(dt); + Firework_Timestep(dt); +} + + void NPCWidget_Startup() { } @@ -37,6 +87,47 @@ void NPCWidget_ScenePrepare() { } +void NPCWidget_SceneFinish() +{ +} + +void NPCWidget_SceneReset() +{ +} + +void NPCWidget_ScenePostInit() +{ +} + +void Firework_ScenePrepare() +{ + NPAR_PartySetup(NPAR_TYP_FIREWORKS, NULL, NULL); + Firework_SceneReset(0); +} + +void Firework_SceneFinish() +{ +} + +void Firework_SceneReset(int) +{ +} + +void Firework_Timestep(F32 dt) +{ +} + +bool NPCC_ForceTalkOk() +{ + return false; +} + +void zNPC_SNDInit() +{ +} + + + F32 NPCC_TmrCycle(float* tmr, float dt, float interval) { F32 parameterized; diff --git a/src/SB/Game/zNPCSupport.h b/src/SB/Game/zNPCSupport.h index f8573a82b..bd3d9fd29 100644 --- a/src/SB/Game/zNPCSupport.h +++ b/src/SB/Game/zNPCSupport.h @@ -46,17 +46,27 @@ struct NPCBlinker void Reset(); }; +bool NPCC_ForceTalkOk() ; void NPCWidget_Startup(); void NPCWidget_Shutdown(); +void NPCWidget_ScenePrepare(); +void NPCWidget_SceneFinish(); +void NPCWidget_SceneReset(); +void NPCWidget_ScenePostInit(); void NPCSupport_Startup(); -void NPCSupport_ScenePrepare(); +bool NPCSupport_ScenePrepare(); void NPCSupport_SceneFinish(); void NPCSupport_Timestep(F32 dt); void NPCSupport_SceneReset(); void NPCSupport_Shutdown(); void NPCSupport_ScenePostInit(); +void Firework_SceneReset(S32); +void Firework_ScenePrepare(); +void Firework_SceneFinish(); +void Firework_Timestep(F32 dt); +void zNPC_SNDInit(); S32 NPCC_LampStatus(); -F32 NPCC_TmrCycle(float* tmr, float dt, float interval); +F32 NPCC_TmrCycle(F32* tmr, F32 dt, F32 interval); xVec3* NPCC_rightDir(xEnt* ent); xVec3* NPCC_faceDir(xEnt* ent); void NPCC_ang_toXZDir(F32 angle, xVec3* dir); From c7b0c4cb6b85beec79d77ec3231d930a0d6ed761 Mon Sep 17 00:00:00 2001 From: Livewire Date: Tue, 11 Mar 2025 23:52:56 -0400 Subject: [PATCH 04/10] clang pass --- src/SB/Game/zNPCSupport.cpp | 52 +++++++++++++++++-------------------- src/SB/Game/zNPCSupport.h | 2 +- 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/src/SB/Game/zNPCSupport.cpp b/src/SB/Game/zNPCSupport.cpp index 17ed8c330..8dc7fc151 100644 --- a/src/SB/Game/zNPCSupport.cpp +++ b/src/SB/Game/zNPCSupport.cpp @@ -26,45 +26,44 @@ void NPCSupport_Shutdown() NPCSupplement_Shutdown(); } - bool NPCSupport_ScenePrepare() { - zNPCHazard_ScenePrepare(); - zNPCGlyph_ScenePrepare(); - NPCWidget_ScenePrepare(); - NPCSupplement_ScenePrepare(); - Firework_ScenePrepare(); - return NPCC_ForceTalkOk(); + zNPCHazard_ScenePrepare(); + zNPCGlyph_ScenePrepare(); + NPCWidget_ScenePrepare(); + NPCSupplement_ScenePrepare(); + Firework_ScenePrepare(); + return NPCC_ForceTalkOk(); } void NPCSupport_SceneFinish() { - zNPCHazard_SceneFinish(); - zNPCGlyph_SceneFinish(); - NPCWidget_SceneFinish(); - NPCSupplement_SceneFinish(); - Firework_SceneFinish(); - return; + zNPCHazard_SceneFinish(); + zNPCGlyph_SceneFinish(); + NPCWidget_SceneFinish(); + NPCSupplement_SceneFinish(); + Firework_SceneFinish(); + return; } void NPCSupport_ScenePostInit() { - zNPCHazard_ScenePostInit(); - zNPCGlyph_ScenePostInit(); - NPCWidget_ScenePostInit(); - NPCSupplement_ScenePostInit(); - zNPC_SNDInit(); - return; + zNPCHazard_ScenePostInit(); + zNPCGlyph_ScenePostInit(); + NPCWidget_ScenePostInit(); + NPCSupplement_ScenePostInit(); + zNPC_SNDInit(); + return; } void NPCSupport_SceneReset() { - zNPCHazard_SceneReset(); - zNPCGlyph_SceneReset(); - NPCWidget_SceneReset(); - NPCSupplement_SceneReset(); - Firework_SceneReset(0); - return; + zNPCHazard_SceneReset(); + zNPCGlyph_SceneReset(); + NPCWidget_SceneReset(); + NPCSupplement_SceneReset(); + Firework_SceneReset(0); + return; } void NPCSupport_Timestep(F32 dt) @@ -75,7 +74,6 @@ void NPCSupport_Timestep(F32 dt) Firework_Timestep(dt); } - void NPCWidget_Startup() { } @@ -126,8 +124,6 @@ void zNPC_SNDInit() { } - - F32 NPCC_TmrCycle(float* tmr, float dt, float interval) { F32 parameterized; diff --git a/src/SB/Game/zNPCSupport.h b/src/SB/Game/zNPCSupport.h index bd3d9fd29..115428388 100644 --- a/src/SB/Game/zNPCSupport.h +++ b/src/SB/Game/zNPCSupport.h @@ -46,7 +46,7 @@ struct NPCBlinker void Reset(); }; -bool NPCC_ForceTalkOk() ; +bool NPCC_ForceTalkOk(); void NPCWidget_Startup(); void NPCWidget_Shutdown(); void NPCWidget_ScenePrepare(); From 8c254f113bcc450e0521516472af38b1de7c06b6 Mon Sep 17 00:00:00 2001 From: Livewire <87439290+LivewireCB@users.noreply.github.com> Date: Wed, 12 Mar 2025 00:44:47 -0400 Subject: [PATCH 05/10] 2 rwrasters --- src/SB/Game/zNPCSupport.cpp | 24 ++++++++++++++++++++++++ src/SB/Game/zNPCSupport.h | 4 ++++ 2 files changed, 28 insertions(+) diff --git a/src/SB/Game/zNPCSupport.cpp b/src/SB/Game/zNPCSupport.cpp index 8dc7fc151..de26c843a 100644 --- a/src/SB/Game/zNPCSupport.cpp +++ b/src/SB/Game/zNPCSupport.cpp @@ -120,6 +120,30 @@ bool NPCC_ForceTalkOk() return false; } +RwRaster* NPCC_FindRWRaster(const char* txtrname) +{ + RwTexture* txtr = NPCC_FindRWTexture(txtrname); + if (txtr != NULL) + { + return txtr->raster; + } + return NULL; +} + +RwTexture* NPCC_FindRWTexture(const char*) +{ + return NULL; +} + +RwRaster* NPCC_FindRWRaster(RwTexture* txtr) +{ + if (txtr != NULL) + { + return txtr->raster; + } + return NULL; +} + void zNPC_SNDInit() { } diff --git a/src/SB/Game/zNPCSupport.h b/src/SB/Game/zNPCSupport.h index 115428388..c30bd99ce 100644 --- a/src/SB/Game/zNPCSupport.h +++ b/src/SB/Game/zNPCSupport.h @@ -64,6 +64,10 @@ void Firework_SceneReset(S32); void Firework_ScenePrepare(); void Firework_SceneFinish(); void Firework_Timestep(F32 dt); +RwTexture* NPCC_FindRWTexture(U32 hashid); +RwTexture* NPCC_FindRWTexture(const char* txtrname); +RwRaster* NPCC_FindRWRaster(const char* txtrname); +RwRaster* NPCC_FindRWRaster(RwTexture* txtr); void zNPC_SNDInit(); S32 NPCC_LampStatus(); F32 NPCC_TmrCycle(F32* tmr, F32 dt, F32 interval); From b80600eb65fe575b8e12c163bd0beda5f841ae53 Mon Sep 17 00:00:00 2001 From: Livewire <87439290+LivewireCB@users.noreply.github.com> Date: Wed, 12 Mar 2025 00:58:06 -0400 Subject: [PATCH 06/10] more changes --- src/SB/Game/zNPCSupport.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SB/Game/zNPCSupport.cpp b/src/SB/Game/zNPCSupport.cpp index de26c843a..90c325f0b 100644 --- a/src/SB/Game/zNPCSupport.cpp +++ b/src/SB/Game/zNPCSupport.cpp @@ -105,6 +105,7 @@ void Firework_ScenePrepare() void Firework_SceneFinish() { + Firework_SceneReset(1); } void Firework_SceneReset(int) From f33d36221b13d8d5df337fbbab558f2cbf018166 Mon Sep 17 00:00:00 2001 From: Livewire <87439290+LivewireCB@users.noreply.github.com> Date: Wed, 12 Mar 2025 23:28:50 -0400 Subject: [PATCH 07/10] worked through npcwidget_scenereset and npcwidget_startup --- src/SB/Game/zNPCSupport.cpp | 11 +++++++++-- src/SB/Game/zNPCSupport.h | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/SB/Game/zNPCSupport.cpp b/src/SB/Game/zNPCSupport.cpp index 90c325f0b..546cb8d89 100644 --- a/src/SB/Game/zNPCSupport.cpp +++ b/src/SB/Game/zNPCSupport.cpp @@ -9,7 +9,6 @@ #include "xMathInlines.h" void NPCSupport_Startup() - { zNPCHazard_Startup(); zNPCGlyph_Startup(); @@ -76,7 +75,9 @@ void NPCSupport_Timestep(F32 dt) void NPCWidget_Startup() { + g_hash_uiwidgets[0] = xStrHash((const char*)g_strz_uiwidgets); } + void NPCWidget_Shutdown() { } @@ -87,9 +88,15 @@ void NPCWidget_ScenePrepare() void NPCWidget_SceneFinish() { + NPCWidget_SceneReset(); +} + +void NPCWidget_SceneReset() // Come back after more data is in +{ + g_npc_widgets->Reset(); } -void NPCWidget_SceneReset() +void NPCWidget::Reset() { } diff --git a/src/SB/Game/zNPCSupport.h b/src/SB/Game/zNPCSupport.h index c30bd99ce..d6a889fb7 100644 --- a/src/SB/Game/zNPCSupport.h +++ b/src/SB/Game/zNPCSupport.h @@ -25,6 +25,11 @@ enum _tageNPCSnd eNPCSnd_Total }; +enum en_NPC_UI_WIDGETS +{ + NPC_UI_WIDGETS_unk // Come back after more data is put in +}; + struct NPCTarget { en_npctgt typ_target; @@ -46,13 +51,29 @@ struct NPCBlinker void Reset(); }; +struct NPCWidget +{ + en_NPC_UI_WIDGETS idxID; + xBase* base_widge; + zNPCCommon* npc_ownerlock; + + U32 NPCIsTheLocker(zNPCCommon* npc_lock); + U32 IsVisible(); + U32 Off(zNPCCommon* npc, U32 theman); + U32 On(zNPCCommon* npc, U32 theman); + void Reset(); +}; + bool NPCC_ForceTalkOk(); void NPCWidget_Startup(); +static U32 g_hash_uiwidgets[1]; +static char* g_strz_uiwidgets[1] = {}; void NPCWidget_Shutdown(); void NPCWidget_ScenePrepare(); void NPCWidget_SceneFinish(); void NPCWidget_SceneReset(); void NPCWidget_ScenePostInit(); +NPCWidget g_npc_widgets[1] = {}; void NPCSupport_Startup(); bool NPCSupport_ScenePrepare(); void NPCSupport_SceneFinish(); From 3d070afa80f4260add3151b5fd77231a9f31a47e Mon Sep 17 00:00:00 2001 From: Livewire <87439290+LivewireCB@users.noreply.github.com> Date: Wed, 12 Mar 2025 23:37:07 -0400 Subject: [PATCH 08/10] ficed the nonbuilding --- src/SB/Game/zNPCSupport.cpp | 4 ++++ src/SB/Game/zNPCSupport.h | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/SB/Game/zNPCSupport.cpp b/src/SB/Game/zNPCSupport.cpp index 546cb8d89..8d5e43ce3 100644 --- a/src/SB/Game/zNPCSupport.cpp +++ b/src/SB/Game/zNPCSupport.cpp @@ -8,6 +8,10 @@ #include "xMathInlines.h" +NPCWidget g_npc_widgets[1] = {}; +static U32 g_hash_uiwidgets[1]; +static char* g_strz_uiwidgets[1] = {}; + void NPCSupport_Startup() { zNPCHazard_Startup(); diff --git a/src/SB/Game/zNPCSupport.h b/src/SB/Game/zNPCSupport.h index d6a889fb7..e10cd9bab 100644 --- a/src/SB/Game/zNPCSupport.h +++ b/src/SB/Game/zNPCSupport.h @@ -66,14 +66,11 @@ struct NPCWidget bool NPCC_ForceTalkOk(); void NPCWidget_Startup(); -static U32 g_hash_uiwidgets[1]; -static char* g_strz_uiwidgets[1] = {}; void NPCWidget_Shutdown(); void NPCWidget_ScenePrepare(); void NPCWidget_SceneFinish(); void NPCWidget_SceneReset(); void NPCWidget_ScenePostInit(); -NPCWidget g_npc_widgets[1] = {}; void NPCSupport_Startup(); bool NPCSupport_ScenePrepare(); void NPCSupport_SceneFinish(); From 31bc8c78443d693e8110a9bdbe2a2d10f80ce85f Mon Sep 17 00:00:00 2001 From: Livewire <87439290+LivewireCB@users.noreply.github.com> Date: Fri, 14 Mar 2025 20:43:46 -0400 Subject: [PATCH 09/10] a --- src/SB/Game/zNPCSupport.cpp | 19 +++++++++++++++++++ src/SB/Game/zNPCSupport.h | 3 +++ 2 files changed, 22 insertions(+) diff --git a/src/SB/Game/zNPCSupport.cpp b/src/SB/Game/zNPCSupport.cpp index 8d5e43ce3..baa493287 100644 --- a/src/SB/Game/zNPCSupport.cpp +++ b/src/SB/Game/zNPCSupport.cpp @@ -108,6 +108,25 @@ void NPCWidget_ScenePostInit() { } +void NPCWidget_Find(en_NPC_UI_WIDGETS) +{ + zSceneFindObject(g_hash_uiwidgets[1]); +} + +void NPCWidget::Init(en_NPC_UI_WIDGETS) +{ +} + +void NPCTarget::TargetClear() +{ + g_hash_uiwidgets[1] = 0; + return; + + //load 0 into r0 + // store r0 into 0x4(r3) + // store r0 into 0x0(r3) +} + void Firework_ScenePrepare() { NPAR_PartySetup(NPAR_TYP_FIREWORKS, NULL, NULL); diff --git a/src/SB/Game/zNPCSupport.h b/src/SB/Game/zNPCSupport.h index e10cd9bab..6279c0082 100644 --- a/src/SB/Game/zNPCSupport.h +++ b/src/SB/Game/zNPCSupport.h @@ -41,6 +41,8 @@ struct NPCTarget zMovePoint* nav_target; }; zNPCCommon* npc_owner; + + void TargetClear(); }; struct NPCBlinker @@ -62,6 +64,7 @@ struct NPCWidget U32 Off(zNPCCommon* npc, U32 theman); U32 On(zNPCCommon* npc, U32 theman); void Reset(); + void Init(en_NPC_UI_WIDGETS); }; bool NPCC_ForceTalkOk(); From 07e43df729d97384ee3c9b6cb11a9c2c73253025 Mon Sep 17 00:00:00 2001 From: Livewire <87439290+LivewireCB@users.noreply.github.com> Date: Sat, 15 Mar 2025 00:29:08 -0400 Subject: [PATCH 10/10] like 2 functions or smth --- src/SB/Game/zNPCSupport.cpp | 20 ++++++++++++----- src/SB/Game/zNPCSupport.h | 43 ++++++++++++++++++++++++++++++++++++- 2 files changed, 57 insertions(+), 6 deletions(-) diff --git a/src/SB/Game/zNPCSupport.cpp b/src/SB/Game/zNPCSupport.cpp index baa493287..da6ee848d 100644 --- a/src/SB/Game/zNPCSupport.cpp +++ b/src/SB/Game/zNPCSupport.cpp @@ -119,12 +119,18 @@ void NPCWidget::Init(en_NPC_UI_WIDGETS) void NPCTarget::TargetClear() { - g_hash_uiwidgets[1] = 0; - return; + ent_target = 0; //0x4? + typ_target = NPC_TGT_NONE; +} - //load 0 into r0 - // store r0 into 0x4(r3) - // store r0 into 0x0(r3) +void NPCBlinker::Reset() +{ +} + +void Firework_Release(Firework* firework) +{ + firework->Cleanup(); + firework->fwstate = FW_STAT_UNUSED; } void Firework_ScenePrepare() @@ -138,6 +144,10 @@ void Firework_SceneFinish() Firework_SceneReset(1); } +void Firework::Cleanup() +{ +} + void Firework_SceneReset(int) { } diff --git a/src/SB/Game/zNPCSupport.h b/src/SB/Game/zNPCSupport.h index 6279c0082..8dfaa1909 100644 --- a/src/SB/Game/zNPCSupport.h +++ b/src/SB/Game/zNPCSupport.h @@ -30,12 +30,34 @@ enum en_NPC_UI_WIDGETS NPC_UI_WIDGETS_unk // Come back after more data is put in }; +enum en_fwstate +{ + FW_STAT_UNUSED, + FW_STAT_READY, + FW_STAT_FLIGHT, + FW_STAT_BOOM, + FW_STAT_DONE, + FW_STAT_NOMORE, + FW_STAT_FORCE = 0x7fffffff +}; + +enum en_fwstyle +{ + FW_STYL_DEFAULT, + FW_STYL_JULY4TH, + FW_STYL_XMAS, + FW_STYL_STPATS, + FW_STYL_VALENTINE, + FW_STYL_NOMORE, + FW_STYL_FORCE = 0x7fffffff +}; + struct NPCTarget { en_npctgt typ_target; union { - xEnt* ent_target; + xEnt* ent_target; //0x4 xBase* bas_target; xVec3 pos_target; zMovePoint* nav_target; @@ -67,6 +89,24 @@ struct NPCWidget void Init(en_NPC_UI_WIDGETS); }; +struct Firework +{ + struct + { + en_fwstate fwstate : 8; + en_fwstyle fwstyle : 8; + S32 flg_firework : 16; //0x2 + }; + F32 tym_lifespan; + F32 tmr_remain; //0x14? + xVec3 pos; + xVec3 vel; + + void FlyFlyFly(F32 dt); + void Update(F32 dt); + void Cleanup(); +}; + bool NPCC_ForceTalkOk(); void NPCWidget_Startup(); void NPCWidget_Shutdown(); @@ -85,6 +125,7 @@ void Firework_SceneReset(S32); void Firework_ScenePrepare(); void Firework_SceneFinish(); void Firework_Timestep(F32 dt); +void Firework_Release(Firework*); RwTexture* NPCC_FindRWTexture(U32 hashid); RwTexture* NPCC_FindRWTexture(const char* txtrname); RwRaster* NPCC_FindRWRaster(const char* txtrname);