summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_e_bee.cpp
diff options
context:
space:
mode:
authorhatal175 <hatal175@users.noreply.github.com>2025-06-30 06:38:04 +0300
committerGitHub <noreply@github.com>2025-06-29 20:38:04 -0700
commit214cfce7f6767cbe9781b36546de31c5082ff362 (patch)
tree975bf318fe002a8baceb58b085d01a58b1e8512f /src/d/actor/d_a_e_bee.cpp
parent844a554a3b006cf9f4f55c3d393d97676a468d6d (diff)
d_a_bg_obj equivalent + misc (#2509)
* d_a_bg_obj equivalent + misc * More Z2LinkMgr Matches
Diffstat (limited to 'src/d/actor/d_a_e_bee.cpp')
-rw-r--r--src/d/actor/d_a_e_bee.cpp83
1 files changed, 50 insertions, 33 deletions
diff --git a/src/d/actor/d_a_e_bee.cpp b/src/d/actor/d_a_e_bee.cpp
index d20f176f20..d6e7e4ffe2 100644
--- a/src/d/actor/d_a_e_bee.cpp
+++ b/src/d/actor/d_a_e_bee.cpp
@@ -8,6 +8,7 @@
#include "d/d_com_inf_game.h"
#include "d/actor/d_a_player.h"
#include "d/d_procname.h"
+#include "d/d_s_play.h"
#include "SSystem/SComponent/c_math.h"
/* 80685638-8068563C 000008 0001+03 1/1 0/0 0/0 .bss @1109 */
@@ -543,38 +544,53 @@ static void bee_start(e_bee_class* i_this, bee_s* i_bee) {
/* 80684248-80684A94 001AC8 084C+00 1/1 0/0 0/0 .text bee_control__FP11e_bee_class */
// NONMATCHING regalloc
static void bee_control(e_bee_class* i_this) {
- s8 nest_health = 0;
+ fopAc_ac_c* parent;
+ s8 bees_in_nest;
+ camera_class* camera;
+ e_nest_class* nest;
+ int i;
+ fopAc_ac_c* a_this;
+ cXyz* hit_pos_p;
+ bee_s* bee;
+ s8 nest_health;
+ s8 active_bees;
+ s8 bees_flying;
+
+ a_this = (fopAc_ac_c*)i_this;
+
+ nest_health = 0;
static cXyz non(-20000.0f, 30000.0f, -15000.0f);
- i_this->mCcSph.SetC(i_this->current.pos + non);
+ i_this->mCcSph.SetC(a_this->current.pos + non);
- fopAc_ac_c* parent = fopAcM_SearchByID(i_this->parentActorID);
- e_nest_class* nest = NULL;
+ parent = fopAcM_SearchByID(a_this->parentActorID);
+ nest = NULL;
if (parent != NULL) {
if (parent != NULL && parent->health != 0) {
nest_health = parent->health;
}
- nest = static_cast<e_nest_class*>(parent);
- i_this->home.pos = nest->mCenterPos;
+ nest = (e_nest_class*)parent;
+ a_this->home.pos = nest->mCenterPos;
}
dComIfG_Ccsp()->Set(&i_this->mCcCyl);
+ hit_pos_p = NULL;
cXyz hit_pos;
- cXyz* hit_pos_p = NULL;
f32 hit_radius = 120.0f;
-
+
if (i_this->mCcCyl.ChkTgHit()) {
+ cXyz vec1, vec2;
hit_pos_p = &hit_pos;
cCcD_Obj* hit_obj = i_this->mCcCyl.GetTgHitObj();
if (hit_obj->ChkAtType(AT_TYPE_BOMB) || hit_obj->ChkAtType(AT_TYPE_BOOMERANG)
|| hit_obj->ChkAtType(AT_TYPE_IRON_BALL)) {
fopAc_ac_c* hit_actor = dCc_GetAc(hit_obj->GetAc());
if (hit_obj->ChkAtType(AT_TYPE_BOMB)) {
- hit_radius = 300.0f;
+ hit_radius = 300.0f + TREG_F(19);
hit_pos = hit_actor->current.pos;
} else if (hit_obj->ChkAtType(AT_TYPE_IRON_BALL)) {
- hit_radius = 100.0f;
+ hit_radius = 100.0f+ TREG_F(19);
daPy_py_c* player = static_cast<daPy_py_c*>(dComIfGp_getPlayer(0));
cXyz* center = player->getIronBallCenterPos();
if (center != NULL) {
@@ -582,18 +598,17 @@ static void bee_control(e_bee_class* i_this) {
}
} else {
hit_pos = hit_actor->current.pos;
- hit_radius = 150.0f;
+ hit_radius = 150.0f + TREG_F(19);
}
} else {
- cXyz vec1, vec2;
daPy_py_c* player = daPy_getPlayerActorClass();
if (cc_pl_cut_bit_get() == 0x80) {
- i_this->mBoomerangAngle += 0x1400;
- vec1.z = 150.0f;
+ i_this->mBoomerangAngle += (s16)0x1400;
+ vec1.z = 150.0f + TREG_F(15);
} else {
- vec1.z = 100.0f;
+ vec1.z = 100.0f + TREG_F(12);
}
- mDoMtx_YrotS(*calc_mtx, player->shape_angle.y + i_this->mBoomerangAngle);
+ cMtx_YrotS(*calc_mtx, player->shape_angle.y + i_this->mBoomerangAngle);
vec1.x = 0.0f;
vec1.y = 100.0f;
MtxPosition(&vec1, &vec2);
@@ -603,12 +618,13 @@ static void bee_control(e_bee_class* i_this) {
i_this->mBoomerangAngle = 0;
}
- bee_s* bee = i_this->mBees;
- s8 active_bees = 0;
+ bee = i_this->mBees;
+ active_bees = 0;
+ cXyz vec3;
ccCylSet = 0;
- s8 bees_in_nest = 0;
- s8 bees_flying = 0;
- camera_class* camera = dComIfGp_getCamera(0);
+ bees_in_nest = 0;
+ bees_flying = 0;
+ camera = dComIfGp_getCamera(0);
if ((nest != NULL && nest->mDemoStage == 0 && dComIfGp_event_runCheck())
|| !daPy_getPlayerActorClass()->checkSwimUp()
@@ -622,16 +638,15 @@ static void bee_control(e_bee_class* i_this) {
i_this->mHomeTimer = 10;
}
- for (int i = 0; i < i_this->mNumBees; i++, bee++) {
+ for (i = 0; i < i_this->mNumBees; i++, bee++) {
if (bee->mAction != bee_s::ACT_DEAD) {
- bee->mNoDraw = false;
active_bees++;
- cXyz vec3;
+ bee->mNoDraw = false;
if (dComIfGp_checkPlayerStatus0(0, 0x200000)) {
vec3.x = bee->mPos.x - camera->lookat.eye.x;
vec3.z = bee->mPos.z - camera->lookat.eye.z;
- if (JMAFastSqrt(vec3.x * vec3.x + vec3.z * vec3.z) > 2500.0f) {
+ if (JMAFastSqrt(vec3.x * vec3.x + vec3.z * vec3.z) > NREG_F(0) + 2500.0f) {
bee->mNoDraw = true;
}
}
@@ -646,7 +661,7 @@ static void bee_control(e_bee_class* i_this) {
} else if (bee->mAction <= bee_s::ACT_FLY_HOME_B) {
bee->mCounter++;
if (bee_fly_action(i_this, bee)) {
- i_this->current.pos = bee->mPos;
+ a_this->current.pos = bee->mPos;
bees_flying++;
}
if (hit_pos_p != NULL) {
@@ -654,7 +669,7 @@ static void bee_control(e_bee_class* i_this) {
if (vec3.abs() < hit_radius) {
bee->mAction = bee_s::ACT_FAIL;
bee->mMode = 0;
- mDoMtx_YrotS(*calc_mtx, cM_atan2s(vec3.x, vec3.z));
+ cMtx_YrotS(*calc_mtx, cM_atan2s(vec3.x, vec3.z));
vec3.x = 0.0f;
vec3.y = cM_rndF(10.0f) + 20.0f;
vec3.z = cM_rndF(10.0f) + 20.0f;
@@ -664,7 +679,7 @@ static void bee_control(e_bee_class* i_this) {
bee->mTimer = 0;
bee->mSound.startSound(Z2SE_EN_BE_DEATH, 0, -1);
cXyz hit_mark_scale(0.35f, 0.35f, 0.35f);
- dComIfGp_setHitMark(1, i_this, &bee->mPos, NULL, &hit_mark_scale, 0);
+ dComIfGp_setHitMark(1, a_this, &bee->mPos, NULL, &hit_mark_scale, 0);
}
}
} else if (bee->mAction == bee_s::ACT_FAIL) {
@@ -673,12 +688,13 @@ static void bee_control(e_bee_class* i_this) {
bees_flying++;
bee_start(i_this, bee);
}
- bee->mSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this)));
+ bee->mSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(a_this)));
}
}
if (active_bees == 0) {
- fopAcM_delete(i_this);
+ fopAcM_delete(a_this);
+ OS_REPORT("E_BEE DELETED \n");
} else {
if (bees_flying != 0) {
if (dComIfGp_event_runCheck()) {
@@ -687,19 +703,20 @@ static void bee_control(e_bee_class* i_this) {
i_this->mSound.playBeeGroupSound(Z2SE_EN_BE_FLY, bees_flying);
}
}
- i_this->mSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this)));
+ i_this->mSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(a_this)));
if (nest != NULL) {
if (bees_in_nest != 0) {
nest->mBeeSound.playBeeGroupSound(Z2SE_EN_BE_STAY, bees_in_nest);
}
- nest->mBeeSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this)));
+ nest->mBeeSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(a_this)));
}
}
if (!dComIfGp_event_runCheck()) {
dComIfG_Ccsp()->Set(&i_this->mCcSph);
if (i_this->mCcSph.ChkAtHit()) {
- fopAc_ac_c* hit_actor = dCc_GetAc(i_this->mCcSph.GetAtHitObj()->GetAc());
+ cCcD_Obj* hitObj = i_this->mCcSph.GetAtHitObj();
+ fopAc_ac_c* hit_actor = dCc_GetAc(hitObj->GetAc());
if (hit_actor != NULL && fopAcM_GetName(hit_actor) == PROC_ALINK) {
dComIfGp_getVibration().StartShock(4, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
}