mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-08 18:43:05 -04:00
+126
-23
@@ -3,12 +3,19 @@
|
||||
// Translation Unit: d_a_item.cpp
|
||||
//
|
||||
|
||||
#include "d_a_item.h"
|
||||
#include "d/d_item.h"
|
||||
#include "d/d_item_data.h"
|
||||
#include "d/actor/d_a_item.h"
|
||||
#include "d/actor/d_a_player.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class dCcD_GObjInf;
|
||||
|
||||
/* 800F4BC8-800F4BD4 .text getData__12daItemBase_cFv */
|
||||
void daItemBase_c::getData() {
|
||||
/* Nonmatching */
|
||||
daItemBase_c_m_data* daItemBase_c::getData() {
|
||||
return &daItemBase_c::m_data;
|
||||
}
|
||||
|
||||
/* 800F4BD4-800F4C4C .text setArrowTrans__Fs4cXyz */
|
||||
@@ -17,8 +24,45 @@ void setArrowTrans(short, cXyz) {
|
||||
}
|
||||
|
||||
/* 800F4C4C-800F4CD8 .text getYOffset__8daItem_cFv */
|
||||
void daItem_c::getYOffset() {
|
||||
/* Nonmatching */
|
||||
float daItem_c::getYOffset() {
|
||||
switch (m_itemNo) {
|
||||
case HEART:
|
||||
return 0.0;
|
||||
case GREEN_RUPEE:
|
||||
case BLUE_RUPEE:
|
||||
case YELLOW_RUPEE:
|
||||
case RED_RUPEE:
|
||||
case PURPLE_RUPEE:
|
||||
case ORANGE_RUPEE:
|
||||
case SILVER_RUPEE:
|
||||
return 0.0;
|
||||
case KAKERA_HEART:
|
||||
case UTUWA_HEART:
|
||||
return 0.0;
|
||||
case SMALL_KEY:
|
||||
case BOSS_KEY:
|
||||
return 0.0;
|
||||
case SWORD:
|
||||
return 20.0;
|
||||
case SHIELD:
|
||||
return 23.0;
|
||||
case DROPPED_SWORD:
|
||||
return 10.0;
|
||||
case SKULL_NECKLACE:
|
||||
return 0.0;
|
||||
case BOKOBABA_SEED:
|
||||
return 0.0;
|
||||
case GOLDEN_FEATHER:
|
||||
return 0.0;
|
||||
case BOKO_BELT:
|
||||
return 0.0;
|
||||
case RED_JELLY:
|
||||
case GREEN_JELLY:
|
||||
case BLUE_JELLY:
|
||||
return 0.0;
|
||||
default:
|
||||
return 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 800F4CD8-800F4E6C .text set_mtx__8daItem_cFv */
|
||||
@@ -42,12 +86,12 @@ void daItem_c::CreateInit() {
|
||||
}
|
||||
|
||||
/* 800F53EC-800F5668 .text _daItem_create__8daItem_cFv */
|
||||
void daItem_c::_daItem_create() {
|
||||
s32 daItem_c::_daItem_create() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800F5668-800F5834 .text _daItem_execute__8daItem_cFv */
|
||||
void daItem_c::_daItem_execute() {
|
||||
s32 daItem_c::_daItem_execute() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -102,7 +146,7 @@ void daItem_c::scaleAnimFromBossItem() {
|
||||
}
|
||||
|
||||
/* 800F60C0-800F6110 .text _daItem_draw__8daItem_cFv */
|
||||
void daItem_c::_daItem_draw() {
|
||||
s32 daItem_c::_daItem_draw() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -112,7 +156,7 @@ void daItem_c::setTevStr() {
|
||||
}
|
||||
|
||||
/* 800F61C8-800F6268 .text _daItem_delete__8daItem_cFv */
|
||||
void daItem_c::_daItem_delete() {
|
||||
s32 daItem_c::_daItem_delete() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -124,16 +168,43 @@ void Reflect(cXyz&, cXyz*, float, float) {
|
||||
/* 800F6434-800F6D24 .text itemGetExecute__8daItem_cFv */
|
||||
void daItem_c::itemGetExecute() {
|
||||
/* Nonmatching */
|
||||
execItemGet(m_itemNo);
|
||||
}
|
||||
|
||||
/* 800F6D24-800F6D78 .text itemDefaultRotateY__8daItem_cFv */
|
||||
void daItem_c::itemDefaultRotateY() {
|
||||
/* Nonmatching */
|
||||
// Rotates at a fixed speed.
|
||||
s16 rotationSpeed = 0xFFFF / getData()->mNumFramesPerFullSpin;
|
||||
fopAcM_addAngleY(this, current.angle.y + rotationSpeed, rotationSpeed);
|
||||
}
|
||||
|
||||
/* 800F6D78-800F6E54 .text checkItemDisappear__8daItem_cFv */
|
||||
void daItem_c::checkItemDisappear() {
|
||||
/* Nonmatching */
|
||||
bool daItem_c::checkItemDisappear() {
|
||||
bool disappearing = true;
|
||||
if (mCurAction == 3) {
|
||||
disappearing = false;
|
||||
show();
|
||||
}
|
||||
if (mStatusFlags & 0x02) {
|
||||
disappearing = false;
|
||||
}
|
||||
if (mStatusFlags & 0x10) {
|
||||
disappearing = false;
|
||||
}
|
||||
if (dItem_data::item_info[m_itemNo].mSpecialBehaviors & 0x01) {
|
||||
disappearing = false;
|
||||
}
|
||||
if (g_dComIfG_gameInfo.play.mEvtCtrl.mMode != 0) {
|
||||
disappearing = false;
|
||||
}
|
||||
if (mCurAction == 4) {
|
||||
disappearing = false;
|
||||
}
|
||||
if ((mStatusFlags & 0x08) || (mStatusFlags & 0x40) || (mStatus & 0x100000)) {
|
||||
disappearing = false;
|
||||
show();
|
||||
}
|
||||
return disappearing;
|
||||
}
|
||||
|
||||
/* 800F6E54-800F6E74 .text setItemTimer__8daItem_cFi */
|
||||
@@ -142,7 +213,7 @@ void daItem_c::setItemTimer(int) {
|
||||
}
|
||||
|
||||
/* 800F6E74-800F6EC8 .text checkPlayerGet__8daItem_cFv */
|
||||
void daItem_c::checkPlayerGet() {
|
||||
bool daItem_c::checkPlayerGet() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -187,8 +258,16 @@ void daItem_c::set_bound_se() {
|
||||
}
|
||||
|
||||
/* 800F7DDC-800F7E6C .text checkGetItem__8daItem_cFv */
|
||||
void daItem_c::checkGetItem() {
|
||||
s32 daItem_c::checkGetItem() {
|
||||
/* Nonmatching */
|
||||
if (checkPlayerGet()) {
|
||||
itemGetExecute();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
mStatusFlags |= 0x08;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 800F7E6C-800F7F0C .text timeCount__8daItem_cFv */
|
||||
@@ -227,28 +306,28 @@ void daItem_Draw(daItem_c*) {
|
||||
}
|
||||
|
||||
/* 800F8970-800F8990 .text daItem_Execute__FP8daItem_c */
|
||||
void daItem_Execute(daItem_c*) {
|
||||
/* Nonmatching */
|
||||
s32 daItem_Execute(daItem_c* i_this) {
|
||||
return i_this->_daItem_execute();
|
||||
}
|
||||
|
||||
/* 800F8990-800F89B0 .text daItem_IsDelete__FP8daItem_c */
|
||||
void daItem_IsDelete(daItem_c*) {
|
||||
/* Nonmatching */
|
||||
s32 daItem_IsDelete(daItem_c* i_this) {
|
||||
return i_this->_daItem_isdelete();
|
||||
}
|
||||
|
||||
/* 800F89B0-800F89D0 .text daItem_Delete__FP8daItem_c */
|
||||
void daItem_Delete(daItem_c*) {
|
||||
/* Nonmatching */
|
||||
s32 daItem_Delete(daItem_c* i_this) {
|
||||
return i_this->_daItem_delete();
|
||||
}
|
||||
|
||||
/* 800F89D0-800F89F0 .text daItem_Create__FP10fopAc_ac_c */
|
||||
void daItem_Create(fopAc_ac_c*) {
|
||||
s32 daItem_Create(fopAc_ac_c* i_this) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800F89F0-800F89F8 .text _daItem_isdelete__8daItem_cFv */
|
||||
void daItem_c::_daItem_isdelete() {
|
||||
/* Nonmatching */
|
||||
s32 daItem_c::_daItem_isdelete() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800F89F8-800F8A14 .text getHeadTopPos__9daPy_py_cCFv */
|
||||
@@ -256,3 +335,27 @@ void daPy_py_c::getHeadTopPos() const {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
static actor_method_class l_daItem_Method = {
|
||||
(process_method_func)daItem_Create,
|
||||
(process_method_func)daItem_Delete,
|
||||
(process_method_func)daItem_Execute,
|
||||
(process_method_func)daItem_IsDelete,
|
||||
(process_method_func)daItem_Draw,
|
||||
};
|
||||
|
||||
extern actor_process_profile_definition g_profile_ITEM = {
|
||||
-3,
|
||||
7,
|
||||
0xFFFD,
|
||||
PROC_ITEM,
|
||||
&g_fpcLf_Method.mBase,
|
||||
sizeof(daItem_c),
|
||||
0,
|
||||
0,
|
||||
&g_fopAc_Method.base,
|
||||
0x00F5,
|
||||
&l_daItem_Method,
|
||||
0x000C0100,
|
||||
fopAc_ACTOR_e,
|
||||
fopAc_CULLBOX_0_e,
|
||||
};
|
||||
|
||||
@@ -3,27 +3,135 @@
|
||||
// Translation Unit: d_a_itembase.cpp
|
||||
//
|
||||
|
||||
#include "d_a_itembase.h"
|
||||
#include "d/actor/d_a_itembase.h"
|
||||
#include "d/d_item_data.h"
|
||||
#include "d/d_resorce.h"
|
||||
#include "d/d_drawlist.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "d/d_item_data.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
/* 800F8A14-800F8A3C .text DeleteBase__12daItemBase_cFPCc */
|
||||
void daItemBase_c::DeleteBase(const char*) {
|
||||
/* Nonmatching */
|
||||
s32 daItemBase_c::DeleteBase(const char* resName) {
|
||||
dComIfG_resDelete(&mPhs, resName);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800F8A3C-800F8A44 .text clothCreate__12daItemBase_cFv */
|
||||
void daItemBase_c::clothCreate() {
|
||||
/* Nonmatching */
|
||||
s32 daItemBase_c::clothCreate() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800F8A44-800F9074 .text CreateItemHeap__12daItemBase_cFPCcsssssss */
|
||||
void daItemBase_c::CreateItemHeap(const char*, short, short, short, short, short, short, short) {
|
||||
s32 daItemBase_c::CreateItemHeap(const char* resName, short resIdx, short btkAnm1, short btkAnm2, short brkAnm1, short brkAnm2, short bckAnm, short) {
|
||||
/* Nonmatching */
|
||||
JUT_ASSERT(78, 0 <= m_itemNo && m_itemNo <= 255);
|
||||
|
||||
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(resName, resIdx);
|
||||
JUT_ASSERT(85, modelData != 0);
|
||||
|
||||
mModel = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
|
||||
if (!mModel) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (m_itemNo) {
|
||||
case ARROW_30:
|
||||
mModelArrow[0] = mDoExt_J3DModel__create(modelData, 8, 0x11000002);
|
||||
if (!mModelArrow[0]) {
|
||||
return 0;
|
||||
}
|
||||
case ARROW_20:
|
||||
mModelArrow[1] = mDoExt_J3DModel__create(modelData, 8, 0x11000002);
|
||||
if (!mModelArrow[1]) {
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
mModelArrow[1] = NULL;
|
||||
mModelArrow[0] = NULL;
|
||||
}
|
||||
|
||||
mBtkAnm1 = NULL;
|
||||
if (btkAnm1 != -1) {
|
||||
J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(resName, btkAnm1);
|
||||
JUT_ASSERT(140, pbtk != 0);
|
||||
mBtkAnm1 = new mDoExt_btkAnm();
|
||||
if (!mBtkAnm1 || !mBtkAnm1->init(modelData, pbtk, true, 2, 1.0, 0, -1, false, false)) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
mBtkAnm2 = NULL;
|
||||
if (btkAnm2 != -1) {
|
||||
J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(resName, btkAnm2);
|
||||
JUT_ASSERT(172, pbtk != 0);
|
||||
mBtkAnm2 = new mDoExt_btkAnm();
|
||||
if (!mBtkAnm2 || !mBtkAnm2->init(modelData, pbtk, true, 2, 1.0, 0, -1, false, false)) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
mBrkAnm1 = NULL;
|
||||
if (brkAnm1 != -1) {
|
||||
J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(resName, brkAnm1);
|
||||
JUT_ASSERT(172, pbrk != 0);
|
||||
int shouldAnimate = dItem_data::item_resource[m_itemNo].mTevRegAnimFrameIndex == 0xFF;
|
||||
mBrkAnm1 = new mDoExt_brkAnm();
|
||||
if (!mBrkAnm1 || !mBrkAnm1->init(modelData, pbrk, shouldAnimate, 2, 1.0, 0, -1, false, false)) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
mBrkAnm2 = NULL;
|
||||
if (brkAnm2 != -1) {
|
||||
J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(resName, brkAnm2);
|
||||
JUT_ASSERT(197, pbrk != 0);
|
||||
mBrkAnm2 = new mDoExt_brkAnm();
|
||||
if (!mBrkAnm2 || !mBrkAnm2->init(modelData, pbrk, true, 2, 1.0, 0, -1, false, false)) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
mBckAnm = NULL;
|
||||
if (bckAnm != -1) {
|
||||
J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(resName, bckAnm);
|
||||
JUT_ASSERT(212, pbck != 0);
|
||||
mBckAnm = new mDoExt_bckAnm();
|
||||
if (!mBckAnm || !mBckAnm->init(modelData, pbck, true, 2, 1.0, 0, -1, false)) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (!clothCreate()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800F9074-800F9130 .text DrawBase__12daItemBase_cFv */
|
||||
void daItemBase_c::DrawBase() {
|
||||
/* Nonmatching */
|
||||
s32 daItemBase_c::DrawBase() {
|
||||
setTevStr();
|
||||
animEntry();
|
||||
setListStart();
|
||||
settingBeforeDraw();
|
||||
|
||||
mDoExt_modelUpdateDL(mModel);
|
||||
|
||||
if (mModelArrow[0]) {
|
||||
mDoExt_modelUpdateDL(mModelArrow[0]);
|
||||
}
|
||||
if (mModelArrow[1]) {
|
||||
mDoExt_modelUpdateDL(mModelArrow[1]);
|
||||
}
|
||||
|
||||
setListEnd();
|
||||
setShadow();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800F9130-800F9184 .text setListStart__12daItemBase_cFv */
|
||||
@@ -54,6 +162,26 @@ void daItemBase_c::setShadow() {
|
||||
/* 800F93A8-800F94C0 .text animEntry__12daItemBase_cFv */
|
||||
void daItemBase_c::animEntry() {
|
||||
/* Nonmatching */
|
||||
if (mBrkAnm1) {
|
||||
int constantFrame = dItem_data::item_resource[m_itemNo].mTevRegAnimFrameIndex;
|
||||
if (constantFrame != -1) {
|
||||
mBrkAnm1->entry(mModel->getModelData(), constantFrame);
|
||||
} else {
|
||||
mBrkAnm1->entry(mModel->getModelData());
|
||||
}
|
||||
}
|
||||
if (mBtkAnm1) {
|
||||
mBtkAnm1->entry(mModel->getModelData());
|
||||
}
|
||||
if (mBrkAnm2) {
|
||||
mBrkAnm2->entry(mModel->getModelData());
|
||||
}
|
||||
if (mBtkAnm2) {
|
||||
mBtkAnm2->entry(mModel->getModelData());
|
||||
}
|
||||
if (mBckAnm) {
|
||||
mBckAnm->entry(mModel->getModelData());
|
||||
}
|
||||
}
|
||||
|
||||
/* 800F94C0-800F95B8 .text animPlay__12daItemBase_cFfffff */
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
// Translation Unit: d_a_itembase_static.cpp
|
||||
//
|
||||
|
||||
#include "d_a_itembase_static.h"
|
||||
#include "d/actor/d_a_itembase_static.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
/* 80068650-80068658 .text getItemNo__12daItemBase_cFv */
|
||||
|
||||
Reference in New Issue
Block a user