summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarco_21 <144170194+carter-ktb21@users.noreply.github.com>2025-12-15 20:02:29 -0500
committerGitHub <noreply@github.com>2025-12-15 17:02:29 -0800
commit86bf7686658d54b620647b2d92983bbbff7d5e77 (patch)
tree8fb94d3eabaa09d1b4dad222fe816f2b1a0aa3d7 /src
parentd7facf5956b50ad28523908336c01c9c7ab52ea9 (diff)
d_a_obj_bemos debug work (#2947)
* debug work * PR cleanup
Diffstat (limited to 'src')
-rw-r--r--src/d/actor/d_a_obj_bemos.cpp1420
1 files changed, 709 insertions, 711 deletions
diff --git a/src/d/actor/d_a_obj_bemos.cpp b/src/d/actor/d_a_obj_bemos.cpp
index af4d0ac41c..c93c0904d8 100644
--- a/src/d/actor/d_a_obj_bemos.cpp
+++ b/src/d/actor/d_a_obj_bemos.cpp
@@ -7,6 +7,7 @@
#include "SSystem/SComponent/c_lib.h"
#include "d/actor/d_a_obj_bemos.h"
+#include "res/Object/Obj_bm.h"
#include "d/d_camera.h"
#include "d/d_cc_d.h"
#include "d/d_com_inf_game.h"
@@ -16,6 +17,25 @@
#include "d/d_s_play.h"
#include "Z2AudioLib/Z2Instances.h"
+enum Action_e {
+ /* 0x0 */ ACTION_SW_WAIT_e,
+ /* 0x1 */ ACTION_WARNING_e,
+ /* 0x2 */ ACTION_FIND_PLAYER_e,
+ /* 0x3 */ ACTION_ATTACK_e,
+ /* 0x4 */ ACTION_DEAD_e,
+};
+
+enum Mode_e {
+ /* 0x0 */ MODE_WAIT_e,
+ /* 0x1 */ MODE_WALK_e,
+ /* 0x2 */ MODE_AFL_e,
+ /* 0x3 */ MODE_DEAD_e,
+};
+
+#if DEBUG
+#pragma nosyminline on
+#endif
+
static Vec const l_eye_offset = {0.0f, 330.0f, 75.0f};
static Vec const l_high_beam_offset = {0.0f, 255.0f, 65.0f};
@@ -38,6 +58,68 @@ s16 const daObjBm_c::M_dir_base[4] = {
0xC000,
};
+static const char* l_arcName = "Obj_bm";
+
+static const char* l_eye_matName = "bmEye";
+
+static char* l_head_joint = "head";
+
+static char* l_bigGear_joint = "cogRed";
+
+static char* l_smallGear0_joint = "cogBlue";
+
+static char* l_smallGear1_joint = "cogGreen";
+
+static char* l_smallGear2_joint = "cogYellow";
+
+static char* l_joint_table[5] = {
+ l_head_joint, l_bigGear_joint, l_smallGear0_joint, l_smallGear1_joint, l_smallGear2_joint,
+};
+
+static cull_box l_cull_box = {
+ {-1200.0f, -100.0f, -1200.0f},
+ {1200.0f, 400.0f, 1200.0f},
+};
+
+static dCcD_SrcSph l_sph_src = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x402020, 0x11}, 0x58}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 50.0f} // mSph
+ } // mSphAttr
+};
+
+static dCcD_SrcCps l_cps_src = {
+ {
+ {0x0, {{0x100, 0x1, 0x1d}, {0x0, 0x0}, 0x0}}, // mObj
+ {dCcD_SE_SWORD, 0x0, 0x0, 0x1, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x4}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, 20.0f}, // mCps
+ } // mCpsAttr
+};
+
+static dCcD_SrcCyl l_cyl_src = {
+ {
+ {0x0, {{0x0, 0x0, 0x1f}, {0x0, 0x0}, 0x79}}, // mObj
+ {dCcD_SE_NONE, 0x1, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x6}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {0.0f, 0.0f, 0.0f}, // mCenter
+ 15.0f, // mRadius
+ 60.0f // mHeight
+ } // mCyl
+};
+
+
#if DEBUG
class daObjBm_HIO_c : public mDoHIO_entry_c {
public:
@@ -45,91 +127,120 @@ public:
void genMessage(JORMContext*);
- /* 0x08 */ cXyz mBeamScale;
- /* 0x14 */ f32 mBeamLowerDistance;
- /* 0x18 */ f32 mBeamMiddleDistance;
+ /* 0x08 */ cXyz beam_scale;
+ /* 0x14 */ f32 beam_lower_dist;
+ /* 0x18 */ f32 beam_middle_dist;
/* 0x1C */ f32 field_0x1C;
- /* 0x20 */ f32 mSearchDistance;
- /* 0x24 */ f32 mTargetOffsetDistance;
- /* 0x28 */ s16 mSearchAngle;
- /* 0x2A */ s16 mPatrolRotationSpeed;
- /* 0x0C */ s16 mAttackRotationSpeed;
- /* 0x2E */ s16 mNoSearchTimeAfterSwitchActivation;
- /* 0x30 */ s16 mDetectionAngle;
- /* 0x32 */ s16 mSearchSpeedOnDetection;
- /* 0x34 */ f32 mBodyScale;
- /* 0x38 */ f32 mSoundPositionMoveSpeed;
- /* 0x3C */ u8 mNoSearchAttackTime;
- /* 0x3D */ u8 mDebugDraw;
- /* 0x3E */ u8 mCheckDraw;
+ /* 0x20 */ f32 search_dist;
+ /* 0x24 */ f32 target_offset_dist;
+ /* 0x28 */ s16 search_angle;
+ /* 0x2A */ s16 patrol_rot_spd;
+ /* 0x2C */ s16 attack_rot_spd;
+ /* 0x2E */ s16 after_switch_activate_no_search_time;
+ /* 0x30 */ s16 detection_angle;
+ /* 0x32 */ s16 search_spd_on_detect;
+ /* 0x34 */ f32 body_scale;
+ /* 0x38 */ f32 sound_pos_move_spd;
+ /* 0x3C */ u8 no_search_attack_time;
+ /* 0x3D */ u8 debug_draw;
+ /* 0x3E */ u8 check_draw;
};
daObjBm_HIO_c l_HIO;
daObjBm_HIO_c::daObjBm_HIO_c() {
- mBeamScale.set(0.5f, 0.5f, 1.0f);
- mSearchDistance = 1000.0f;
- mSearchAngle = 30000;
- mPatrolRotationSpeed = 500;
- mAttackRotationSpeed = 450;
- mBeamLowerDistance = 300.0f;
- mBeamMiddleDistance = 600.0f;
+ beam_scale.set(0.5f, 0.5f, 1.0f);
+ search_dist = 1000.0f;
+ search_angle = 30000;
+ patrol_rot_spd = 500;
+ attack_rot_spd = 450;
+ beam_lower_dist = 300.0f;
+ beam_middle_dist = 600.0f;
field_0x1C = 1000.0f;
- mTargetOffsetDistance = 0.0f;
- mNoSearchTimeAfterSwitchActivation = 20;
- mDetectionAngle = 25000;
- mSoundPositionMoveSpeed = 60.0f;
- mNoSearchAttackTime = 0;
- mSearchSpeedOnDetection = 1000;
- mBodyScale = 1.0f;
- mDebugDraw = 0;
- mCheckDraw = 0;
+ target_offset_dist = 0.0f;
+ after_switch_activate_no_search_time = 20;
+ detection_angle = 25000;
+ sound_pos_move_spd = 60.0f;
+ no_search_attack_time = 0;
+ search_spd_on_detect = 1000;
+ body_scale = 1.0f;
+ debug_draw = 0;
+ check_draw = 0;
}
void daObjBm_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel("ビーモス", 0, 0, NULL, -1, -1, 512, 24);
- ctx->genCheckBox("デバッグ描画", &mDebugDraw, 1, 0, NULL, -1, -1, 512, 24);
- ctx->genSlider("サーチ距離", &mSearchDistance, 100.0f, 5000.0f, 0, NULL, -1, -1, 512, 24);
- ctx->genSlider("サーチ角度", &mSearchAngle, 0.0f, 32767.0f, 0, NULL, -1, -1, 512, 24);
- ctx->genSlider("発見角度", &mDetectionAngle, 0.0f, 32767.0f, 0, NULL, -1, -1, 512, 24);
- ctx->genSlider("巡回回転速度", &mPatrolRotationSpeed, 0.0f, 1000.0f, 0, NULL, -1, -1, 512, 24);
- ctx->genSlider("攻撃回転速度", &mAttackRotationSpeed, 0.0f, 1000.0f, 0, NULL, -1, -1, 512, 24);
- ctx->genSlider("ビーム発射・下距離", &mBeamLowerDistance, 0.0f, 1000.0f, 0, NULL, -1, -1, 512,
- 24);
- ctx->genSlider("ビーム発射・中距離", &mBeamMiddleDistance, 0.0f, 1000.0f, 0, NULL, -1, -1, 512,
- 24);
- ctx->genSlider("目標オフセット距離", &mTargetOffsetDistance, 0.0f, 500.0f, 0, NULL, -1, -1, 512,
- 24);
- ctx->genSlider("SW起動後サーチ無し時間", &mNoSearchTimeAfterSwitchActivation, 0.0f, 1000.0f,
- 0, NULL, -1, -1, 512, 24);
- ctx->genSlider("発音位置移動速度", &mSoundPositionMoveSpeed, 0.0f, 1000.0f, 0, NULL, -1, -1,
- 512, 24);
- ctx->genSlider("サーチ無し攻撃時間", &mNoSearchAttackTime, 0.0f, 100.0f, 0, NULL, -1, -1, 512,
- 24);
- ctx->genSlider("発見時のサーチ速度", &mSearchSpeedOnDetection, 0.0f, 10000.0f, 0, NULL, -1, -1,
- 512, 24);
- ctx->genSlider("本体スケール", &mBodyScale, 0.1f, 5.0f, 0, NULL, -1, -1, 512, 24);
- ctx->genSlider("ビームXスケール", &mBeamScale.x, 0.1f, 10.0f, 0, NULL, -1, -1, 512, 24);
- ctx->genSlider("ビームYスケール", &mBeamScale.y, 0.1f, 10.0f, 0, NULL, -1, -1, 512, 24);
- ctx->genCheckBox("チェック描画", &mCheckDraw, 1, 0, NULL, -1, -1, 512, 24);
+ ctx->genCheckBox("デバッグ描画", &debug_draw, 1, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("サーチ距離", &search_dist, 100.0f, 5000.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("サーチ角度", &search_angle, 0.0f, 32767.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("発見角度", &detection_angle, 0.0f, 32767.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("巡回回転速度", &patrol_rot_spd, 0.0f, 1000.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("攻撃回転速度", &attack_rot_spd, 0.0f, 1000.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("ビーム発射・下距離", &beam_lower_dist, 0.0f, 1000.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("ビーム発射・中距離", &beam_middle_dist, 0.0f, 1000.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("目標オフセット距離", &target_offset_dist, 0.0f, 500.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("SW起動後サーチ無し時間", &after_switch_activate_no_search_time, 0.0f, 1000.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("発音位置移動速度", &sound_pos_move_spd, 0.0f, 1000.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("サーチ無し攻撃時間", &no_search_attack_time, 0.0f, 100.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("発見時のサーチ速度", &search_spd_on_detect, 0.0f, 10000.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("本体スケール", &body_scale, 0.1f, 5.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("ビームXスケール", &beam_scale.x, 0.1f, 10.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genSlider("ビームYスケール", &beam_scale.y, 0.1f, 10.0f, 0, NULL, -1, -1, 512, 24);
+ ctx->genCheckBox("チェック描画", &check_draw, 1, 0, NULL, -1, -1, 512, 24);
}
+#define BEAM_SCALE_X l_HIO.beam_scale.x
+#define BEAM_SCALE_Y l_HIO.beam_scale.y
+#define BEAM_SCALE_Z l_HIO.beam_scale.z
+#define BEAM_LOWER_DIST l_HIO.beam_lower_dist
+#define BEAM_MIDDLE_DIST l_HIO.beam_middle_dist
+#define SEARCH_DIST l_HIO.search_dist
+#define TARGET_OFFSET_DIST l_HIO.target_offset_dist
+#define SEARCH_ANGLE l_HIO.search_angle
+#define PATROL_ROT_SPD l_HIO.patrol_rot_spd
+#define ATTACK_ROT_SPD l_HIO.attack_rot_spd
+#define AFTER_SWITCH_ACTIVATE_NO_SEARCH_TIME l_HIO.after_switch_activate_no_search_time
+#define DETECTION_ANGLE l_HIO.detection_angle
+#define SEARCH_SPD_ON_DETECT l_HIO.search_spd_on_detect
+#define BODY_SCALE l_HIO.body_scale
+#define SOUND_POS_MOVE_SPD l_HIO.sound_pos_move_spd
+#define NO_SEARCH_ATTACK_TIME l_HIO.no_search_attack_time
+#define DEBUG_DRAW l_HIO.debug_draw
+#define CHECK_DRAW l_HIO.check_draw
+#else
+#define BEAM_SCALE_X 0.5f
+#define BEAM_SCALE_Y 0.5f
+#define BEAM_SCALE_Z 1.0f
+#define BEAM_LOWER_DIST 300.0f
+#define BEAM_MIDDLE_DIST 600.0f
+#define SEARCH_DIST 1000.0f
+#define TARGET_OFFSET_DIST 0.0f
+#define SEARCH_ANGLE 30000
+#define PATROL_ROT_SPD 500
+#define ATTACK_ROT_SPD 450
+#define AFTER_SWITCH_ACTIVATE_NO_SEARCH_TIME 20
+#define DETECTION_ANGLE 25000
+#define SEARCH_SPD_ON_DETECT 1000
+#define BODY_SCALE 1.0f
+#define SOUND_POS_MOVE_SPD 60.0f
+#define NO_SEARCH_ATTACK_TIME 0
+#define DEBUG_DRAW 0
+#define CHECK_DRAW 0
#endif
-fopAc_ac_c* daObjBm_c::PPCallBack(fopAc_ac_c* i_bgActor, fopAc_ac_c* i_actorP, s16 param_2,
- dBgW_Base::PushPullLabel pp_field) {
+fopAc_ac_c* daObjBm_c::PPCallBack(fopAc_ac_c* i_bgActor, fopAc_ac_c* i_actorP, s16 param_2, dBgW_Base::PushPullLabel pp_field) {
+ daObjBm_c* actor_p = (daObjBm_c*)i_bgActor;
dBgW::PushPullLabel pp_label = cLib_checkBit<dBgW::PushPullLabel>(pp_field, dBgW::PPLABEL_3);
- u8 l_swNo3 = ((daObjBm_c*)i_bgActor)->getSwNo3();
- u8 l_moveType = ((daObjBm_c*)i_bgActor)->getMoveType();
+ u8 l_swNo3 = actor_p->getSwNo3();
+ u8 l_moveType = actor_p->getMoveType();
- if (pp_label != dBgW::PPLABEL_NONE && !fopAcM_isSwitch(i_bgActor, l_swNo3)) {
+ if (pp_label != dBgW::PPLABEL_NONE && !fopAcM_isSwitch(actor_p, l_swNo3)) {
s16 spE = cLib_checkBit<dBgW::PushPullLabel>(pp_label, dBgW::PPLABEL_PULL) ?
- (s16)param_2 - 0x8000 :
- (s16)param_2;
- s16 angle = spE - ((daObjBm_c*)i_bgActor)->home.angle.y;
+ (s16)param_2 - 0x8000 : (s16)param_2;
+ s16 angle = spE - actor_p->home.angle.y;
JUT_ASSERT(513, pp_label != pp_field);
- ((daObjBm_c*)i_bgActor)->mPPLabel = pp_field;
+ actor_p->mPPLabel = pp_field;
if (angle >= -0x2000 && angle < 0x2000) {
pp_label = dBgW::PPLABEL_NONE;
@@ -144,13 +255,13 @@ fopAc_ac_c* daObjBm_c::PPCallBack(fopAc_ac_c* i_bgActor, fopAc_ac_c* i_actorP, s
if (l_moveType != 0 || (l_moveType == 0 && pp_label == dBgW::PPLABEL_NONE)) {
for (int i = 0; i < 4; i++) {
if (i == pp_label) {
- ((daObjBm_c*)i_bgActor)->mMomentCnt[i]++;
+ actor_p->mMomentCnt[i]++;
} else {
- ((daObjBm_c*)i_bgActor)->mMomentCnt[i] = 0;
+ actor_p->mMomentCnt[i] = 0;
}
}
- ((daObjBm_c*)i_bgActor)->field_0x10d2 = 1;
+ actor_p->field_0x10d2 = 1;
}
}
@@ -164,18 +275,18 @@ static int nodeCallBack(J3DJoint* i_joint, int param_2) {
daObjBm_c* i_this = (daObjBm_c*)model->getUserArea();
cMtx_copy(model->getAnmMtx(jnt_no), mDoMtx_stack_c::get());
- s16 sVar1 = i_this->field_0x1000 * cM_scos(i_this->field_0xff0 * 0x2cec + KREG_S(6));
+ s16 sVar1 = i_this->field_0x1000 * cM_scos(i_this->field_0xff0 * 0x2CEC + KREG_S(6));
if (jnt_no == i_this->getHeadJoint()) {
mDoMtx_stack_c::XrotM(i_this->field_0xf96 + sVar1);
} else if (jnt_no == i_this->getBigGearJoint()) {
- mDoMtx_stack_c::XrotM(i_this->field_0xf9a);
+ mDoMtx_stack_c::XrotM(i_this->mBigGearRotX);
} else if (jnt_no == i_this->getSmallGear0Joint()) {
- mDoMtx_stack_c::XrotM(i_this->field_0xf9e);
+ mDoMtx_stack_c::XrotM(i_this->mSmallGear0RotX);
} else if (jnt_no == i_this->getSmallGear1Joint()) {
- mDoMtx_stack_c::XrotM(i_this->field_0xfa2);
+ mDoMtx_stack_c::XrotM(i_this->mSmallGear1RotX);
} else if (jnt_no == i_this->getSmallGear2Joint()) {
- mDoMtx_stack_c::XrotM(i_this->field_0xfa6);
+ mDoMtx_stack_c::XrotM(i_this->mSmallGear2RotX);
}
cMtx_copy(mDoMtx_stack_c::get(), model->getAnmMtx(jnt_no));
@@ -185,10 +296,10 @@ static int nodeCallBack(J3DJoint* i_joint, int param_2) {
}
void daObjBm_c::initBaseMtx() {
- field_0x10a0.set(0.5f, 0.5f, 1.0f);
+ mBeamScale.set(0.5f, 0.5f, 1.0f);
mpModel->setBaseScale(scale);
- mpModel3->setBaseScale(scale);
- mpModel2->setBaseScale(field_0x10a0);
+ mBmfModel->setBaseScale(scale);
+ mBeamModel->setBaseScale(mBeamScale);
setBaseMtx();
}
@@ -196,87 +307,26 @@ void daObjBm_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
mDoMtx_stack_c::YrotM(shape_angle.y);
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
- mDoMtx_stack_c::scaleM(1.0f, 1.0f, 1.0f);
- PSMTXCopy(mDoMtx_stack_c::get(), mBgMtx);
+ mDoMtx_stack_c::scaleM(1.0f, KREG_F(4) + 1.0f, 1.0f);
+ MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
#if DEBUG
- field_0x10b8 = l_HIO.mBeamScale.x;
- field_0x10bc = l_HIO.mBeamScale.y;
+ mBeamScale.x = BEAM_SCALE_X;
+ mBeamScale.y = BEAM_SCALE_Y;
#endif
- mpModel2->setBaseScale(field_0x10a0);
+ mBeamModel->setBaseScale(mBeamScale);
mDoMtx_stack_c::transS(field_0xfb8);
mDoMtx_stack_c::ZXYrotM(field_0xfc4);
- mpModel2->setBaseTRMtx(mDoMtx_stack_c::get());
+ mBeamModel->setBaseTRMtx(mDoMtx_stack_c::get());
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(home.angle);
- mpModel3->setBaseTRMtx(mDoMtx_stack_c::get());
+ mBmfModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
-static const char* l_arcName = "Obj_bm";
-
-static const char* l_eye_matName = "bmEye";
-
-static char* l_head_joint = "head";
-
-static char* l_bigGear_joint = "cogRed";
-
-static char* l_smallGear0_joint = "cogBlue";
-
-static char* l_smallGear1_joint = "cogGreen";
-
-static char* l_smallGear2_joint = "cogYellow";
-
-static char* l_joint_table[5] = {
- l_head_joint, l_bigGear_joint, l_smallGear0_joint, l_smallGear1_joint, l_smallGear2_joint,
-};
-
-static cull_box l_cull_box = {
- {-1200.0f, -100.0f, -1200.0f},
- {1200.0f, 400.0f, 1200.0f},
-};
-
-static dCcD_SrcSph l_sph_src = {
- {
- {0x0, {{0x0, 0x0, 0x0}, {0x402020, 0x11}, 0x58}}, // mObj
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
- {
- {{0.0f, 0.0f, 0.0f}, 50.0f} // mSph
- } // mSphAttr
-};
-
-static dCcD_SrcCps l_cps_src = {
- {
- {0x0, {{0x100, 0x1, 0x1d}, {0x0, 0x0}, 0x0}}, // mObj
- {dCcD_SE_SWORD, 0x0, 0x0, 0x1, 0x0}, // mGObjAt
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x4}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
- {
- {{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, 20.0f}, // mCps
- } // mCpsAttr
-};
-
-static dCcD_SrcCyl l_cyl_src = {
- {
- {0x0, {{0x0, 0x0, 0x1f}, {0x0, 0x0}, 0x79}}, // mObj
- {dCcD_SE_NONE, 0x1, 0x0, 0x0, 0x0}, // mGObjAt
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x6}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
- {
- {0.0f, 0.0f, 0.0f}, // mCenter
- 15.0f, // mRadius
- 60.0f // mHeight
- } // mCyl
-};
-
int daObjBm_c::Create() {
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
- mStts.Init(0xff, 0xff, this);
+ mStts.Init(0xFF, 0xFF, this);
mSph.Set(l_sph_src);
mSph.SetStts(&mStts);
mCps.Set(l_cps_src);
@@ -301,7 +351,6 @@ int daObjBm_c::Create() {
mpModel->setUserArea((uintptr_t)this);
JUTNameTab* material_name = mpModel->getModelData()->getMaterialTable().getMaterialName();
-
for (u16 i = 0; i < mpModel->getModelData()->getMaterialNum(); i++) {
if (strcmp(material_name->getName(i), l_eye_matName) == 0) {
mpMaterial = mpModel->getModelData()->getMaterialNodePointer(i);
@@ -309,22 +358,22 @@ int daObjBm_c::Create() {
}
#if DEBUG
- if (field_0xfcc.x == 0) {
- OSReport_Error("ブ[モス]。苔のマテリアルがありません");
+ if (mpMaterial == NULL) {
+ OSReport_Error("ビーモス:目のマテリアルがありません\n");
return 0;
}
#endif
- mSound.init(&field_0x1048, 1);
- mSound2.init(&field_0x1054, 1);
+ mBeamSound.init(&mBeamSoundPos, 1);
+ mBurnSound.init(&mBurnSoundPos, 1);
field_0x1039 = 1;
if (fopAcM_isSwitch(this, getSwNo2())) {
- field_0xff7 = 0x0;
+ mShowFlag = 0;
if (getMoveType() != 1) {
- mpBckAnm3->setFrame(mpBckAnm3->getEndFrame());
+ mBmfOffBck->setFrame(mBmfOffBck->getEndFrame());
}
initActionObjBemos();
@@ -332,13 +381,13 @@ int daObjBm_c::Create() {
initActionEnBemos();
if (getSwNo() != 0xFF && !fopAcM_isSwitch(this, getSwNo())) {
- field_0xff7 = 0;
+ mShowFlag = 0;
initActionSwWait();
} else {
- field_0xff7 = 1;
- J3DAnmTevRegKey* model_data = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 0x14);
- mpBrkAnm->init(mpModel->getModelData(), model_data, 1, 2, 1.0f, 0, -1);
- mpBckAnm->setFrame(mpBckAnm->getEndFrame());
+ mShowFlag = 1;
+ mSerchBrk->init(mpModel->getModelData(), (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BRK_TURN_e),
+ 1, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1);
+ mBeamosBck->setFrame(mBeamosBck->getEndFrame());
initActionWarning();
}
}
@@ -347,102 +396,103 @@ int daObjBm_c::Create() {
return 1;
}
+// FAKEMATCH
int daObjBm_c::CreateHeap() {
- J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 0xd);
+ J3DModelData* modelData;
+
+ modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BMD_BM_e);
JUT_ASSERT(767, modelData != NULL);
-
- mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ mpModel = mDoExt_J3DModel__create(modelData, J3DMdlFlag_DifferedDLBuffer, 0x11000084);
if (mpModel == NULL) {
return 0;
}
- J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 0x13);
+ J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BRK_SERCH_e);
JUT_ASSERT(780, pbrk != NULL);
- mpBrkAnm = new mDoExt_brkAnm();
- if (mpBrkAnm == NULL || mpBrkAnm->init(modelData, pbrk, 1, 0, 1.0f, 0, -1) == 0) {
+ mSerchBrk = new mDoExt_brkAnm();
+ if (mSerchBrk == NULL || mSerchBrk->init(modelData, pbrk, 1, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1) == 0) {
return 0;
}
- J3DAnmTransform* pbck;
#if DEBUG
- pbck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 7);
- JUT_ASSERT(791, pbck != NULL);
+ pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BRK_TURN_e);
+ JUT_ASSERT(791, pbrk != NULL);
#endif
- pbck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 7);
+ J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BCK_BM_UP_e);
JUT_ASSERT(798, pbck != NULL);
- mpBckAnm = new mDoExt_bckAnm();
- if (mpBckAnm == NULL || mpBckAnm->init(pbck, 1, 0, 1.0f, 0, -1, false) == 0) {
+ mBeamosBck = new mDoExt_bckAnm();
+ if (mBeamosBck == NULL || mBeamosBck->init(pbck, 1, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false) == 0) {
return 0;
}
- modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 0xe);
+ modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BMD_EF_BIMOBEAM_e);
JUT_ASSERT(813, modelData != NULL);
- mpModel2 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284);
- if (mpModel2 == NULL) {
+ mBeamModel = mDoExt_J3DModel__create(modelData, J3DMdlFlag_DifferedDLBuffer, 0x11000284);
+ if (mBeamModel == NULL) {
return 0;
}
- J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 0x1a);
+ J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BTK_EF_BIMOBEAMB_OFF_e);
JUT_ASSERT(827, pbtk != NULL);
- mpBtkAnm = new mDoExt_btkAnm();
- if (mpBtkAnm == NULL || mpBtkAnm->init(modelData, pbtk, 1, 0, 1.0f, 0, -1) == 0) {
+ mBeamBtk = new mDoExt_btkAnm();
+ if (mBeamBtk == NULL || mBeamBtk->init(modelData, pbtk, 1, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1) == 0) {
return 0;
}
- mpBtkAnm->setFrame(mpBtkAnm->getEndFrame());
+ mBeamBtk->setFrame(mBeamBtk->getEndFrame());
#if DEBUG
- pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 0x18);
+ J3DAnmTextureSRTKey* pbtk2 = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BTK_EF_BIMOBEAM_ON_e);
JUT_ASSERT(840, pbtk != NULL);
#endif
- pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 0x18);
+ pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BTK_EF_BIMOBEAM_e);
JUT_ASSERT(846, pbtk != NULL);
- mpBtkAnm2 = new mDoExt_btkAnm();
- if (mpBtkAnm2 == NULL || mpBtkAnm2->init(modelData, pbtk, 1, 2, 1.0f, 0, -1) == 0) {
+ mBeamEffBtk = new mDoExt_btkAnm();
+ if (mBeamEffBtk == NULL || mBeamEffBtk->init(modelData, pbtk, 1, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1) == 0) {
return 0;
}
- J3DAnmTransform* pbck2 = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 9);
+ J3DAnmTransform* pbck2 = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BCK_EF_BIMOBEAM_e);
JUT_ASSERT(858, pbck != NULL);
- mpBckAnm2 = new mDoExt_bckAnm();
- if (mpBckAnm2 == NULL || mpBckAnm2->init(pbck2, 1, 2, 1.0f, 0, -1, false) == 0) {
+ mBeamEffBck = new mDoExt_bckAnm();
+ if (mBeamEffBck == NULL || mBeamEffBck->init(pbck2, 1, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false) == 0) {
return 0;
}
- modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 0xf);
+ modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BMD_P_BMF_e);
JUT_ASSERT(873, modelData != NULL);
- mpModel3 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
- if (mpModel3 == NULL) {
+ mBmfModel = mDoExt_J3DModel__create(modelData, J3DMdlFlag_DifferedDLBuffer, 0x11000084);
+ if (mBmfModel == NULL) {
return 0;
}
- J3DAnmTransform* pbck3 = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 8);
- JUT_ASSERT(885, pbck3 != NULL);
- mpBckAnm3 = new mDoExt_bckAnm();
- if (mpBckAnm3 == NULL || mpBckAnm3->init(pbck3, 1, 0, 1.0f, 0, -1, false) == 0) {
+ J3DAnmTransform* pbck3 = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BCK_BMF_OFF_e);
+ JUT_ASSERT(885, pbck != NULL);
+ mBmfOffBck = new mDoExt_bckAnm();
+ if (mBmfOffBck == NULL || mBmfOffBck->init(pbck3, 1, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false) == 0) {
return 0;
}
- mpBckAnm3->setPlaySpeed(0.0f);
+ mBmfOffBck->setPlaySpeed(0.0f);
return 1;
}
int daObjBm_c::create1st() {
- if (field_0x100e == 0) {
+ if (mCreateFirstFlag == 0) {
field_0x100a = home.angle.x;
field_0x100c = home.angle.z;
home.angle.x = home.angle.z = 0;
current.angle.x = current.angle.z = 0;
shape_angle.x = shape_angle.z = 0;
- field_0x100e = 1;
+ mCreateFirstFlag = 1;
}
cPhs__Step phase_state = (cPhs__Step)dComIfG_resLoad(&mPhase, l_arcName);
if (phase_state == cPhs_COMPLEATE_e) {
phase_state =
- (cPhs__Step)MoveBGCreate(l_arcName, 0x1e, dBgS_MoveBGProc_TypicalRotY, 0x5500, NULL);
+ (cPhs__Step)MoveBGCreate(l_arcName, 0x1E, dBgS_MoveBGProc_TypicalRotY, 0x5500, NULL);
if (phase_state == cPhs_ERROR_e) {
return phase_state;
}
@@ -456,9 +506,9 @@ int daObjBm_c::create1st() {
return phase_state;
}
-int daObjBm_c::Execute(Mtx** param_0) {
+int daObjBm_c::Execute(Mtx** i_mtx) {
#if DEBUG
- scale.setall(l_HIO.mBodyScale);
+ scale.setall(BODY_SCALE);
mpModel->setBaseScale(scale);
daPy_py_c* player = daPy_getPlayerActorClass();
#endif
@@ -470,10 +520,10 @@ int daObjBm_c::Execute(Mtx** param_0) {
}
cLib_chaseAngleS(&field_0xf96, field_0xf98, field_0xfaa);
- cLib_chaseAngleS(&field_0xf9a, field_0xf9c, field_0xfae);
- cLib_chaseAngleS(&field_0xf9e, field_0xfa0, field_0xfae);
- cLib_chaseAngleS(&field_0xfa2, field_0xfa4, field_0xfae);
- cLib_chaseAngleS(&field_0xfa6, field_0xfa8, field_0xfae);
+ cLib_chaseAngleS(&mBigGearRotX, mBigGearRotXTarget, mGearRotationSpd);
+ cLib_chaseAngleS(&mSmallGear0RotX, mSmallGear0RotXTarget, mGearRotationSpd);
+ cLib_chaseAngleS(&mSmallGear1RotX, mSmallGear1RotXTarget, mGearRotationSpd);
+ cLib_chaseAngleS(&mSmallGear2RotX, mSmallGear2RotXTarget, mGearRotationSpd);
main_proc_call();
@@ -484,20 +534,20 @@ int daObjBm_c::Execute(Mtx** param_0) {
mDoMtx_stack_c::multVec(&eyePos, &eyePos);
attention_info.position = eyePos;
- *param_0 = &mBgMtx;
+ *i_mtx = &mBgMtx;
setBaseMtx();
- cLib_addCalcAngleS(&field_0xfaa, field_0xfac, 0x1e, 0x14, 10);
- cLib_addCalcAngleS(&field_0xfae, field_0xfb0, 0x1e, 0x14, 10);
+ cLib_addCalcAngleS(&field_0xfaa, field_0xfac, 0x1E, 0x14, 10);
+ cLib_addCalcAngleS(&mGearRotationSpd, mGearRotSpdTarget, 0x1E, 0x14, 10);
cLib_addCalc(&field_0x1000, 0.0f, 0.2f, KREG_F(2) + 50.0f, KREG_F(3) + 10.0f);
field_0xfb2 = field_0xf96;
- if (mpBckAnm3->getFrame() == 0.0f) {
+ if (mBmfOffBck->getFrame() == 0.0f) {
setCrawCO();
}
- mSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
- mSound2.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ mBeamSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ mBurnSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
return 1;
}
@@ -507,7 +557,7 @@ void daObjBm_c::main_proc_call() {
&daObjBm_c::actionObjBemos,
};
- (this->*l_func[field_0xfeb])();
+ (this->*l_func[mActionTypeIdx])();
}
void daObjBm_c::initActionEnBemos() {
@@ -515,7 +565,7 @@ void daObjBm_c::initActionEnBemos() {
mpBgW->OffPushPullOk();
}
- field_0xfeb = 0;
+ mActionTypeIdx = 0;
}
void daObjBm_c::initActionObjBemos() {
@@ -534,6 +584,7 @@ void daObjBm_c::initActionObjBemos() {
mode_dead_init();
}
break;
+
case 1:
if (fopAcM_isSwitch(this, getSwNo2())) {
mode_wait();
@@ -542,7 +593,7 @@ void daObjBm_c::initActionObjBemos() {
break;
}
- field_0xfeb = 1;
+ mActionTypeIdx = 1;
}
void daObjBm_c::actionEnBemos() {
@@ -555,9 +606,7 @@ void daObjBm_c::actionEnBemos() {
cCcD_Obj* hitobj = mSph.GetTgHitObj();
if (hitobj) {
- if (hitobj->ChkAtType(AT_TYPE_ARROW) || hitobj->ChkAtType(AT_TYPE_BOMB) ||
- hitobj->ChkAtType(AT_TYPE_IRON_BALL))
- {
+ if (hitobj->ChkAtType(AT_TYPE_ARROW) || hitobj->ChkAtType(AT_TYPE_BOMB) || hitobj->ChkAtType(AT_TYPE_IRON_BALL)) {
mDoAud_seStart(Z2SE_EN_BM_EYE_BREAK, &eyePos, 0,
dComIfGp_getReverb((int)fopAcM_GetRoomNo(this)));
initEffectSet0();
@@ -571,39 +620,39 @@ void daObjBm_c::actionEnBemos() {
mSph.ClrTgHit();
calcBeamPos();
effect_proc();
- (this->*l_func[field_0xfe4])();
+ (this->*l_func[mActionIdx])();
calcBeamLenAndAt();
- mpBckAnm2->play();
- mpBtkAnm->play();
- mpBtkAnm2->play();
- mpBrkAnm->play();
- mpBckAnm->play();
- mpBckAnm3->play();
+ mBeamEffBck->play();
+ mBeamBtk->play();
+ mBeamEffBtk->play();
+ mSerchBrk->play();
+ mBeamosBck->play();
+ mBmfOffBck->play();
if (field_0xfaa != 0) {
fopAcM_seStartLevel(this, Z2SE_EN_BM_TURN, 0);
}
- if (field_0xfe4 != 4 && field_0xfe4 != 0) {
+ if (mActionIdx != ACTION_DEAD_e && mActionIdx != ACTION_SW_WAIT_e) {
mSph.SetC(eyePos);
dComIfG_Ccsp()->Set(&mSph);
}
- if (field_0xfe4 == 3) {
+ if (mActionIdx == ACTION_ATTACK_e) {
dComIfG_Ccsp()->Set(&mCps);
- mSound.startLevelSound(Z2SE_EN_BM_BEAM, 0, -1);
+ mBeamSound.startLevelSound(Z2SE_EN_BM_BEAM, 0, -1);
}
}
void daObjBm_c::actionObjBemos() {
- static daObjBm_c::modeFunc mode_proc[] = {
+ static const daObjBm_c::modeFunc mode_proc[] = {
&daObjBm_c::mode_wait,
&daObjBm_c::mode_walk,
&daObjBm_c::mode_afl,
&daObjBm_c::mode_dead,
};
- (this->*mode_proc[field_0x10ac])();
+ (this->*mode_proc[mModeProcIdx])();
}
void daObjBm_c::setCrawCO() {
@@ -621,117 +670,107 @@ void daObjBm_c::setCrawCO() {
void daObjBm_c::calcBeamPos() {
daPy_py_c* player = daPy_getPlayerActorClass();
f32 dist = fopAcM_searchPlayerDistanceXZ(this);
- cXyz cStack_30 = l_low_beam_offset;
+ cXyz offset = l_low_beam_offset;
- if (dist > 600.0f) {
- cStack_30 = l_high_beam_offset;
- } else {
- if (dist > 300.0f) {
- cStack_30 = l_mid_beam_offset;
- }
+ if (dist > BEAM_MIDDLE_DIST) {
+ offset = l_high_beam_offset;
+ } else if (dist > BEAM_LOWER_DIST) {
+ offset = l_mid_beam_offset;
}
s16 sVar2 = field_0xf96;
- cLib_chasePos(&field_0xfd8, cStack_30, 5.0f);
+ cLib_chasePos(&field_0xfd8, offset, 5.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(sVar2 + current.angle.y);
mDoMtx_stack_c::multVec(&field_0xfd8, &field_0xfb8);
- f32 fVar1 = field_0x1004;
- if (fVar1 < 300.0f)
- fVar1 = 300.0f;
+ dist = mPlayerDist;
+ if (dist < 300.0f)
+ dist = 300.0f;
- cXyz cStack_3c(0.0f, 0.0f, fVar1);
- mDoMtx_stack_c::multVec(&cStack_3c, &field_0xfcc);
+ cXyz work(0.0f, 0.0f, dist);
+ mDoMtx_stack_c::multVec(&work, &field_0xfcc);
field_0xfcc = player->current.pos;
cXyz cStack_48 = field_0xfb8 - field_0xfcc;
field_0xfc4.x = cM_atan2s(cStack_48.y, field_0xfcc.absXZ(field_0xfb8));
field_0xfc4.y = sVar2 + current.angle.y;
field_0xfc4.z = 0;
- if (field_0xfc4.x < cM_deg2s(DREG_F(15) + 20.0f))
- field_0xfc4.x = cM_deg2s(DREG_F(15) + 20.0f);
+ if (field_0xfc4.x < cM_deg2s(KREG_F(15) + 20.0f)) {
+ field_0xfc4.x = cM_deg2s(KREG_F(15) + 20.0f);
+ }
mDoMtx_stack_c::transS(field_0xfb8);
mDoMtx_stack_c::ZXYrotM(field_0xfc4.x, sVar2 + current.angle.y, 0);
- mDoMtx_stack_c::multVec(&cStack_3c, &field_0xfcc);
+ mDoMtx_stack_c::multVec(&work, &field_0xfcc);
}
void daObjBm_c::calcBeamLenAndAt() {
- cXyz cStack_50 = field_0xfcc - field_0xfb8;
- cXyz cStack_5c(field_0xfb8);
- cStack_50.normalizeZP();
- cStack_5c += cStack_50 * 1200.0f;
-
-#if DEBUG
- f32 dVar4 = mpBtkAnm->getFrame();
-#endif
-
- if (fopAcM_lc_c::lineCheck(&field_0xfb8, &cStack_5c, this) && fopAcM_lc_c::checkGroundHit()) {
- field_0x10a0.z = field_0xfb8.abs(fopAcM_lc_c::getCross()) / 1200.0f;
+ cXyz work = field_0xfcc - field_0xfb8;
+ cXyz end(field_0xfb8);
+ work.normalizeZP();
+ end += work * 1200.0f;
+ int frame = mBeamBtk->getFrame() + 0.5f;
+ f32 fVar1 = 360.0f;
+
+ if (fopAcM_lc_c::lineCheck(&field_0xfb8, &end, this) && fopAcM_lc_c::checkGroundHit()) {
+ f32 absVal = field_0xfb8.abs(fopAcM_lc_c::getCross());
+ mBeamScale.z = absVal / 1200.0f;
} else {
- field_0x10a0.z = 1.0f;
+ mBeamScale.z = 1.0f;
}
- cStack_5c = field_0xfb8 + (cStack_50 * (field_0x10a0.z * 1200.0f));
- mCps.cM3dGCps::Set(field_0xfb8, cStack_5c, 20.0f);
+ end = field_0xfb8 + (work * (mBeamScale.z * 1200.0f));
+ mCps.cM3dGCps::Set(field_0xfb8, end, 20.0f);
mCps.CalcAtVec();
if (field_0x1039 > 0) {
- cXyz cStack_68(field_0xfcc);
+ cXyz target(field_0xfcc);
- if (fopAcM_lc_c::lineCheck(&field_0xfb8, &cStack_5c, this) && fopAcM_lc_c::checkGroundHit())
- {
- cStack_68 = fopAcM_lc_c::getCross();
+ if (fopAcM_lc_c::lineCheck(&field_0xfb8, &end, this) && fopAcM_lc_c::checkGroundHit()) {
+ target = fopAcM_lc_c::getCross();
}
- if (cLib_chasePos(&field_0x1048, cStack_68, 60.0f) != 0) {
+ if (cLib_chasePos(&mBeamSoundPos, target, SOUND_POS_MOVE_SPD) != 0) {
field_0x1039 = -1;
}
- } else {
- if (cLib_chasePos(&field_0x1048, cStack_5c, 60.0f) != 0) {
- field_0x1039 = 1;
- }
+ } else if (cLib_chasePos(&mBeamSoundPos, end, SOUND_POS_MOVE_SPD) != 0) {
+ field_0x1039 = 1;
}
}
s8 daObjBm_c::checkFindPlayer() {
daPy_py_c* player = daPy_getPlayerActorClass();
f32 searchDistance = getSearchDistance();
-#if DEBUG
- s16 search_angle = l_HIO.mDetectionAngle;
-#else
- s16 search_angle = 25000;
-#endif
-
+ s16 search_angle = DETECTION_ANGLE;
s8 ret = -1;
field_0xfe8 = 0;
f32 playerDistanceXZ = fopAcM_searchPlayerDistanceXZ(this);
- f32 fVar1 = current.pos.y - player->current.pos.y;
+ f32 posDelta = current.pos.y - player->current.pos.y;
if (playerDistanceXZ > searchDistance) {
return ret;
- } else {
- if (fVar1 < 0.0f) {
- if (std::fabs(fVar1) > (1.0f - (playerDistanceXZ / searchDistance)) * l_eye_offset.y) {
- return ret;
- }
- }
+ }
- if ((s16)abs((s16)(fopAcM_searchPlayerAngleY(this) - field_0xf96 - home.angle.y)) <
- (s16)(search_angle / 2))
- {
- ret = 0;
+ if (posDelta < 0.0f) {
+ if (std::fabs(posDelta) > (1.0f - (playerDistanceXZ / searchDistance)) * l_eye_offset.y) {
+ return ret;
}
+ }
- if (ret == 0) {
- cXyz eye(eyePos);
- cXyz eye2(player->eyePos);
+ s16 angle = (fopAcM_searchPlayerAngleY(this) - field_0xf96 - home.angle.y);
+ angle = abs(angle);
+ if ((search_angle / 2) > (s16)angle) {
+ ret = 0;
+ }
- if (fopAcM_lc_c::lineCheck(&eye, &eye2, this)) {
- field_0xfe8 = 1;
- }
+ if (ret == 0) {
+ cXyz eye(eyePos);
+ cXyz playerEye(player->eyePos);
+
+ if (fopAcM_lc_c::lineCheck(&eye, &playerEye, this)) {
+ field_0xfe8 = 1;
}
}
@@ -741,39 +780,35 @@ s8 daObjBm_c::checkFindPlayer() {
s8 daObjBm_c::checkSearchPlayer() {
daPy_py_c* player = daPy_getPlayerActorClass();
f32 searchDistance = getSearchDistance();
-#if DEBUG
- s16 search_angle = l_HIO.mSearchAngle;
-#else
- s16 search_angle = 30000;
-#endif
+ s16 search_angle = SEARCH_ANGLE;
s8 ret = -1;
field_0xfe8 = 0;
f32 playerDistanceXZ = fopAcM_searchPlayerDistanceXZ(this);
- f32 fVar1 = current.pos.y - player->current.pos.y;
+ f32 playerDistanceY = current.pos.y - player->current.pos.y;
if (playerDistanceXZ > searchDistance) {
return ret;
}
- if (fVar1 < 0.0f) {
- if (std::fabs(fVar1) > (1.0f - (playerDistanceXZ / searchDistance)) * l_eye_offset.y) {
+ if (playerDistanceY < 0.0f) {
+ if (std::fabs(playerDistanceY) > (1.0f - (playerDistanceXZ / searchDistance)) * l_eye_offset.y) {
return ret;
}
}
- if ((s16)abs((s16)(fopAcM_searchPlayerAngleY(this) - field_0xf96 - home.angle.y)) <
- (s16)(search_angle / 2))
- {
+ s16 angle = (fopAcM_searchPlayerAngleY(this) - field_0xf96 - home.angle.y);
+ angle = abs(angle);
+ if ((search_angle / 2) > (s16)angle) {
ret = 0;
}
if (ret == 0) {
cXyz eye(eyePos);
- cXyz eye2(player->eyePos);
+ cXyz playerEye(player->eyePos);
- if (fopAcM_lc_c::lineCheck(&eye, &eye2, this)) {
+ if (fopAcM_lc_c::lineCheck(&eye, &playerEye, this)) {
field_0xfe8 = 1;
}
}
@@ -782,11 +817,7 @@ s8 daObjBm_c::checkSearchPlayer() {
}
f32 daObjBm_c::getSearchDistance() {
-#if DEBUG
- f32 ret = l_HIO.mSearchDistance;
-#else
- f32 ret = 1000.0f;
-#endif
+ f32 ret = SEARCH_DIST;
if (getSearchDist() != 15 && getSearchDist()) {
ret -= getSearchDist() * 50.0f;
@@ -796,11 +827,7 @@ f32 daObjBm_c::getSearchDistance() {
}
f32 daObjBm_c::getBeamSearchDistance() {
-#if DEBUG
- f32 ret = l_HIO.mSearchDistance;
-#else
- f32 ret = 1000.0f;
-#endif
+ f32 ret = SEARCH_DIST;
if (getBeamSearchDist() != 15 && getBeamSearchDist()) {
ret -= getBeamSearchDist() * 50.0f;
@@ -817,42 +844,37 @@ void daObjBm_c::effect_proc() {
&daObjBm_c::effectEnd,
};
- (this->*l_eff_func[field_0xff6])();
+ (this->*l_eff_func[mEffFuncIdx])();
for (int i = 0; i < 2; i++) {
- if (field_0xff8[i] != NULL) {
- field_0xff8[i]->setGlobalRTMatrix(mpModel->getAnmMtx(getHeadJoint()));
+ if (mBrokenSmokeEmitter[i] != NULL) {
+ mBrokenSmokeEmitter[i]->setGlobalRTMatrix(mpModel->getAnmMtx(getHeadJoint()));
- if (cLib_calcTimer(&field_0xff5) == 0) {
- field_0xff8[i]->becomeInvalidEmitter();
- field_0xff8[i]->quitImmortalEmitter();
- field_0xff8[i] = NULL;
+ if (cLib_calcTimer(&mEmitterTimer) == 0) {
+ mBrokenSmokeEmitter[i]->becomeInvalidEmitter();
+ mBrokenSmokeEmitter[i]->quitImmortalEmitter();
+ mBrokenSmokeEmitter[i] = NULL;
}
}
}
- if (field_0x1034 != NULL) {
+ if (mNessenHeatPrtclEmitter != NULL) {
J3DJoint* joint = mpModel->getModelData()->getJointNodePointer(getHeadJoint());
J3DTransformInfo* info = &joint->getTransformInfo();
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(home.angle.y);
mDoMtx_stack_c::transM(info->mTranslate.y, info->mTranslate.x, info->mTranslate.z);
mDoMtx_stack_c::YrotM(field_0xf96);
- field_0x1034->setGlobalRTMatrix(mDoMtx_stack_c::get());
+ mNessenHeatPrtclEmitter->setGlobalRTMatrix(mDoMtx_stack_c::get());
}
- if (field_0x102c != NULL) {
+ if (mGearSparkEmitter != NULL) {
mDoMtx_stack_c::copy(mpModel->getAnmMtx((u16)getBigGearJoint()));
- mDoMtx_stack_c::multVecZero(&field_0x103c);
- mDoAud_seStartLevel(Z2SE_EN_BM_SPARK, &field_0x103c, 0, 0);
+ mDoMtx_stack_c::multVecZero(&mSparkSePos);
+ mDoAud_seStartLevel(Z2SE_EN_BM_SPARK, &mSparkSePos, 0, 0);
}
}
-daObjBm_c::BgcSrc_c daObjBm_c::Bgc_c::M_lin5[] = {
- {0.0f, 0.0f, 0.0f, 0.0f}, {-0.5f, -0.5f, -1.0f, -1.0f}, {0.5f, -0.5f, 1.0f, -1.0f},
- {0.5f, 0.5f, 1.0f, 1.0f}, {-0.5f, 0.5f, -1.0f, 1.0f},
-};
-
void daObjBm_c::effectWait() {}
void daObjBm_c::initEffectSet0() {
@@ -881,14 +903,14 @@ void daObjBm_c::initEffectSet0() {
NULL, NULL);
}
- field_0xff8[0] = dComIfGp_particle_set(dPa_RM(ID_ZF_S_BM_BROKENSMK_F), &current.pos,
+ mBrokenSmokeEmitter[0] = dComIfGp_particle_set(dPa_RM(ID_ZF_S_BM_BROKENSMK_F), &current.pos,
&home.angle, &scale, 0xFF, NULL, -1, NULL, NULL, NULL);
- if (field_0xff8[0] != NULL) {
- field_0xff8[0]->becomeImmortalEmitter();
+ if (mBrokenSmokeEmitter[0] != NULL) {
+ mBrokenSmokeEmitter[0]->becomeImmortalEmitter();
}
- field_0xff5 = 200;
- field_0xff6 = 1;
+ mEmitterTimer = 200;
+ mEffFuncIdx = 1;
}
void daObjBm_c::effectSet0() {}
@@ -899,11 +921,10 @@ void daObjBm_c::effectEnd() {}
int daObjBm_c::check_to_walk() {
int ret = -1;
- bool bVar1 = true;
+ bool flag = true;
if (field_0x10d2) {
- dBgW::PushPullLabel iVar2 =
- cLib_checkBit<dBgW::PushPullLabel>(mPPLabel, dBgW::PPLABEL_PULL);
+ dBgW::PushPullLabel iVar2 = cLib_checkBit<dBgW::PushPullLabel>(mPPLabel, dBgW::PPLABEL_PULL);
dBgW::PushPullLabel iVar3 = cLib_checkBit<dBgW::PushPullLabel>(mPPLabel, dBgW::PPLABEL_4);
s16 sVar5;
@@ -921,16 +942,17 @@ int daObjBm_c::check_to_walk() {
for (int i = 0; i < 4; i++) {
if (mMomentCnt[i] >= sVar5) {
- if (!mBgc.chk_wall_pre(this, mBgc.M_lin5, 5, M_dir_base[i])) {
+ const daObjBm_c::BgcSrc_c* bgcSrc = mBgc.M_lin5;
+ if (!mBgc.chk_wall_pre(this, bgcSrc, 5, M_dir_base[i])) {
ret = i;
}
} else {
- bVar1 = false;
+ flag = false;
}
}
}
- if (bVar1) {
+ if (flag) {
clr_moment_cnt();
}
@@ -944,15 +966,13 @@ void daObjBm_c::mode_wait_init() {
mpBgW->SetCrrFunc(dBgS_MoveBGProc_Trans);
clr_moment_cnt();
field_0x10bc = -1;
- field_0x10ac = 0;
+ mModeProcIdx = MODE_WAIT_e;
}
void daObjBm_c::mode_wait() {
- f32 tmp1 = l_eye_offset.x;
- f32 tmp2 = l_eye_offset.z;
-
- if (field_0x10ce > 0)
+ if (field_0x10ce > 0) {
field_0x10ce--;
+ }
int walk_check = check_to_walk();
cXyz local_38;
@@ -979,13 +999,27 @@ void daObjBm_c::mode_wait() {
}
}
+const daObjBm_c::BgcSrc_c daObjBm_c::Bgc_c::M_lin5[] = {
+ {0.0f, 0.0f, 0.0f, 0.0f}, {-0.5f, -0.5f, -1.0f, -1.0f}, {0.5f, -0.5f, 1.0f, -1.0f},
+ {0.5f, 0.5f, 1.0f, 1.0f}, {-0.5f, 0.5f, -1.0f, 1.0f},
+};
+
+const daObjBm_c::BgcSrc_c daObjBm_c::Bgc_c::M_lin20[] = {
+ {0.0f, 0.0f, 0.0f, 0.0f}, {-0.25f, -0.25f, 0.0f, 0.0f}, {-0.5f, -0.5f, -1.0f, -1.0f},
+ {0.0f, -0.5f, 1.0f, -1.0f}, {0.0f, 0.0f, 1.0f, 1.0f}, {-0.5f, 0.0f, -1.0f, 1.0f},
+ {0.25f, -0.25f, 0.0f, 0.0f}, {0.0f, -0.5f, -1.0f, -1.0f}, {0.5f, -0.5f, 1.0f, -1.0f},
+ {0.5f, 0.0f, 1.0f, 1.0f}, {0.0f, 0.0f, -1.0f, 1.0f}, {0.25f, 0.25f, 0.0f, 0.0f},
+ {0.0f, 0.0f, -1.0f, -1.0f}, {0.5f, 0.0f, 1.0f, -1.0f}, {0.5f, 0.5f, 1.0f, 1.0f},
+ {0.0f, 0.5f, -1.0f, 1.0f}, {-0.25f, 0.25f, 0.0f, 0.0f}, {-0.5f, 0.0f, -1.0f, -1.0f},
+ {0.0f, 0.0f, 1.0f, -1.0f}, {0.0f, 0.5f, 1.0f, 1.0f}, {-0.5f, 0.5f, -1.0f, 1.0f},
+ {-0.75f, 0.25f, 0.0f, 0.0f}, {-0.75f, -0.25f, 0.0f, 0.0f},
+};
+
void daObjBm_c::mode_walk_init() {
fopAcM_SetSpeedF(this, 0.0f);
- field_0x10ac = 1;
+ mModeProcIdx = MODE_WALK_e;
}
-// static u8 dir_vec[48];
-
void daObjBm_c::mode_walk() {
static cXyz dir_vec[] = {
cXyz(0.0f, 0.0f, 1.0f),
@@ -994,7 +1028,7 @@ void daObjBm_c::mode_walk() {
cXyz(-1.0f, 0.0f, 0.0f),
};
- bool uVar5 = --field_0x10cc <= 0;
+ bool flag = --field_0x10cc <= 0;
f32 fVar6 = (cM_scos(field_0x10cc * field_0x10b8) + 1.0f) * 0.5f;
cXyz local_58;
@@ -1008,15 +1042,16 @@ void daObjBm_c::mode_walk() {
current.pos.z = local_58.z;
eyePos = current.pos;
- if (uVar5 != 0) {
- mBgc.chk_wall_pre(this, mBgc.M_lin5, 5, M_dir_base[field_0x10bc]);
+ if (flag) {
+ const daObjBm_c::BgcSrc_c* bgcSrc = mBgc.M_lin5;
+ mBgc.chk_wall_pre(this, bgcSrc, 5, M_dir_base[field_0x10bc]);
}
current.pos.x = local_58.x;
current.pos.z = local_58.z;
fopAcM_seStartLevel(this, Z2SE_EN_BM_SLIDE, 0);
- if (uVar5 != 0) {
+ if (flag) {
if (field_0x10bc == 0) {
field_0x10b4++;
} else if (field_0x10bc == 1) {
@@ -1040,13 +1075,13 @@ void daObjBm_c::mode_walk() {
void daObjBm_c::mode_afl() {
fopAcM_SetSpeedF(this, 0.0f);
- field_0x10ac = 2;
+ mModeProcIdx = MODE_AFL_e;
}
void daObjBm_c::mode_dead_init() {
mpBgW->OffPushPullOk();
fopAcM_SetSpeedF(this, 0.0f);
- field_0x10ac = 3;
+ mModeProcIdx = MODE_DEAD_e;
}
void daObjBm_c::mode_dead() {}
@@ -1070,17 +1105,6 @@ daObjBm_c::Bgc_c::Bgc_c() {
mState = STATE_0_e;
}
-const daObjBm_c::BgcSrc_c daObjBm_c::Bgc_c::M_lin20[] = {
- {0.0f, 0.0f, 0.0f, 0.0f}, {-0.25f, -0.25f, 0.0f, 0.0f}, {-0.5f, -0.5f, -1.0f, -1.0f},
- {0.0f, -0.5f, 1.0f, -1.0f}, {0.0f, 0.0f, 1.0f, 1.0f}, {-0.5f, 0.0f, -1.0f, 1.0f},
- {0.25f, -0.25f, 0.0f, 0.0f}, {0.0f, -0.5f, -1.0f, -1.0f}, {0.5f, -0.5f, 1.0f, -1.0f},
- {0.5f, 0.0f, 1.0f, 1.0f}, {0.0f, 0.0f, -1.0f, 1.0f}, {0.25f, 0.25f, 0.0f, 0.0f},
- {0.0f, 0.0f, -1.0f, -1.0f}, {0.5f, 0.0f, 1.0f, -1.0f}, {0.5f, 0.5f, 1.0f, 1.0f},
- {0.0f, 0.5f, -1.0f, 1.0f}, {-0.25f, 0.25f, 0.0f, 0.0f}, {-0.5f, 0.0f, -1.0f, -1.0f},
- {0.0f, 0.0f, 1.0f, -1.0f}, {0.0f, 0.5f, 1.0f, 1.0f}, {-0.5f, 0.5f, -1.0f, 1.0f},
- {-0.75f, 0.25f, 0.0f, 0.0f}, {-0.75f, -0.25f, 0.0f, 0.0f},
-};
-
static f32 dummy_rodata_5157() {
return -G_CM3D_F_INF;
}
@@ -1091,42 +1115,45 @@ dBgS_WtrChk daObjBm_c::Bgc_c::M_wrt_work;
dBgS_ObjLinChk daObjBm_c::Bgc_c::M_wall_work[23];
+static dBgS_ObjGndChk dummy_touch_work() {
+ static dBgS_ObjLinChk touch_work;
+}
+
static f32 dummy_rodata_5158() {
// needed for correct rodata ordering:
return 200.0f;
}
-void daObjBm_c::Bgc_c::wall_pos(fopAc_ac_c const* i_actor, daObjBm_c::BgcSrc_c const* i_bgcSrc,
- int i_num, s16 param_3, f32 param_4) {
- const s16 sp8C = i_actor->home.angle.y + param_3;
+void daObjBm_c::Bgc_c::wall_pos(fopAc_ac_c const* i_actor, daObjBm_c::BgcSrc_c const* i_bgcSrc, int i_num, s16 i_dir, f32 param_4) {
+ const s16 angle = i_actor->home.angle.y + i_dir;
cXyz sp48;
cXyz sp54;
cXyz sp60;
cXyz sp6C;
- cXyz sp78;
+ cXyz work;
field_0x178 = -1;
field_0x17c = FLT_MAX;
- mDoMtx_stack_c::YrotS(sp8C);
+ mDoMtx_stack_c::YrotS(angle);
mDoMtx_stack_c::XrotM(0x4000);
mDoMtx_stack_c::multVec(&cXyz::BaseY, &sp6C);
sp6C *= param_4 + 100.0f;
for (int i = 0; i < i_num; i++, i_bgcSrc++) {
mDoMtx_stack_c::XrotS(0x4000);
- sp78.set(i_bgcSrc->field_0xc, 0.0f, i_bgcSrc->field_0x8);
- mDoMtx_stack_c::multVec(&sp78, &sp60);
+ work.set(i_bgcSrc->field_0xc, 0.0f, i_bgcSrc->field_0x8);
+ mDoMtx_stack_c::multVec(&work, &sp60);
- mDoMtx_stack_c::YrotS(sp8C);
+ mDoMtx_stack_c::YrotS(angle);
mDoMtx_stack_c::transM(sp60);
mDoMtx_stack_c::scaleM(200.0f, 400.0f, 200.0f);
mDoMtx_stack_c::transM(0.0f, 0.5f, 0.0f);
mDoMtx_stack_c::XrotM(0x4000);
- sp78.set(i_bgcSrc->field_0x4, 0.0f, i_bgcSrc->field_0x0);
- mDoMtx_stack_c::multVec(&sp78, &sp48);
+ work.set(i_bgcSrc->field_0x4, 0.0f, i_bgcSrc->field_0x0);
+ mDoMtx_stack_c::multVec(&work, &sp48);
sp48 += i_actor->current.pos;
sp54 = sp48 + sp6C;
@@ -1136,9 +1163,9 @@ void daObjBm_c::Bgc_c::wall_pos(fopAc_ac_c const* i_actor, daObjBm_c::BgcSrc_c c
if (dComIfG_Bgsp().LineCross(&M_wall_work[i])) {
field_0x64[i] = M_wall_work[i].GetCross();
- f32 var_f31 = sp48.abs2(field_0x64[i]);
- if (var_f31 < field_0x17c) {
- field_0x17c = var_f31;
+ f32 absVal = sp48.abs2(field_0x64[i]);
+ if (absVal < field_0x17c) {
+ field_0x17c = absVal;
field_0x178 = i;
}
} else {
@@ -1147,60 +1174,58 @@ void daObjBm_c::Bgc_c::wall_pos(fopAc_ac_c const* i_actor, daObjBm_c::BgcSrc_c c
}
}
-bool daObjBm_c::Bgc_c::chk_wall_pre(fopAc_ac_c const* i_actor, daObjBm_c::BgcSrc_c const* i_bgcSrc,
- int i_num, s16 param_3) {
- wall_pos(i_actor, i_bgcSrc, i_num, param_3, 76.0f);
+bool daObjBm_c::Bgc_c::chk_wall_pre(fopAc_ac_c const* i_actor, daObjBm_c::BgcSrc_c const* i_bgcSrc, int i_num, s16 i_dir) {
+ wall_pos(i_actor, i_bgcSrc, i_num, i_dir, 76.0f);
return field_0x178 >= 0;
}
void daObjBm_c::initActionSwWait() {
field_0xfaa = 0;
field_0xfac = 0;
- field_0xfae = field_0xfaa;
- field_0xfae = field_0xfac;
- mpBrkAnm->setPlaySpeed(0.0f);
- mpBckAnm->setPlaySpeed(0.0f);
- field_0xfea = 0;
- field_0xfe4 = 0;
+ mGearRotationSpd = field_0xfaa;
+ mGearRotationSpd = field_0xfac;
+ mSerchBrk->setPlaySpeed(0.0f);
+ mBeamosBck->setPlaySpeed(0.0f);
+ mActionMode = 0;
+ mActionIdx = ACTION_SW_WAIT_e;
}
void daObjBm_c::actionSwWait() {
- cXyz i_sePos;
- switch (field_0xfea) {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ switch (mActionMode) {
case 0:
if (fopAcM_isSwitch(this, getSwNo())) {
- mpBrkAnm->init(mpModel->getModelData(),
- (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 0x15), 1, 0, 1.0f, 0,
- -1);
- i_sePos = home.pos;
+ mSerchBrk->init(mpModel->getModelData(), (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BRK_UP_e),
+ 1, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1);
+ cXyz i_sePos(home.pos);
i_sePos.y += 200.0f;
- mDoAud_seStart(Z2SE_EN_BM_BOOT, &i_sePos, 0,
- dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
- field_0xff7 = 1;
- field_0xfea = 1;
+ mDoAud_seStart(Z2SE_EN_BM_BOOT, &i_sePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ mShowFlag = 1;
+ mActionMode = 1;
}
break;
case 1:
- if (mpBrkAnm->isStop()) {
+ if (mSerchBrk->isStop()) {
field_0xfe5 = 0;
- field_0xfea = 2;
+ mActionMode = 2;
}
break;
case 2:
if (cLib_calcTimer(&field_0xfe5) == 0) {
- mpBtkAnm->init(mpModel2->getModelData(),
- (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 0x19), 1, 0, 0.0f,
- 0, -1);
- mpBtkAnm2->setPlaySpeed(0.0f);
- mpBrkAnm->init(mpModel->getModelData(),
- (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 0x14), 1, 2, 1.0f, 0,
- -1);
- mpBckAnm->init((J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 7), 1, 0, 1.0f, 0, -1,
- true);
+ mBeamBtk->init(mBeamModel->getModelData(),
+ (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, dRes_ID_OBJ_BM_BTK_EF_BIMOBEAM_ON_e), 1,
+ J3DFrameCtrl::EMode_NONE, 0.0f, 0, -1);
+ mBeamEffBtk->setPlaySpeed(0.0f);
+ mSerchBrk->init(mpModel->getModelData(),
+ (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, dRes_ID_OBJ_BM_BRK_TURN_e), 1,
+ J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1);
+ mBeamosBck->init((J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, dRes_ID_OBJ_BM_BCK_BM_UP_e), 1,
+ J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, true);
fopAcM_seStart(this, Z2SE_EN_BM_UP, 0);
- field_0x1008 = 20;
+ mAfterSwitchActivateNoSearchTimer = AFTER_SWITCH_ACTIVATE_NO_SEARCH_TIME;
initActionWarning();
}
break;
@@ -1208,38 +1233,35 @@ void daObjBm_c::actionSwWait() {
}
void daObjBm_c::initActionWarning() {
- if (field_0x102c) {
- field_0x102c->becomeInvalidEmitter();
- field_0x102c->quitImmortalEmitter();
- field_0x102c = NULL;
+ if (mGearSparkEmitter) {
+ mGearSparkEmitter->becomeInvalidEmitter();
+ mGearSparkEmitter->quitImmortalEmitter();
+ mGearSparkEmitter = NULL;
}
- if (field_0x1030) {
- field_0x1030->becomeInvalidEmitter();
- field_0x1030->quitImmortalEmitter();
- field_0x1030 = NULL;
+ if (mGearRockEmitter) {
+ mGearRockEmitter->becomeInvalidEmitter();
+ mGearRockEmitter->quitImmortalEmitter();
+ mGearRockEmitter = NULL;
}
- field_0xfea = 0;
- field_0xfe4 = 1;
+ mActionMode = 0;
+ mActionIdx = ACTION_WARNING_e;
}
void daObjBm_c::actionWarning() {
-#if DEBUG
- field_0xfac = l_HIO.mPatrolRotationSpeed;
-#else
- field_0xfac = 500;
-#endif
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ field_0xfac = PATROL_ROT_SPD;
- switch (field_0xfea) {
+ switch (mActionMode) {
case 0:
- field_0xfea = 1;
+ mActionMode = 1;
break;
case 1:
- if (cLib_calcTimer(&field_0x1008) == 0) {
- field_0xfe7 = checkFindPlayer();
- if (field_0xfe7 != -1 && field_0xfe8 == 0) {
+ if (cLib_calcTimer(&mAfterSwitchActivateNoSearchTimer) == 0) {
+ mFindPlayerFlag = checkFindPlayer();
+ if (mFindPlayerFlag != -1 && field_0xfe8 == 0) {
field_0xfe5 = 0;
initActionFindPlayer();
}
@@ -1247,68 +1269,66 @@ void daObjBm_c::actionWarning() {
break;
}
- field_0xfb0 = field_0xfac + 100;
+ mGearRotSpdTarget = field_0xfac + 100;
- if (field_0xfea != 5) {
+ if (mActionMode != 5) {
field_0xf98 = field_0xf96 + field_0xfaa;
}
- field_0xf9c = field_0xf9a - field_0xfae;
- field_0xfa0 = field_0xf9e + field_0xfae;
- field_0xfa4 = field_0xfa2 + field_0xfae;
- field_0xfa8 = field_0xfa6 + field_0xfae;
+ mBigGearRotXTarget = mBigGearRotX - mGearRotationSpd;
+ mSmallGear0RotXTarget = mSmallGear0RotX + mGearRotationSpd;
+ mSmallGear1RotXTarget = mSmallGear1RotX + mGearRotationSpd;
+ mSmallGear2RotXTarget = mSmallGear2RotX + mGearRotationSpd;
}
void daObjBm_c::initActionFindPlayer() {
- mpBrkAnm->init(mpModel->getModelData(), (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 0x13),
- 1, 0, 1.0f, 0, -1);
- field_0x1034 = dComIfGp_particle_set(dPa_RM(ID_ZF_S_BM_NESSENHEAT), &current.pos, 0, 0, 0xff, 0,
+ mSerchBrk->init(mpModel->getModelData(), (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, dRes_ID_OBJ_BM_BRK_SERCH_e),
+ 1, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1);
+ mNessenHeatPrtclEmitter = dComIfGp_particle_set(dPa_RM(ID_ZF_S_BM_NESSENHEAT), &current.pos, 0, 0, 0xFF, 0,
-1, 0, 0, 0);
field_0x1038 = -1;
fopAcM_seStart(this, Z2SE_EN_BM_FIND, 0);
fopAcM_seStart(this, Z2SE_EN_BM_HEAT, 0);
field_0xfe5 = 0;
- field_0xfea = 0;
-#if DEBUG
- field_0xfac = l_HIO.mSearchSpeedOnDetection;
-#else
- field_0xfac = 1000;
-#endif
+ mActionMode = 0;
+ field_0xfac = SEARCH_SPD_ON_DETECT;
field_0xfaa = field_0xfac;
- field_0xfb0 = field_0xfac;
- field_0xfe4 = 2;
+ mGearRotSpdTarget = field_0xfac;
+ mActionIdx = ACTION_FIND_PLAYER_e;
}
void daObjBm_c::actionFindPlayer() {
- switch (field_0xfea) {
- case 0:
+ switch (mActionMode) {
+ case 0: {
field_0xf98 = fopAcM_searchPlayerAngleY(this) - home.angle.y;
- field_0xf9c = field_0xf9a - field_0xfae;
- field_0xfa0 = field_0xf9e + field_0xfae;
- field_0xfa4 = field_0xfa2 + field_0xfae;
- field_0xfa8 = field_0xfa6 + field_0xfae;
-
- if ((s16)abs((s16)(fopAcM_searchPlayerAngleY(this) - field_0xf96 - home.angle.y)) <
- KREG_S(4) + 2000)
- {
- field_0xfea = 1;
+ mBigGearRotXTarget = mBigGearRotX - mGearRotationSpd;
+ mSmallGear0RotXTarget = mSmallGear0RotX + mGearRotationSpd;
+ mSmallGear1RotXTarget = mSmallGear1RotX + mGearRotationSpd;
+ mSmallGear2RotXTarget = mSmallGear2RotX + mGearRotationSpd;
+
+ s16 angle = (fopAcM_searchPlayerAngleY(this) - field_0xf96 - home.angle.y);
+ angle = abs(angle);
+ if (angle < KREG_S(4) + 2000) {
+ mActionMode = 1;
}
break;
+ }
+
case 1:
field_0xf98 = field_0xf96;
- field_0xfac = 0;
- field_0xfaa = 0;
+ field_0xfaa = field_0xfac = 0;
field_0x1000 = KREG_F(10) + 300.0f;
- field_0xfea = 2;
+ mActionMode = 2;
break;
+
case 2:
field_0xf98 = field_0xf96;
- field_0xfac = 0;
- field_0xfaa = 0;
+ field_0xfaa = field_0xfac = 0;
if (field_0x1000 == 0.0f) {
field_0xfe5 = 0;
initActionAttack();
+ return;
}
}
}
@@ -1323,46 +1343,50 @@ void daObjBm_c::initActionAttack() {
dPa_RM(ID_ZF_S_BM_NESSENSRC01),
};
- f32 dist = fopAcM_searchPlayerDistanceXZ(this);
- field_0x1004 = dist; // debug diff here
+ #if DEBUG
+ mPlayerDist = fopAcM_searchPlayerDistanceXZ(this) - TARGET_OFFSET_DIST;
+ #else
+ mPlayerDist = fopAcM_searchPlayerDistanceXZ(this);
+ #endif
daPy_py_c* player = daPy_getPlayerActorClass();
- mpBtkAnm->init(mpModel2->getModelData(),
- (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 0x19), 1, 0, 1.0f, 0, -1);
- mpBtkAnm2->setPlaySpeed(1.0f);
+ mBeamBtk->init(mBeamModel->getModelData(),
+ (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BTK_EF_BIMOBEAM_ON_e),
+ 1, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1);
+ mBeamEffBtk->setPlaySpeed(1.0f);
- field_0xfe5 = 0x14;
- field_0xfe6 = 0; // debug diff here
+ field_0xfe5 = 20;
+ mSearchAttackTimer = NO_SEARCH_ATTACK_TIME;
- if (field_0x102c == NULL)
- field_0x102c = dComIfGp_particle_set(dPa_RM(ID_ZF_S_BM_GEARSPARK), &current.pos, NULL, NULL,
- 0xff, NULL, -1, NULL, NULL, NULL);
+ if (mGearSparkEmitter == NULL)
+ mGearSparkEmitter = dComIfGp_particle_set(dPa_RM(ID_ZF_S_BM_GEARSPARK), &current.pos, NULL, NULL,
+ 0xFF, NULL, -1, NULL, NULL, NULL);
- if (field_0x1030 == NULL)
- field_0x1030 = dComIfGp_particle_set(dPa_RM(ID_ZF_S_BM_GEARROCK), &current.pos, NULL, NULL,
- 0xff, NULL, -1, NULL, NULL, NULL);
+ if (mGearRockEmitter == NULL)
+ mGearRockEmitter = dComIfGp_particle_set(dPa_RM(ID_ZF_S_BM_GEARROCK), &current.pos, NULL, NULL,
+ 0xFF, NULL, -1, NULL, NULL, NULL);
- if (field_0x102c != NULL) {
- field_0x102c->setRateStep(9);
- field_0x102c->setLifeTime(6);
- field_0x102c->setRate(6.5f);
+ if (mGearSparkEmitter != NULL) {
+ mGearSparkEmitter->setRateStep(9);
+ mGearSparkEmitter->setLifeTime(6);
+ mGearSparkEmitter->setRate(6.5f);
}
- if (field_0x1030 != NULL) {
- field_0x1030->setRateStep(2);
- field_0x1030->setAwayFromCenterSpeed(32.0f);
+ if (mGearRockEmitter != NULL) {
+ mGearRockEmitter->setRateStep(2);
+ mGearRockEmitter->setAwayFromCenterSpeed(32.0f);
}
for (int i = 0; i < 2; i++) {
- csXyz cStack_20(0, 0, 0);
- cStack_20.y = home.angle.y + field_0xf96;
- field_0x1018[i] = dComIfGp_particle_set(l_eff_id[i], &field_0xfb8, &cStack_20, NULL, 0xff,
+ csXyz rotation(0, 0, 0);
+ rotation.y = home.angle.y + field_0xf96;
+ mNessenSrcPrtclEmitter[i] = dComIfGp_particle_set(l_eff_id[i], &field_0xfb8, &rotation, NULL, 0xFF,
NULL, -1, NULL, NULL, NULL);
}
field_0xfed = 0;
- field_0xfea = 0;
- field_0xfe4 = 3;
+ mActionMode = 0;
+ mActionIdx = ACTION_ATTACK_e;
}
void daObjBm_c::actionAttack() {
@@ -1377,86 +1401,91 @@ void daObjBm_c::actionAttack() {
dPa_RM(ID_ZF_S_BM_NESSENSPLASH02),
};
- f32 dVar17 = fopAcM_searchPlayerDistanceXZ(this);
- f32 dVar18 = getBeamSearchDistance();
-
- if (dVar17 > dVar18) {
- dVar17 = getBeamSearchDistance();
+ s8 sVar3 = 0;
+ f32 playerDistanceXZ = fopAcM_searchPlayerDistanceXZ(this);
+ if (playerDistanceXZ > getBeamSearchDistance()) {
+ playerDistanceXZ = getBeamSearchDistance();
}
-
- bool bVar4 = true;
-
- if (checkSearchPlayer() == -1 && cLib_calcTimer(&field_0xfe5) == 0 || field_0xfe8 != 0) {
- bVar4 = false;
+ s16 sVar1 = 0x7530;
+ s16 sVar2 = 0x1C2;
+ bool flag = true;
+ s8 searchPlayer = checkSearchPlayer();
+ if (searchPlayer == -1 && cLib_calcTimer(&field_0xfe5) == 0 || field_0xfe8 != 0) {
+ flag = false;
}
- switch (field_0xfea) {
+ switch (mActionMode) {
case 0:
- if (cLib_calcTimer(&field_0xfe6) == 0) {
- field_0xfea = 2;
+ if (cLib_calcTimer(&mSearchAttackTimer) == 0) {
+ mActionMode = 2;
}
break;
+
case 1:
- field_0xfac = 200 - KREG_S(0); // debug diff here
+ field_0xfac = (ATTACK_ROT_SPD - 250) - KREG_S(0);
field_0xf98 = fopAcM_searchPlayerAngleY(this) - home.angle.y;
- cLib_chaseF(&field_0x1004, dVar17, KREG_F(16) + 5.0f);
+ cLib_chaseF(&mPlayerDist, playerDistanceXZ, KREG_F(16) + 5.0f);
- if (!bVar4) {
- field_0xfea = 3;
+ if (!flag) {
+ mActionMode = 3;
}
if (cLib_calcTimer(&field_0xfec) == 0) {
- field_0xfea = 2;
+ mActionMode = 2;
}
break;
+
case 2:
- field_0xfac = 0x1c2; // debug diff here
+ field_0xfac = ATTACK_ROT_SPD;
field_0xf98 = fopAcM_searchPlayerAngleY(this) - home.angle.y;
- cLib_chaseF(&field_0x1004, dVar17, KREG_F(16) + 15.0f);
+ cLib_chaseF(&mPlayerDist, playerDistanceXZ, KREG_F(16) + 15.0f);
- if (!bVar4) {
- field_0xfea = 0x3;
+ if (!flag) {
+ mActionMode = 3;
}
break;
+
case 3:
- mpBtkAnm->init(mpModel2->getModelData(),
- (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 0x1a), 1, 0, 1.0f, 0,
- -1);
- mpBrkAnm->init(mpModel->getModelData(),
- (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 0x14), 1, 2, 1.0f, 0, -1);
- field_0x1038 = 0x14;
-
- if (field_0x1034 != NULL) {
- field_0x1034->becomeInvalidEmitter();
- field_0x1034->quitImmortalEmitter();
- field_0x1034 = NULL;
+ mBeamBtk->init(mBeamModel->getModelData(),
+ (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BTK_EF_BIMOBEAMB_OFF_e),
+ 1, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1);
+ mSerchBrk->init(mpModel->getModelData(),
+ (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BRK_TURN_e),
+ 1, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1);
+ field_0x1038 = 20;
+
+ if (mNessenHeatPrtclEmitter != NULL) {
+ mNessenHeatPrtclEmitter->becomeInvalidEmitter();
+ mNessenHeatPrtclEmitter->quitImmortalEmitter();
+ mNessenHeatPrtclEmitter = NULL;
}
for (int i = 0; i < 2; i++) {
- if (field_0x1018[i] != NULL) {
- field_0x1018[i]->becomeInvalidEmitter();
- field_0x1018[i]->quitImmortalEmitter();
- field_0x1018[i] = NULL;
+ if (mNessenSrcPrtclEmitter[i] != NULL) {
+ mNessenSrcPrtclEmitter[i]->becomeInvalidEmitter();
+ mNessenSrcPrtclEmitter[i]->quitImmortalEmitter();
+ mNessenSrcPrtclEmitter[i] = NULL;
}
}
- field_0xfea = 4;
+ mActionMode = 4;
break;
+
case 4:
- if (mpBtkAnm->isStop()) {
+ if (mBeamBtk->isStop()) {
for (int i = 0; i < 2; i++) {
- if (field_0x1010[i] != NULL) {
- field_0x1010[i]->becomeInvalidEmitter();
- field_0x1010[i]->quitImmortalEmitter();
- field_0x1010[i] = NULL;
+ if (mNessenBurnPrtclEmitter[i] != NULL) {
+ mNessenBurnPrtclEmitter[i]->becomeInvalidEmitter();
+ mNessenBurnPrtclEmitter[i]->quitImmortalEmitter();
+ mNessenBurnPrtclEmitter[i] = NULL;
}
}
for (int i = 0; i < 3; i++) {
- if (field_0x1020[i] != NULL) {
- field_0x1020[i]->becomeInvalidEmitter();
- field_0x1020[i]->quitImmortalEmitter();
- field_0x1020[i] = NULL;
+ if (mNessenSplashPrtclEmitter[i] != NULL) {
+ mNessenSplashPrtclEmitter[i]->becomeInvalidEmitter();
+ mNessenSplashPrtclEmitter[i]->quitImmortalEmitter();
+ mNessenSplashPrtclEmitter[i] = NULL;
}
}
@@ -1464,88 +1493,87 @@ void daObjBm_c::actionAttack() {
}
}
- for (int i = 0; i < 2; i++) { // local_a4
- csXyz cStack_8c(0, 0, 0);
- cStack_8c.y = home.angle.y + field_0xf96;
+ for (int i = 0; i < 2; i++) {
+ csXyz rotation(0, 0, 0);
+ rotation.y = home.angle.y + field_0xf96;
mDoMtx_stack_c::transS(field_0xfb8);
- mDoMtx_stack_c::YrotM(cStack_8c.y);
+ mDoMtx_stack_c::YrotM(rotation.y);
- if (field_0x1018[i] != 0) {
- field_0x1018[i]->setGlobalRTMatrix(mDoMtx_stack_c::get());
+ if (mNessenSrcPrtclEmitter[i] != 0) {
+ mNessenSrcPrtclEmitter[i]->setGlobalRTMatrix(mDoMtx_stack_c::get());
}
}
- field_0x1054 = home.pos;
+ mBurnSoundPos = home.pos;
cXyz cStack60 = field_0xfcc - field_0xfb8;
- cXyz cStack_6c(field_0xfb8);
+ cXyz end(field_0xfb8);
cStack60.normalizeZP();
- cStack_6c += cStack60 * 1200.0f;
+ end += cStack60 * 1200.0f;
- if (fopAcM_lc_c::lineCheck(&field_0xfb8, &cStack_6c, this) && fopAcM_lc_c::checkGroundHit()) {
+ if (fopAcM_lc_c::lineCheck(&field_0xfb8, &end, this) && fopAcM_lc_c::checkGroundHit()) {
if (field_0xfed == 0) {
for (int i = 0; i < 2; i++) {
- if (field_0x1010[i] == NULL) {
- field_0x1010[i] =
+ if (mNessenBurnPrtclEmitter[i] == NULL) {
+ mNessenBurnPrtclEmitter[i] =
dComIfGp_particle_set(l_eff_id[i], fopAcM_lc_c::getCrossP(), NULL, NULL,
- 0xff, NULL, -1, NULL, NULL, NULL);
+ 0xFF, NULL, -1, NULL, NULL, NULL);
}
}
for (int i = 0; i < 3; i++) {
- if (field_0x1020[i] == NULL) {
- field_0x1020[i] =
+ if (mNessenSplashPrtclEmitter[i] == NULL) {
+ mNessenSplashPrtclEmitter[i] =
dComIfGp_particle_set(l_eff_id2[i], fopAcM_lc_c::getCrossP(), NULL, NULL,
- 0xff, NULL, -1, NULL, NULL, NULL);
+ 0xFF, NULL, -1, NULL, NULL, NULL);
}
}
field_0xfed = 1;
} else {
- cXyz* pfVar7 = fopAcM_lc_c::getCrossP();
- f32 fVar2 = pfVar7->z;
- pfVar7 = fopAcM_lc_c::getCrossP();
- f32 fVar3 = pfVar7->y;
- cXyz* pfVar9 = fopAcM_lc_c::getCrossP();
- mDoMtx_stack_c::transS(pfVar9->x, fVar3 + 2.0f, fVar2);
- cM3dGPla cStack_54;
- csXyz local_94;
-
- if (fopAcM_lc_c::checkGroundHit() && fopAcM_lc_c::getTriPla(&cStack_54)) {
- cM3d_CalcVecAngle(cStack_54.mNormal, &local_94.x, &local_94.z);
- mDoMtx_stack_c::XYZrotM(local_94.x, 0, local_94.z);
+ f32 y, z;
+ z = fopAcM_lc_c::getCrossP()->z;
+ y = fopAcM_lc_c::getCrossP()->y + 2.0f;
+ mDoMtx_stack_c::transS(fopAcM_lc_c::getCrossP()->x, y, z);
+ cM3dGPla plane;
+ csXyz angle;
+
+ if (fopAcM_lc_c::checkGroundHit() && fopAcM_lc_c::getTriPla(&plane)) {
+ cM3d_CalcVecAngle(plane.mNormal, &angle.x, &angle.z);
+ mDoMtx_stack_c::XYZrotM(angle.x, 0, angle.z);
}
for (int i = 0; i < 2; i++) {
- if (field_0x1010[i] != NULL) {
- field_0x1010[i]->setGlobalRTMatrix(mDoMtx_stack_c::get());
+ if (mNessenBurnPrtclEmitter[i] != NULL) {
+ mNessenBurnPrtclEmitter[i]->setGlobalRTMatrix(mDoMtx_stack_c::get());
}
}
for (int i = 0; i < 3; i++) {
- if (field_0x1020[i] != NULL) {
- field_0x1020[i]->setGlobalRTMatrix(mDoMtx_stack_c::get());
+ if (mNessenSplashPrtclEmitter[i] != NULL) {
+ mNessenSplashPrtclEmitter[i]->setGlobalRTMatrix(mDoMtx_stack_c::get());
}
}
- field_0x1054 = fopAcM_lc_c::getCross();
- field_0x1054.y += 2.0f;
+ mBurnSoundPos = fopAcM_lc_c::getCross();
+ mBurnSoundPos.y += 2.0f;
}
}
- if (field_0x1054 != home.pos) {
- mSound2.startLevelSound(Z2SE_EN_BM_BURN, 0, -1);
+ if (mBurnSoundPos != home.pos) {
+ mBurnSound.startLevelSound(Z2SE_EN_BM_BURN, 0, -1);
}
- if (mpBrkAnm->isStop()) {
- mpBrkAnm->init(mpModel->getModelData(),
- (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 0x12), 1, 2, 1.0f, 0, -1);
+ if (mSerchBrk->isStop()) {
+ mSerchBrk->init(mpModel->getModelData(),
+ (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, dRes_ID_OBJ_BM_BRK_LOOK_e), 1,
+ J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1);
}
- field_0xfb0 = field_0xfac * 3;
- field_0xf9c = field_0xf9a - field_0xfae;
- field_0xfa0 = field_0xf9e + field_0xfae;
- field_0xfa4 = field_0xfa2 + field_0xfae;
- field_0xfa8 = field_0xfa6 + field_0xfae;
+ mGearRotSpdTarget = field_0xfac * 3;
+ mBigGearRotXTarget = mBigGearRotX - mGearRotationSpd;
+ mSmallGear0RotXTarget = mSmallGear0RotX + mGearRotationSpd;
+ mSmallGear1RotXTarget = mSmallGear1RotX + mGearRotationSpd;
+ mSmallGear2RotXTarget = mSmallGear2RotX + mGearRotationSpd;
if (checkLockOnCamera() == 0) {
dCam_getBody()->ForceLockOn(this);
@@ -1559,77 +1587,77 @@ void daObjBm_c::initActionDead() {
field_0xf98 = 0x7FFF;
}
- field_0xfaa = 0;
- field_0xfac = 0;
+ field_0xfac = field_0xfaa = 0;
- mpBckAnm->init((J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 10), 1, 0, 0.0f, 0, -1, true);
- if (mpBtkAnm->getBtkAnm() == (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 0x19)) {
- mpBtkAnm->init(mpModel2->getModelData(),
- (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 0x1a), 1, 0, 1.0f, 0,
- -1);
+ mBeamosBck->init((J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, dRes_ID_OBJ_BM_BCK_OC_DOWN_e), 1,
+ J3DFrameCtrl::EMode_NONE, 0.0f, 0, -1, true);
+ if (mBeamBtk->getBtkAnm() == (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, dRes_ID_OBJ_BM_BTK_EF_BIMOBEAM_ON_e)) {
+ mBeamBtk->init(mBeamModel->getModelData(),
+ (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, dRes_INDEX_OBJ_BM_BTK_EF_BIMOBEAMB_OFF_e),
+ 1, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1);
}
field_0x1038 = 0x14;
for (int i = 0; i < 2; i++) {
- if (field_0x1018[i] != NULL) {
- field_0x1018[i]->becomeInvalidEmitter();
- field_0x1018[i]->quitImmortalEmitter();
- field_0x1018[i] = NULL;
+ if (mNessenSrcPrtclEmitter[i] != NULL) {
+ mNessenSrcPrtclEmitter[i]->becomeInvalidEmitter();
+ mNessenSrcPrtclEmitter[i]->quitImmortalEmitter();
+ mNessenSrcPrtclEmitter[i] = NULL;
}
- if (field_0x1010[i] != NULL) {
- field_0x1010[i]->becomeInvalidEmitter();
- field_0x1010[i]->quitImmortalEmitter();
- field_0x1010[i] = NULL;
+ if (mNessenBurnPrtclEmitter[i] != NULL) {
+ mNessenBurnPrtclEmitter[i]->becomeInvalidEmitter();
+ mNessenBurnPrtclEmitter[i]->quitImmortalEmitter();
+ mNessenBurnPrtclEmitter[i] = NULL;
}
}
for (int i = 0; i < 3; i++) {
- if (field_0x1020[i] != NULL) {
- field_0x1020[i]->becomeInvalidEmitter();
- field_0x1020[i]->quitImmortalEmitter();
- field_0x1020[i] = NULL;
+ if (mNessenSplashPrtclEmitter[i] != NULL) {
+ mNessenSplashPrtclEmitter[i]->becomeInvalidEmitter();
+ mNessenSplashPrtclEmitter[i]->quitImmortalEmitter();
+ mNessenSplashPrtclEmitter[i] = NULL;
}
}
- if (field_0x1034 != NULL) {
- field_0x1034->becomeInvalidEmitter();
- field_0x1034->quitImmortalEmitter();
- field_0x1034 = NULL;
+ if (mNessenHeatPrtclEmitter != NULL) {
+ mNessenHeatPrtclEmitter->becomeInvalidEmitter();
+ mNessenHeatPrtclEmitter->quitImmortalEmitter();
+ mNessenHeatPrtclEmitter = NULL;
}
field_0xfe5 = 20;
field_0xfe9 = 0;
- field_0xff7 = 0;
+ mShowFlag = 0;
fopAcM_OffStatus(this, 0);
- field_0xfea = 0;
- field_0xfe4 = 4;
+ mActionMode = 0;
+ mActionIdx = ACTION_DEAD_e;
}
void daObjBm_c::actionDead() {
- switch (field_0xfea) {
+ switch (mActionMode) {
case 0:
if (!cLib_calcTimer(&field_0xfe5)) {
- field_0xfea = 1;
+ mActionMode = 1;
}
break;
case 1:
field_0xfac = 500;
- if (field_0x102c != NULL) {
- field_0x102c->becomeInvalidEmitter();
- field_0x102c->quitImmortalEmitter();
- field_0x102c = NULL;
+ if (mGearSparkEmitter != NULL) {
+ mGearSparkEmitter->becomeInvalidEmitter();
+ mGearSparkEmitter->quitImmortalEmitter();
+ mGearSparkEmitter = NULL;
}
- if (field_0x1030 != NULL) {
- field_0x1030->becomeInvalidEmitter();
- field_0x1030->quitImmortalEmitter();
- field_0x1030 = NULL;
+ if (mGearRockEmitter != NULL) {
+ mGearRockEmitter->becomeInvalidEmitter();
+ mGearRockEmitter->quitImmortalEmitter();
+ mGearRockEmitter = NULL;
}
- field_0xfea = 2;
+ mActionMode = 2;
break;
case 2:
@@ -1637,30 +1665,30 @@ void daObjBm_c::actionDead() {
if (field_0xf96 == field_0xf98) {
field_0xfac = 0;
field_0x1000 = 200.0f;
- field_0xfea = 3;
+ mActionMode = 3;
fopAcM_seStart(this, Z2SE_EN_BM_TURN_END, 0);
}
break;
case 3:
field_0xfe5 = 20;
- field_0xfea = 4;
+ mActionMode = 4;
break;
case 4:
if (!cLib_calcTimer(&field_0xfe5)) {
- mpBckAnm->setPlaySpeed(1.0f);
- dComIfGp_particle_set(dPa_RM(ID_ZF_S_BM_SMOKE), &current.pos, NULL, NULL, 0xff, NULL,
+ mBeamosBck->setPlaySpeed(1.0f);
+ dComIfGp_particle_set(dPa_RM(ID_ZF_S_BM_SMOKE), &current.pos, NULL, NULL, 0xFF, NULL,
-1, NULL, NULL, NULL);
- field_0xfea = 5;
+ mActionMode = 5;
}
break;
case 5:
- if (mpBckAnm->isStop()) {
+ if (mBeamosBck->isStop()) {
field_0xfe5 = 10;
fopAcM_seStart(this, Z2SE_EN_BM_DOWN, 0);
- field_0xfea = 6;
+ mActionMode = 6;
fopAcM_seStart(this, Z2SE_EN_BM_UNLOCK, 0);
}
break;
@@ -1668,13 +1696,11 @@ void daObjBm_c::actionDead() {
case 6:
if (getMoveType() == 1) {
initActionObjBemos();
- } else {
- if (cLib_calcTimer(&field_0xfe5) == 0) {
- mpBckAnm3->setPlaySpeed(1.0f);
+ } else if (cLib_calcTimer(&field_0xfe5) == 0) {
+ mBmfOffBck->setPlaySpeed(1.0f);
- if (mpBckAnm3->isStop()) {
- field_0xfea = 7;
- }
+ if (mBmfOffBck->isStop()) {
+ mActionMode = 7;
}
}
@@ -1683,11 +1709,11 @@ void daObjBm_c::actionDead() {
initActionObjBemos();
}
- field_0xfb0 = field_0xfac;
- field_0xf9c = field_0xf9a - field_0xfae;
- field_0xfa0 = field_0xf9e + field_0xfae;
- field_0xfa4 = field_0xfa2 + field_0xfae;
- field_0xfa8 = field_0xfa6 + field_0xfae;
+ mGearRotSpdTarget = field_0xfac;
+ mBigGearRotXTarget = mBigGearRotX - mGearRotationSpd;
+ mSmallGear0RotXTarget = mSmallGear0RotX + mGearRotationSpd;
+ mSmallGear1RotXTarget = mSmallGear1RotX + mGearRotationSpd;
+ mSmallGear2RotXTarget = mSmallGear2RotX + mGearRotationSpd;
}
int daObjBm_c::Draw() {
@@ -1696,29 +1722,29 @@ int daObjBm_c::Draw() {
dComIfGd_setListBG();
J3DShape* shape = mpMaterial->getShape();
- if (field_0xff7 == 0) {
+ if (mShowFlag == 0) {
shape->hide();
}
- mpBrkAnm->entry(mpModel->getModelData());
- mpBckAnm->entry(mpModel->getModelData());
+ mSerchBrk->entry(mpModel->getModelData());
+ mBeamosBck->entry(mpModel->getModelData());
mDoExt_modelUpdateDL(mpModel);
mDoExt_brkAnmRemove(mpModel->getModelData());
mDoExt_bckAnmRemove(mpModel->getModelData());
shape->show();
dComIfGd_setList();
- g_env_light.setLightTevColorType_MAJI(mpModel2, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mBeamModel, &tevStr);
- mpBtkAnm2->entry(mpModel2->getModelData());
- mpBtkAnm->entry(mpModel2->getModelData());
- mpBckAnm2->entry(mpModel2->getModelData());
- mDoExt_modelUpdateDL(mpModel2);
- mDoExt_btkAnmRemove(mpModel2->getModelData());
- mDoExt_bckAnmRemove(mpModel2->getModelData());
+ mBeamEffBtk->entry(mBeamModel->getModelData());
+ mBeamBtk->entry(mBeamModel->getModelData());
+ mBeamEffBck->entry(mBeamModel->getModelData());
+ mDoExt_modelUpdateDL(mBeamModel);
+ mDoExt_btkAnmRemove(mBeamModel->getModelData());
+ mDoExt_bckAnmRemove(mBeamModel->getModelData());
- g_env_light.setLightTevColorType_MAJI(mpModel3, &tevStr);
- mpBckAnm3->entry(mpModel3->getModelData());
- mDoExt_modelUpdateDL(mpModel3);
+ g_env_light.setLightTevColorType_MAJI(mBmfModel, &tevStr);
+ mBmfOffBck->entry(mBmfModel->getModelData());
+ mDoExt_modelUpdateDL(mBmfModel);
#if DEBUG
debugDraw();
@@ -1729,7 +1755,7 @@ int daObjBm_c::Draw() {
#if DEBUG
void daObjBm_c::debugDraw() {
- if (l_HIO.mDebugDraw) {
+ if (DEBUG_DRAW) {
GXColor local_4c = {
0xff,
0,
@@ -1758,22 +1784,14 @@ void daObjBm_c::debugDraw() {
dDbVw_drawCircleXlu(cStack_3c, getSearchDistance(), local_4c, 1, 0xc);
dDbVw_drawCircleXlu(cStack_3c, getBeamSearchDistance(), local_50, 1, 0xc);
- dDbVw_drawCircleXlu(cStack_3c, l_HIO.mBeamMiddleDistance, local_4c, 1, 0xc);
- dDbVw_drawCircleXlu(cStack_3c, l_HIO.mBeamLowerDistance, local_4c, 1, 0xc);
-
- GXColor local_54 = {
- 0,
- 0,
- 0xff,
- 0xff,
- };
-
- local_4c = local_54;
+ dDbVw_drawCircleXlu(cStack_3c, BEAM_MIDDLE_DIST, local_4c, 1, 0xc);
+ dDbVw_drawCircleXlu(cStack_3c, BEAM_LOWER_DIST, local_4c, 1, 0xc);
+ local_4c = (GXColor){0, 0, 0xFF, 0xFF};
cXyz cStack_48;
cStack_48.set(0.0f, 10.0f, getSearchDistance());
- s16 sVar1 = l_HIO.mSearchAngle / 2;
+ s16 sVar1 = SEARCH_ANGLE / 2;
mDoMtx_stack_c::YrotS((home.angle.y + field_0xf96) + sVar1);
mDoMtx_stack_c::multVec(&cStack_48, &cStack_48);
cStack_48 += cStack_3c;
@@ -1784,18 +1802,10 @@ void daObjBm_c::debugDraw() {
mDoMtx_stack_c::multVec(&cStack_48, &cStack_48);
cStack_48 += cStack_3c;
dDbVw_drawLineOpa(cStack_3c, cStack_48, local_4c, 1, 0xc);
-
- GXColor local_58 = {
- 0,
- 0xff,
- 0xff,
- 0xff,
- };
-
- local_4c = local_58;
+ local_4c = (GXColor){0, 0xFF, 0xFF, 0xFF};
cStack_48.set(0.0f, 10.0f, getSearchDistance());
- sVar1 = l_HIO.mDetectionAngle / 2;
+ sVar1 = DETECTION_ANGLE / 2;
mDoMtx_stack_c::YrotS((home.angle.y + field_0xf96) + sVar1);
mDoMtx_stack_c::multVec(&cStack_48, &cStack_48);
cStack_48 += cStack_3c;
@@ -1805,19 +1815,11 @@ void daObjBm_c::debugDraw() {
mDoMtx_stack_c::YrotS((home.angle.y + field_0xf96) - sVar1);
mDoMtx_stack_c::multVec(&cStack_48, &cStack_48);
cStack_48 += cStack_3c;
- dDbVw_drawLineOpa(cStack_3c, cStack_48, local_4c, 1, 0xc);
-
- GXColor local_5c = {
- 0xff,
- 0xff,
- 0xff,
- 0xff,
- };
-
- dDbVw_drawSphereOpa(field_0xfcc, 0.0f, local_5c, 1);
+ dDbVw_drawLineOpa(cStack_3c, cStack_48, local_4c, 1, 0xC);
+ dDbVw_drawSphereOpa(field_0xfcc, 30.0f, (GXColor){0x0, 0x0, 0xFF, 0xFF}, 1);
}
- if (l_HIO.mCheckDraw) {
+ if (CHECK_DRAW) {
mpBgW->CalcPlane();
}
}
@@ -1825,56 +1827,56 @@ void daObjBm_c::debugDraw() {
int daObjBm_c::Delete() {
for (int i = 0; i < 2; i++) {
- if (field_0xff8[i]) {
- field_0xff8[i]->becomeInvalidEmitter();
- field_0xff8[i]->quitImmortalEmitter();
- field_0xff8[i] = NULL;
+ if (mBrokenSmokeEmitter[i]) {
+ mBrokenSmokeEmitter[i]->becomeInvalidEmitter();
+ mBrokenSmokeEmitter[i]->quitImmortalEmitter();
+ mBrokenSmokeEmitter[i] = NULL;
}
}
- if (field_0x102c) {
- field_0x102c->becomeInvalidEmitter();
- field_0x102c->quitImmortalEmitter();
- field_0x102c = NULL;
+ if (mGearSparkEmitter) {
+ mGearSparkEmitter->becomeInvalidEmitter();
+ mGearSparkEmitter->quitImmortalEmitter();
+ mGearSparkEmitter = NULL;
}
- if (field_0x1030) {
- field_0x1030->becomeInvalidEmitter();
- field_0x1030->quitImmortalEmitter();
- field_0x1030 = NULL;
+ if (mGearRockEmitter) {
+ mGearRockEmitter->becomeInvalidEmitter();
+ mGearRockEmitter->quitImmortalEmitter();
+ mGearRockEmitter = NULL;
}
- if (field_0x1034) {
- field_0x1034->becomeInvalidEmitter();
- field_0x1034->quitImmortalEmitter();
- field_0x1034 = NULL;
+ if (mNessenHeatPrtclEmitter) {
+ mNessenHeatPrtclEmitter->becomeInvalidEmitter();
+ mNessenHeatPrtclEmitter->quitImmortalEmitter();
+ mNessenHeatPrtclEmitter = NULL;
}
for (int i = 0; i < 2; i++) {
- if (field_0x1010[i]) {
- field_0x1010[i]->becomeInvalidEmitter();
- field_0x1010[i]->quitImmortalEmitter();
- field_0x1010[i] = NULL;
+ if (mNessenBurnPrtclEmitter[i]) {
+ mNessenBurnPrtclEmitter[i]->becomeInvalidEmitter();
+ mNessenBurnPrtclEmitter[i]->quitImmortalEmitter();
+ mNessenBurnPrtclEmitter[i] = NULL;
}
- if (field_0x1018[i]) {
- field_0x1018[i]->becomeInvalidEmitter();
- field_0x1018[i]->quitImmortalEmitter();
- field_0x1018[i] = NULL;
+ if (mNessenSrcPrtclEmitter[i]) {
+ mNessenSrcPrtclEmitter[i]->becomeInvalidEmitter();
+ mNessenSrcPrtclEmitter[i]->quitImmortalEmitter();
+ mNessenSrcPrtclEmitter[i] = NULL;
}
}
for (int i = 0; i < 3; i++) {
- if (field_0x1020[i]) {
- field_0x1020[i]->becomeInvalidEmitter();
- field_0x1020[i]->quitImmortalEmitter();
- field_0x1020[i] = NULL;
+ if (mNessenSplashPrtclEmitter[i]) {
+ mNessenSplashPrtclEmitter[i]->becomeInvalidEmitter();
+ mNessenSplashPrtclEmitter[i]->quitImmortalEmitter();
+ mNessenSplashPrtclEmitter[i] = NULL;
}
}
mpBgW->SetPushPullCallback(NULL);
- mSound.deleteObject();
- mSound2.deleteObject();
+ mBeamSound.deleteObject();
+ mBurnSound.deleteObject();
dComIfG_resDelete(&mPhase, l_arcName);
#if DEBUG
l_HIO.removeHIO();
@@ -1922,8 +1924,4 @@ extern actor_process_profile_definition g_profile_Obj_Bemos = {
fopAc_CULLBOX_CUSTOM_e, // cullType
};
-static void dummy_touch_work() {
- static dBgS_ObjLinChk touch_work;
-}
-
AUDIO_INSTANCES;