mirror of
https://github.com/zeldaret/tp
synced 2026-06-06 11:47:28 -04:00
Work on d_a_obj_ice_s debug (#2941)
This commit is contained in:
@@ -14,15 +14,41 @@
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include <cmath.h>
|
||||
|
||||
class daOBJ_ICE_S_HIO_c : public JORReflexible {
|
||||
public:
|
||||
daOBJ_ICE_S_HIO_c();
|
||||
virtual ~daOBJ_ICE_S_HIO_c();
|
||||
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
/* 0x4 */ s8 mId;
|
||||
/* 0x8 */ f32 mSlopeMagnitude;
|
||||
/* 0xC */ f32 mSinkingAmount;
|
||||
};
|
||||
|
||||
static char* l_arcName = "V_Ice_s";
|
||||
|
||||
daOBJ_ICE_S_HIO_c::~daOBJ_ICE_S_HIO_c() {}
|
||||
|
||||
daOBJ_ICE_S_HIO_c::daOBJ_ICE_S_HIO_c() {
|
||||
field_0x4 = -1;
|
||||
field_0x8 = 5000.0f;
|
||||
field_0xc = 20.0f;
|
||||
mId = -1;
|
||||
mSlopeMagnitude = 5000.0f;
|
||||
mSinkingAmount = 20.0f;
|
||||
}
|
||||
|
||||
f32 dummyLiteral() { return 0.0f; }
|
||||
#if DEBUG
|
||||
|
||||
void daOBJ_ICE_S_HIO_c::genMessage(JORMContext* ctx) {
|
||||
ctx->genLabel("氷の足場小", 0x80000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
ctx->genSlider("傾きの大きさ", &mSlopeMagnitude, 0.0f, 50000.0f, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
0x18);
|
||||
ctx->genSlider("沈みの量", &mSinkingAmount, 0.0f, 1000.0f, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
0x18);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static f32 dummyLiteral() { return 0.0f; }
|
||||
|
||||
void daObjIce_s_c::RideOn_Angle(s16& param_1, f32 param_2, s16 param_3, f32 param_4) {
|
||||
cLib_addCalcAngleS(¶m_1, param_3 * (param_2 / param_4), 5, 0x100, 1);
|
||||
@@ -43,10 +69,10 @@ bool daObjIce_s_c::Check_LinkRideOn(cXyz param_1) {
|
||||
f32 sinangle = dVar11 * cM_ssin(sVar7 - shape_angle.y);
|
||||
f32 var_f27;
|
||||
if (field_0x5c5 == 0xff) {
|
||||
var_f27 = l_HIO.field_0x8;
|
||||
var_f27 = l_HIO.mSlopeMagnitude;
|
||||
}
|
||||
RideOn_Angle(field_0x5da, cosangle, -0xaa0, (XREG_F(0) + 1000.0f) * field_0x5c8.x);
|
||||
RideOn_Angle(field_0x5de, sinangle, -0xaa0, (XREG_F(0) + 1000.0f) * field_0x5c8.x);
|
||||
RideOn_Angle(field_0x5da.x, cosangle, -0xaa0, (XREG_F(0) + 1000.0f) * field_0x5c8.x);
|
||||
RideOn_Angle(field_0x5da.z, sinangle, -0xaa0, (XREG_F(0) + 1000.0f) * field_0x5c8.x);
|
||||
f32 var_f26 = 0.0f;
|
||||
field_0x5e8 = 1;
|
||||
speedF = fopAcM_GetSpeedF(player);
|
||||
@@ -71,10 +97,10 @@ bool daObjIce_s_c::Check_RideOn(cXyz param_1) {
|
||||
f32 fVar1;
|
||||
// !@bug fVar1 might be uninitialized
|
||||
if (field_0x5c5 == 0xff) {
|
||||
fVar1 = l_HIO.field_0x8;
|
||||
fVar1 = l_HIO.mSlopeMagnitude;
|
||||
}
|
||||
RideOn_Angle(field_0x5da, cosangle, (yREG_F(0) + 1024.0f + fVar1) / field_0x5c8.x, (XREG_F(0) + 1000.0f) * field_0x5c8.x);
|
||||
RideOn_Angle(field_0x5de, sinangle, (yREG_F(0) + 1024.0f + fVar1) / field_0x5c8.x, (XREG_F(0) + 1000.0f) * field_0x5c8.x);
|
||||
RideOn_Angle(field_0x5da.x, cosangle, (yREG_F(0) + 1024.0f + fVar1) / field_0x5c8.x, (XREG_F(0) + 1000.0f) * field_0x5c8.x);
|
||||
RideOn_Angle(field_0x5da.z, sinangle, (yREG_F(0) + 1024.0f + fVar1) / field_0x5c8.x, (XREG_F(0) + 1000.0f) * field_0x5c8.x);
|
||||
f32 var_f26 = 0.0f;
|
||||
field_0x5e8 = 1;
|
||||
field_0x5e0 = HREG_F(3) * (1.0f - std::abs(cosangle) / 2500.0f * (1.0f - (std::abs(sinangle) / 300.0f)));;
|
||||
@@ -147,20 +173,21 @@ static int daObjIce_s_IsDelete(daObjIce_s_c* param_0) {
|
||||
}
|
||||
|
||||
static int daObjIce_s_Delete(daObjIce_s_c* i_this) {
|
||||
fopAcM_GetID(i_this);
|
||||
fopAcM_RegisterDeleteID(i_this, "Obj_Ice_s");
|
||||
i_this->MoveBGDelete();
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int daObjIce_s_Create(fopAc_ac_c* i_this) {
|
||||
fopAcM_GetID(i_this);
|
||||
return static_cast<daObjIce_s_c*>(i_this)->create();
|
||||
fopAcM_RegisterCreateID(daObjIce_s_c, i_this, "Obj_Ice_s");
|
||||
return a_this->create();
|
||||
}
|
||||
|
||||
int daObjIce_s_c::create() {
|
||||
inline int daObjIce_s_c::create() {
|
||||
fopAcM_ct(this, daObjIce_s_c);
|
||||
int rv = dComIfG_resLoad(&mPhase, l_arcName);
|
||||
if (rv == cPhs_COMPLEATE_e) {
|
||||
OS_REPORT("ICE_S PARAM %x\n", fopAcM_GetParam(this));
|
||||
int dzb_id = dComIfG_getObjctResName2Index(l_arcName, "Ice_s.dzb");
|
||||
JUT_ASSERT(185, dzb_id != -1);
|
||||
rv = MoveBGCreate(l_arcName, dzb_id, dBgS_MoveBGProc_TypicalRotY, 0x1440, NULL);
|
||||
@@ -171,7 +198,7 @@ int daObjIce_s_c::create() {
|
||||
if (!l_HIOInit) {
|
||||
l_HIOInit = TRUE;
|
||||
field_0x640 = 1;
|
||||
l_HIO.field_0x4 = -1;
|
||||
l_HIO.mId = mDoHIO_CREATE_CHILD("氷の足場小", &l_HIO);
|
||||
}
|
||||
field_0x5c5 = fopAcM_GetParam(this);
|
||||
if (field_0x5c5 == 0) {
|
||||
@@ -203,11 +230,15 @@ int daObjIce_s_c::create() {
|
||||
return rv;
|
||||
}
|
||||
|
||||
int daObjIce_s_c::CreateHeap() {
|
||||
inline int daObjIce_s_c::CreateHeap() {
|
||||
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "Ice_s.bmd");
|
||||
JUT_ASSERT(157, modelData != NULL);
|
||||
mModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
|
||||
return mModel != NULL ? 1 : 0;
|
||||
if (mModel == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int daObjIce_s_c::Create() {
|
||||
@@ -218,24 +249,25 @@ int daObjIce_s_c::Create() {
|
||||
|
||||
int daObjIce_s_c::Execute(f32 (**param_1)[3][4]) {
|
||||
daPy_py_c* player = daPy_getPlayerActorClass();
|
||||
fopAcM_GetPosition(player);
|
||||
cXyz& playerPos = fopAcM_GetPosition(player);
|
||||
cXyz cStack_68(current.pos.x, current.pos.y + 300.0f, current.pos.z);
|
||||
f32 dVar7 = l_HIO.field_0xc;
|
||||
f32 dVar7 = 0.0f;
|
||||
dVar7 = l_HIO.mSinkingAmount;
|
||||
cLib_chaseF(&field_0x5a4, 0.0f, 0.04f);
|
||||
cLib_chaseS(&field_0x5d8, 0, 0x100);
|
||||
field_0x5d4 += 848.0f + 1.8f * field_0x5a0;
|
||||
field_0x5d6 += 848.0f + 1.8f * field_0x5a0;
|
||||
field_0x5d4 += (TREG_S(1) + 848) + (HREG_F(1) + 1.8f) * field_0x5a0 + field_0x5a4 * HREG_F(9);
|
||||
field_0x5d6 += (TREG_S(2) + 848) + (HREG_F(2) + 1.8f) * field_0x5a0 + field_0x5a4 * HREG_F(9);
|
||||
cLib_addCalc(¤t.pos.y,
|
||||
field_0x5e0 + (field_0x5b0 + field_0x5a4 * (6.0f + dVar7) +
|
||||
(5.0f * cM_ssin(field_0x5d6 + field_0x5e6))),
|
||||
field_0x5e0 + (field_0x5b0 + field_0x5a4 * ((yREG_F(1) + 6.0f) + dVar7) +
|
||||
((HREG_F(4) + 5.0f) * cM_ssin(field_0x5d6 + oREG_S(3) + field_0x5e6))),
|
||||
0.1f, 1000.0f, 0.1f);
|
||||
cLib_addCalcAngleS(&shape_angle.x, field_0x5da + ((0.5f * field_0x5ac) * cM_ssin(0x2000 + field_0x5d4 + field_0x5e6 + field_0x5d8)), 2, 0x100, 1);
|
||||
cLib_addCalcAngleS(&shape_angle.z, field_0x5de + ((0.5f * field_0x5ac) * cM_ssin(field_0x5d6 + field_0x5e6 + field_0x5d8)), 2, 0x100, 1);
|
||||
cLib_addCalcAngleS(&shape_angle.x, field_0x5da.x + (((nREG_F(0) + 0.5f) * field_0x5ac) * cM_ssin(0x2000 + field_0x5d4 + oREG_S(1) + field_0x5e6 + field_0x5d8)), 2, 0x100, 1);
|
||||
cLib_addCalcAngleS(&shape_angle.z, field_0x5da.z + (((nREG_F(1) + 0.5f) * field_0x5ac) * cM_ssin(field_0x5d6 + oREG_S(2) + field_0x5e6 + field_0x5d8)), 2, 0x100, 1);
|
||||
if (field_0x5e8 == 0) {
|
||||
cLib_addCalcAngleS(&field_0x5da, 0, 2, 0x100, 1);
|
||||
cLib_addCalcAngleS(&field_0x5de, 0, 2, 0x100, 1);
|
||||
cLib_addCalcAngleS(&field_0x5da.x, 0, 2, 0x100, 1);
|
||||
cLib_addCalcAngleS(&field_0x5da.z, 0, 2, 0x100, 1);
|
||||
cLib_addCalc(&field_0x5e0, 0, 0.2f, 100.0f, 0);
|
||||
cLib_addCalc(&field_0x5a0, 0, 0.05f, 100.0f, 0);
|
||||
cLib_addCalc(&field_0x5a0, 0, HREG_F(13) + 0.05f, 100.0f, 0);
|
||||
field_0x5e4 = 0;
|
||||
cLib_chaseAngleS(&field_0x5ac, 0x120, 0x10);
|
||||
}
|
||||
@@ -258,6 +290,7 @@ int daObjIce_s_c::Delete() {
|
||||
dComIfG_resDelete(&mPhase, l_arcName);
|
||||
if (field_0x640 != 0) {
|
||||
l_HIOInit = FALSE;
|
||||
mDoHIO_DELETE_CHILD(l_HIO.mId);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user