mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-28 06:57:02 -04:00
92864cb8b8
* d_model / d_simple_model / cleanup * d_stage work * set up saveHIO / remove asm * d_a_itembase
287 lines
8.4 KiB
C++
287 lines
8.4 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: d/a/d_a_itembase
|
|
//
|
|
|
|
#include "d/a/d_a_itembase.h"
|
|
#include "d/com/d_com_inf_game.h"
|
|
#include "d/d_item_data.h"
|
|
#include "dol2asm.h"
|
|
#include "dolphin/types.h"
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
extern "C" extern dScnKy_env_light_c g_env_light;
|
|
|
|
//
|
|
// Declarations:
|
|
//
|
|
|
|
/* 80144724-8014474C 13F064 0028+00 0/0 1/1 8/8 .text DeleteBase__12daItemBase_cFPCc */
|
|
int daItemBase_c::DeleteBase(char const* res) {
|
|
dComIfG_resDelete(&mPhase, res);
|
|
return 1;
|
|
}
|
|
|
|
/* 8014474C-80144754 13F08C 0008+00 1/0 1/0 9/0 .text clothCreate__12daItemBase_cFv */
|
|
int daItemBase_c::clothCreate() {
|
|
return 1;
|
|
}
|
|
|
|
/* 80144754-8014475C 13F094 0008+00 1/0 1/0 3/0 .text __CreateHeap__12daItemBase_cFv */
|
|
int daItemBase_c::__CreateHeap() {
|
|
return 1;
|
|
}
|
|
|
|
/* 8014475C-80144B94 13F09C 0438+00 0/0 3/3 0/0 .text CreateItemHeap__12daItemBase_cFPCcsssssss */
|
|
int daItemBase_c::CreateItemHeap(char const* arcName, s16 bmdName, s16 btkName, s16 bpkName,
|
|
s16 bckName, s16 bxaName, s16 brkName, s16 btpName) {
|
|
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(arcName, bmdName);
|
|
|
|
u32 flags = 0x11000084;
|
|
u32 uvar7 = 0x80000;
|
|
|
|
if (btkName > 0) {
|
|
flags |= 0x200;
|
|
}
|
|
|
|
if (bpkName > 0) {
|
|
flags |= 0x1;
|
|
}
|
|
|
|
if (btpName > 0) {
|
|
flags |= 0x20000;
|
|
}
|
|
|
|
if (chkFlag(4)) {
|
|
uvar7 = 0;
|
|
}
|
|
|
|
mpModel = mDoExt_J3DModel__create(modelData, uvar7, flags);
|
|
|
|
if (mpModel == NULL) {
|
|
return 0;
|
|
} else {
|
|
field_0x578 = NULL;
|
|
if (btkName > 0) {
|
|
J3DAnmTextureSRTKey* pbtk =
|
|
(J3DAnmTextureSRTKey*)dComIfG_getObjectRes(arcName, btkName);
|
|
field_0x578 = new mDoExt_btkAnm();
|
|
|
|
if (field_0x578 == NULL || !field_0x578->init(modelData, pbtk, 1, 2, 1.0f, 0, -1)) {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
field_0x57c = NULL;
|
|
if (bpkName > 0) {
|
|
J3DAnmColor* pbpk = (J3DAnmColor*)dComIfG_getObjectRes(arcName, bpkName);
|
|
field_0x57c = new mDoExt_bpkAnm();
|
|
|
|
if (field_0x57c == NULL || !field_0x57c->init(modelData, pbpk, 1, 2, 1.0f, 0, -1)) {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
field_0x584 = NULL;
|
|
if (bckName > 0) {
|
|
J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(arcName, bckName);
|
|
field_0x584 = new mDoExt_bckAnm();
|
|
|
|
if (field_0x584 == NULL || !field_0x584->init(pbck, 1, 2, 1.0f, 0, -1, false)) {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
field_0x580 = NULL;
|
|
if (brkName > 0) {
|
|
J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(arcName, brkName);
|
|
s8 tevFrm = getTevFrm();
|
|
int tmp = 1;
|
|
if (tevFrm != -1) {
|
|
tmp = 0;
|
|
}
|
|
|
|
field_0x580 = new mDoExt_brkAnm();
|
|
|
|
if (field_0x580 == NULL || !field_0x580->init(modelData, pbrk, tmp, 2, 1.0f, 0, -1)) {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
field_0x588 = NULL;
|
|
if (btpName > 0) {
|
|
J3DAnmTexPattern* pbtp = (J3DAnmTexPattern*)dComIfG_getObjectRes(arcName, btpName);
|
|
field_0x588 = new mDoExt_btpAnm();
|
|
|
|
if (field_0x588 == NULL || !field_0x588->init(modelData, pbtp, 1, 2, 1.0f, 0, -1)) {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
if (!clothCreate()) {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return __CreateHeap() ? 1 : 0;
|
|
}
|
|
|
|
/* 80144B94-80144C30 13F4D4 009C+00 1/0 1/0 9/0 .text DrawBase__12daItemBase_cFv */
|
|
int daItemBase_c::DrawBase() {
|
|
setTevStr();
|
|
animEntry();
|
|
setListStart();
|
|
settingBeforeDraw();
|
|
mDoExt_modelUpdateDL(mpModel);
|
|
setListEnd();
|
|
setShadow();
|
|
return 1;
|
|
}
|
|
|
|
/* 80144C30-80144C7C 13F570 004C+00 1/0 1/0 9/0 .text RotateYBase__12daItemBase_cFv */
|
|
void daItemBase_c::RotateYBase() {
|
|
mCollisionRot.y += (s16)(0xFFFF / getData().field_0x1c);
|
|
}
|
|
|
|
/* 80144C7C-80144CA0 13F5BC 0024+00 1/0 1/0 5/0 .text setListStart__12daItemBase_cFv */
|
|
void daItemBase_c::setListStart() {
|
|
dComIfGd_setListDark();
|
|
}
|
|
|
|
/* 80144CA0-80144CC4 13F5E0 0024+00 1/1 0/0 0/0 .text setListEnd__12daItemBase_cFv */
|
|
void daItemBase_c::setListEnd() {
|
|
dComIfGd_setList();
|
|
}
|
|
|
|
/* 80144CC4-80144D18 13F604 0054+00 1/0 1/0 9/0 .text settingBeforeDraw__12daItemBase_cFv
|
|
*/
|
|
void daItemBase_c::settingBeforeDraw() {
|
|
if (chkFlag(4)) {
|
|
fopAcM_setEffectMtx(this, mpModel->getModelData());
|
|
}
|
|
}
|
|
|
|
/* 80144D18-80144D70 13F658 0058+00 1/0 0/0 8/0 .text setTevStr__12daItemBase_cFv */
|
|
void daItemBase_c::setTevStr() {
|
|
g_env_light.settingTevStruct(0, &mCurrent.mPosition, &mTevStr);
|
|
g_env_light.setLightTevColorType_MAJI(mpModel, &mTevStr);
|
|
}
|
|
|
|
/* 80144D70-80144EDC 13F6B0 016C+00 1/0 1/0 9/1 .text setShadow__12daItemBase_cFv */
|
|
void daItemBase_c::setShadow() {
|
|
f32 scale = mScale.x * getShadowSize();
|
|
|
|
if (!chkFlag(0x10)) {
|
|
if (getShadowSize() != 0.0f) {
|
|
dComIfGd_setSimpleShadow(&mCurrent.mPosition, field_0x58c.GetGroundH(), scale,
|
|
field_0x58c.m_gnd, 0, 1.0f,
|
|
dDlst_shadowControl_c::getSimpleTex());
|
|
}
|
|
} else {
|
|
f32 shadowSize = getShadowSize();
|
|
if (shadowSize == 0.0f) {
|
|
shadowSize = 150.0f;
|
|
}
|
|
|
|
field_0x91c =
|
|
dComIfGd_setShadow(field_0x91c, 3, mpModel, &mCurrent.mPosition, shadowSize, 0.0f,
|
|
mCurrent.mPosition.y, field_0x58c.GetGroundH(), field_0x58c.m_gnd,
|
|
&mTevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
|
|
}
|
|
}
|
|
|
|
/* 80144EDC-8014503C 13F81C 0160+00 1/0 1/0 9/0 .text animEntry__12daItemBase_cFv */
|
|
void daItemBase_c::animEntry() {
|
|
if (field_0x580 != NULL) {
|
|
s8 tevFrm = getTevFrm();
|
|
if (tevFrm != -1) {
|
|
field_0x580->entry(mpModel->getModelData(), tevFrm);
|
|
} else {
|
|
field_0x580->entry(mpModel->getModelData());
|
|
}
|
|
}
|
|
|
|
if (field_0x588 != NULL) {
|
|
s8 btpFrm = getBtpFrm();
|
|
if (btpFrm != -1) {
|
|
field_0x588->entry(mpModel->getModelData(), btpFrm);
|
|
} else {
|
|
field_0x588->entry(mpModel->getModelData());
|
|
}
|
|
}
|
|
|
|
if (field_0x578 != NULL) {
|
|
field_0x578->entry(mpModel->getModelData());
|
|
}
|
|
|
|
if (field_0x584 != NULL) {
|
|
field_0x584->entry(mpModel->getModelData());
|
|
}
|
|
|
|
if (field_0x57c != NULL) {
|
|
field_0x57c->entry(mpModel->getModelData());
|
|
}
|
|
}
|
|
|
|
/* 8014503C-80145144 13F97C 0108+00 0/0 2/2 4/4 .text animPlay__12daItemBase_cFffffff */
|
|
void daItemBase_c::animPlay(f32 btkSpeed, f32 bpkSpeed, f32 bckSpeed, f32 param_3, f32 brkSpeed,
|
|
f32 btpSpeed) {
|
|
if (field_0x580 != NULL && getTevFrm() == -1) {
|
|
field_0x580->setPlaySpeed(brkSpeed);
|
|
field_0x580->play();
|
|
}
|
|
|
|
if (field_0x588 != NULL && getBtpFrm() == -1) {
|
|
field_0x588->setPlaySpeed(btpSpeed);
|
|
field_0x588->play();
|
|
}
|
|
|
|
if (field_0x578 != NULL) {
|
|
field_0x578->setPlaySpeed(btkSpeed);
|
|
field_0x578->play();
|
|
}
|
|
|
|
if (field_0x57c != NULL) {
|
|
field_0x57c->setPlaySpeed(bpkSpeed);
|
|
field_0x57c->play();
|
|
}
|
|
|
|
if (field_0x584 != NULL) {
|
|
field_0x584->setPlaySpeed(bckSpeed);
|
|
field_0x584->play();
|
|
}
|
|
}
|
|
|
|
/* 80145144-80145164 13FA84 0020+00 1/0 1/0 8/0 .text chkFlag__12daItemBase_cFi */
|
|
BOOL daItemBase_c::chkFlag(int flag) {
|
|
return dItem_data::chkFlag(m_itemNo, flag);
|
|
}
|
|
|
|
/* 80145164-80145180 13FAA4 001C+00 1/0 1/0 8/0 .text getTevFrm__12daItemBase_cFv */
|
|
s8 daItemBase_c::getTevFrm() {
|
|
return dItem_data::getTevFrm(m_itemNo);
|
|
}
|
|
|
|
/* 80145180-8014519C 13FAC0 001C+00 1/0 1/0 8/0 .text getBtpFrm__12daItemBase_cFv */
|
|
s8 daItemBase_c::getBtpFrm() {
|
|
return dItem_data::getBtpFrm(m_itemNo);
|
|
}
|
|
|
|
/* 8014519C-801451B4 13FADC 0018+00 1/0 1/0 8/0 .text getShadowSize__12daItemBase_cFv */
|
|
u8 daItemBase_c::getShadowSize() {
|
|
return dItem_data::getShadowSize(m_itemNo);
|
|
}
|
|
|
|
/* 801451B4-801451D0 13FAF4 001C+00 1/0 1/0 8/0 .text getCollisionH__12daItemBase_cFv */
|
|
u8 daItemBase_c::getCollisionH() {
|
|
return dItem_data::getH(m_itemNo);
|
|
}
|
|
|
|
/* 801451D0-801451EC 13FB10 001C+00 1/0 1/0 8/0 .text getCollisionR__12daItemBase_cFv */
|
|
u8 daItemBase_c::getCollisionR() {
|
|
return dItem_data::getR(m_itemNo);
|
|
}
|