mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-04 17:09:45 -04:00
daObj_Roten_c OK, daNpcRoten_c Almost Matching (#618)
* Roten Work - daNpcRoten_c almost matching - daObj_Roten_c OK I don't think these are actually related but they had the same name so I put them together * Minor Cleanup
This commit is contained in:
+2656
-97
File diff suppressed because it is too large
Load Diff
+135
-19
@@ -4,61 +4,177 @@
|
||||
//
|
||||
|
||||
#include "d/actor/d_a_obj_roten.h"
|
||||
#include "m_Do/m_Do_mtx.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_bg_s_movebg_actor.h"
|
||||
#include "d/d_procname.h"
|
||||
|
||||
daObj_Roten_HIO_c l_HIO;
|
||||
|
||||
/* 000000EC-00000118 .text __ct__17daObj_Roten_HIO_cFv */
|
||||
daObj_Roten_HIO_c::daObj_Roten_HIO_c() {
|
||||
/* Nonmatching */
|
||||
field_0x04 = -1;
|
||||
field_0x08 = 0.0f;
|
||||
field_0x0C = 0;
|
||||
}
|
||||
|
||||
const char daObj_Roten_c::M_arcname[] = "Roten";
|
||||
|
||||
/* 00000118-00000188 .text set_mtx__13daObj_Roten_cFv */
|
||||
void daObj_Roten_c::set_mtx() {
|
||||
/* Nonmatching */
|
||||
mpModel->setBaseScale(scale);
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
|
||||
/* 00000188-000001A8 .text CheckCreateHeap__FP10fopAc_ac_c */
|
||||
static BOOL CheckCreateHeap(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL CheckCreateHeap(fopAc_ac_c* i_this) {
|
||||
return static_cast<daObj_Roten_c*>(i_this)->CreateHeap();
|
||||
}
|
||||
|
||||
/* 000001A8-000002E4 .text CreateHeap__13daObj_Roten_cFv */
|
||||
void daObj_Roten_c::CreateHeap() {
|
||||
/* Nonmatching */
|
||||
BOOL daObj_Roten_c::CreateHeap() {
|
||||
static u32 bdl_arc_idx[] = {
|
||||
0x04,
|
||||
0x05,
|
||||
0x06
|
||||
};
|
||||
static u32 dzb_arc_idx[] = {
|
||||
0x09,
|
||||
0x0A,
|
||||
0x0B
|
||||
};
|
||||
|
||||
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(M_arcname, bdl_arc_idx[mType]));
|
||||
JUT_ASSERT(0xB0, modelData != 0);
|
||||
|
||||
mpModel = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
|
||||
mpBgW = new dBgW();
|
||||
|
||||
mpBgW->Set((cBgD_t*)dComIfG_getObjectRes(M_arcname, dzb_arc_idx[mType]), cBgW::MOVE_BG_e, &mpModel->getBaseTRMtx());
|
||||
|
||||
return mpModel != NULL && mpBgW != NULL;
|
||||
}
|
||||
|
||||
/* 000002E4-00000348 .text CreateInit__13daObj_Roten_cFv */
|
||||
void daObj_Roten_c::CreateInit() {
|
||||
/* Nonmatching */
|
||||
s32 daObj_Roten_c::CreateInit() {
|
||||
set_mtx();
|
||||
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
|
||||
mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
|
||||
dComIfG_Bgsp()->Regist(mpBgW, this);
|
||||
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
|
||||
/* 00000348-00000410 .text Roten_create_check__FUc */
|
||||
void Roten_create_check(unsigned char) {
|
||||
/* Nonmatching */
|
||||
static BOOL Roten_create_check(u8 type) {
|
||||
u8 i = 0; // fakematch?
|
||||
int temp = 0;
|
||||
for(; i <= 0xB; i++) {
|
||||
if(dComIfGs_isGetItemReserve(i)) {
|
||||
temp++;
|
||||
}
|
||||
else if(i == 0) {
|
||||
temp++;
|
||||
}
|
||||
}
|
||||
|
||||
if(type == 0 && temp > 3) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if(type == 1 && temp > 6) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if(temp > 9) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
s32 daObj_Roten_c::_create() {
|
||||
fopAcM_SetupActor(this, daObj_Roten_c);
|
||||
|
||||
mType = fopAcM_GetParam(this) >> 0x18;
|
||||
mType = cLib_minMaxLimit<u8>((int)mType, 0, 2); // fakematch? debug says this is templated to u8
|
||||
|
||||
if(Roten_create_check(mType)) {
|
||||
field_0x2D1 = 0;
|
||||
}
|
||||
else {
|
||||
field_0x2D1 = 1;
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
s32 result = dComIfG_resLoad(&mPhs, daObj_Roten_c::M_arcname);
|
||||
|
||||
u32 heap_size[] = {
|
||||
0x2BA0,
|
||||
0x2A60,
|
||||
0x2C60,
|
||||
};
|
||||
|
||||
if(result == cPhs_COMPLEATE_e) {
|
||||
if(fopAcM_entrySolidHeap(this, CheckCreateHeap, heap_size[mType])) {
|
||||
result = CreateInit();
|
||||
}
|
||||
else {
|
||||
result = cPhs_ERROR_e;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/* 00000410-00000530 .text daObj_RotenCreate__FPv */
|
||||
static s32 daObj_RotenCreate(void*) {
|
||||
/* Nonmatching */
|
||||
static s32 daObj_RotenCreate(void* i_actor) {
|
||||
return static_cast<daObj_Roten_c*>(i_actor)->_create();
|
||||
}
|
||||
|
||||
BOOL daObj_Roten_c::_delete() {
|
||||
if(field_0x2D1 == 0) {
|
||||
dComIfG_Bgsp()->Release(mpBgW);
|
||||
dComIfG_resDelete(&mPhs, daObj_Roten_c::M_arcname);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 00000530-0000058C .text daObj_RotenDelete__FPv */
|
||||
static BOOL daObj_RotenDelete(void*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daObj_RotenDelete(void* i_actor) {
|
||||
return static_cast<daObj_Roten_c*>(i_actor)->_delete();
|
||||
}
|
||||
|
||||
BOOL daObj_Roten_c::_execute() {
|
||||
set_mtx();
|
||||
mpBgW->Move();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 0000058C-000005C4 .text daObj_RotenExecute__FPv */
|
||||
static BOOL daObj_RotenExecute(void*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daObj_RotenExecute(void* i_actor) {
|
||||
return static_cast<daObj_Roten_c*>(i_actor)->_execute();
|
||||
}
|
||||
|
||||
BOOL daObj_Roten_c::_draw() {
|
||||
g_env_light.settingTevStruct(TEV_TYPE_BG0, ¤t.pos, &tevStr);
|
||||
g_env_light.setLightTevColorType(mpModel, &tevStr);
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 000005C4-00000630 .text daObj_RotenDraw__FPv */
|
||||
static BOOL daObj_RotenDraw(void*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daObj_RotenDraw(void* i_actor) {
|
||||
return static_cast<daObj_Roten_c*>(i_actor)->_draw();
|
||||
}
|
||||
|
||||
/* 00000630-00000638 .text daObj_RotenIsDelete__FPv */
|
||||
static BOOL daObj_RotenIsDelete(void*) {
|
||||
/* Nonmatching */
|
||||
return true;
|
||||
}
|
||||
|
||||
static actor_method_class daObj_RotenMethodTable = {
|
||||
|
||||
@@ -70,7 +70,7 @@ bool dNpc_EventCut_c::cutProc() {
|
||||
}
|
||||
else {
|
||||
if(dComIfGp_evmng_getIsAddvance(mEvtStaffId)) {
|
||||
mbAttention = 0;
|
||||
mbAttention = false;
|
||||
(this->*cut_tbl[mCurActIdx].start)();
|
||||
}
|
||||
|
||||
@@ -220,7 +220,7 @@ void dNpc_EventCut_c::cutTurnToActorProc() {
|
||||
}
|
||||
}
|
||||
|
||||
mbAttention = 1;
|
||||
mbAttention = true;
|
||||
|
||||
s16 tAngle = cLib_targetAngleY(&mpActor->current.pos, &mPos);
|
||||
int temp2 = tAngle - mpActor->current.angle.y;
|
||||
@@ -256,10 +256,10 @@ void dNpc_EventCut_c::cutMoveToActorStart() {
|
||||
}
|
||||
|
||||
if(attn == 0) {
|
||||
mbAttention = 0;
|
||||
mbAttention = false;
|
||||
}
|
||||
else {
|
||||
mbAttention = 1;
|
||||
mbAttention = true;
|
||||
}
|
||||
|
||||
if(offs == 0) {
|
||||
@@ -443,7 +443,7 @@ void dNpc_EventCut_c::cutTurnToPosStart() {
|
||||
/* 8021DE2C-8021DFB0 .text cutTurnToPosProc__15dNpc_EventCut_cFv */
|
||||
void dNpc_EventCut_c::cutTurnToPosProc() {
|
||||
s16 tAngle = cLib_targetAngleY(&mpActor->current.pos, &mPos);
|
||||
mbAttention = 1;
|
||||
mbAttention = true;
|
||||
|
||||
if(mpJntCtrl) {
|
||||
switch(mTurnType) {
|
||||
@@ -499,10 +499,10 @@ void dNpc_EventCut_c::cutMoveToPosStart() {
|
||||
}
|
||||
|
||||
if(attn == 0) {
|
||||
mbAttention = 0;
|
||||
mbAttention = false;
|
||||
}
|
||||
else {
|
||||
mbAttention = 1;
|
||||
mbAttention = true;
|
||||
}
|
||||
|
||||
if(speed == 0) {
|
||||
@@ -558,10 +558,10 @@ void dNpc_EventCut_c::cutTalkMsgStart() {
|
||||
if(mpTalkActor != 0) {
|
||||
u32* attn = dComIfGp_evmng_getMyIntegerP(mEvtStaffId, "Attention");
|
||||
if(attn == 0) {
|
||||
mbAttention = 0;
|
||||
mbAttention = false;
|
||||
}
|
||||
else {
|
||||
mbAttention = 1;
|
||||
mbAttention = true;
|
||||
}
|
||||
|
||||
u32* firstMsgNo = dComIfGp_evmng_getMyIntegerP(mEvtStaffId, "msg_num");
|
||||
|
||||
Reference in New Issue
Block a user