mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-21 22:10:59 -04:00
d_item_data OK
This commit is contained in:
+1
-1
@@ -394,7 +394,7 @@ config.libs = [
|
||||
Object(NonMatching, "d/d_ev_camera.cpp"),
|
||||
Object(NonMatching, "d/d_wood.cpp"),
|
||||
Object(NonMatching, "d/d_flower.cpp"),
|
||||
Object(NonMatching, "d/d_item_data.cpp"),
|
||||
Object(Matching, "d/d_item_data.cpp"),
|
||||
Object(Matching, "d/d_seafightgame.cpp"),
|
||||
Object(NonMatching, "d/d_spline_path.cpp"),
|
||||
Object(NonMatching, "d/d_s_actor_data_mng.cpp"),
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
#include "dolphin/gx/GXStruct.h"
|
||||
#include "dolphin/mtx/mtx.h"
|
||||
|
||||
class JPACallBackBase;
|
||||
class JPACallBackBase2;
|
||||
class JPADataBlockLinkInfo;
|
||||
|
||||
enum {
|
||||
@@ -26,6 +24,18 @@ enum {
|
||||
JPAEmtrStts_Immortal = 0x40,
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class JPACallBackBase {
|
||||
public:
|
||||
JPACallBackBase() {}
|
||||
virtual ~JPACallBackBase();
|
||||
|
||||
virtual void init(JPABaseEmitter*);
|
||||
virtual void execute(JPABaseEmitter*);
|
||||
virtual void executeAfter(JPABaseEmitter*);
|
||||
virtual void draw(JPABaseEmitter*);
|
||||
};
|
||||
|
||||
class JPABaseEmitter {
|
||||
public:
|
||||
typedef void (JPABaseEmitter::*VolumeFunc)();
|
||||
@@ -111,7 +121,7 @@ public:
|
||||
/* 0x188 */ JSUPtrList mChildParticles;
|
||||
/* 0x194 */ JSUPtrList* mpPtclVacList;
|
||||
/* 0x198 */ JPADataBlockLinkInfo* mpDataLinkInfo;
|
||||
/* 0x19C */ JPACallBackBase* mpEmitterCallBack;
|
||||
/* 0x19C */ JPACallBackBase<JPABaseEmitter>* mpEmitterCallBack;
|
||||
/* 0x1A0 */ JPACallBackBase2* mpParticleCallBack;
|
||||
/* 0x1A4 */ JMath::TRandom_fast_ mRandomSeed;
|
||||
/* 0x1A8 */ Mtx mGlobalRotation;
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
class daItem_c : public daItemBase_c {
|
||||
public:
|
||||
daItem_c() : mPtclFollowCb(0, 0), mPtclSmokeCb(1) {}
|
||||
|
||||
float getYOffset();
|
||||
void set_mtx();
|
||||
void set_mtx_base(J3DModel*, cXyz, csXyz);
|
||||
@@ -54,6 +56,8 @@ public:
|
||||
s32 setLock();
|
||||
s32 releaseLock();
|
||||
s32 checkActionNow();
|
||||
|
||||
static dCcD_SrcCyl m_cyl_src;
|
||||
|
||||
public:
|
||||
/* 0x63C */ cXyz mScaleTarget;
|
||||
@@ -70,10 +74,10 @@ public:
|
||||
/* 0x669 */ u8 mStatusFlags;
|
||||
/* 0x66A */ u8 mMode;
|
||||
/* 0x66B */ u8 mCurState;
|
||||
/* 0x66C */ u8 field23_0x66c[0x6BC - 0x66C];
|
||||
// /* 0x674 */ dPa_rippleEcallBack mPtclRippleCb;
|
||||
// /* 0x688 */ dPa_followEcallBack mPtclFollowCb;
|
||||
// /* 0x69C */ dPa_smokeEcallBack mPtclSmokeCb;
|
||||
/* 0x66C */ u8 field23_0x66c[0x674 - 0x66C];
|
||||
/* 0x674 */ dPa_rippleEcallBack mPtclRippleCb;
|
||||
/* 0x688 */ dPa_followEcallBack mPtclFollowCb;
|
||||
/* 0x69C */ dPa_smokeEcallBack mPtclSmokeCb;
|
||||
/* 0x6BC */ JPABaseEmitter* mpParticleEmitter;
|
||||
};
|
||||
|
||||
|
||||
@@ -97,11 +97,6 @@ public:
|
||||
/* 0x0 */ u8 field_0x0[0x28];
|
||||
};
|
||||
|
||||
class dPa_smokeEcallBack {
|
||||
public:
|
||||
/* 0x0 */ u8 field_0x0[0x20];
|
||||
};
|
||||
|
||||
class dPa_cutTurnEcallBack_c {
|
||||
public:
|
||||
/* 0x0 */ u8 field_0x0[0x10];
|
||||
|
||||
+65
-40
@@ -263,70 +263,95 @@ enum ItemTable {
|
||||
};
|
||||
|
||||
struct dItem_data_item_resource {
|
||||
/* 0x00 */ char* mModelArcName;
|
||||
/* 0x04 */ char* mIconFilename;
|
||||
/* 0x08 */ s16 mModelFileIdx;
|
||||
/* 0x0A */ s16 mBtkFileIdx;
|
||||
/* 0x0C */ s16 mBrkFileIdx;
|
||||
/* 0x0E */ s16 field5_0xe;
|
||||
/* 0x10 */ s16 field6_0x10;
|
||||
/* 0x12 */ s16 field7_0x12;
|
||||
/* 0x14 */ s8 mTevRegAnimFrameIndex; // If specified, keep the BRK animation on this frame.
|
||||
/* 0x15 */ u8 field9_0x15;
|
||||
/* 0x16 */ s16 mNameMessageId;
|
||||
/* 0x18 */ u8 temp[8];
|
||||
/* 0x20 */ u16 mMaxHeapSize;
|
||||
/* 0x22 */ u8 field20_0x22;
|
||||
/* 0x23 */ u8 field21_0x23;
|
||||
/* 0x00 */ char* mArcname;
|
||||
/* 0x04 */ char* mTexture; // Filename in /files/res/Msg/itemicon.arc of its inventory icon.
|
||||
/* 0x08 */ s16 mBmdIdx;
|
||||
/* 0x0A */ s16 mSrtIdx; // BTK
|
||||
/* 0x0C */ s16 mSrtIdx2; // BTK
|
||||
/* 0x0E */ s16 mTevIdx; // BRK
|
||||
/* 0x10 */ s16 mTevIdx2; // BRK
|
||||
/* 0x12 */ s16 mBckIdx;
|
||||
/* 0x14 */ s8 mTevFrm; // If specified, keep the BRK animation on this frame.
|
||||
/* 0x16 */ s16 mItemMesgNum; // Message containing this item's name
|
||||
/* 0x18 */ u32 mUnused; // Always 0, doesn't seem to be read
|
||||
/* 0x1C */ u32 mUnknown; // Varies between items, but doesn't seem to be read
|
||||
/* 0x20 */ u16 mHeapSize;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(dItem_data_item_resource) == 0x24);
|
||||
|
||||
struct dItem_data_field_item_res {
|
||||
/* 0x00 */ char * mModelArcName;
|
||||
/* 0x04 */ short mModelFileId;
|
||||
/* 0x06 */ short mBtkAnmResIdx1;
|
||||
/* 0x08 */ short mBtkAnmResIdx2;
|
||||
/* 0x0A */ short mBrkAnmResIdx1;
|
||||
/* 0x0C */ short mBrkAnmResIdx2;
|
||||
/* 0x0E */ short mBckAnmResIdx;
|
||||
/* 0x10 */ u8 mTevRegAnimFrameIndex;
|
||||
/* 0x11 */ u8 field8_0x11;
|
||||
/* 0x12 */ u8 field9_0x12;
|
||||
/* 0x13 */ u8 field10_0x13;
|
||||
/* 0x14 */ u8 field11_0x14;
|
||||
/* 0x15 */ u8 field12_0x15;
|
||||
/* 0x16 */ u8 field13_0x16;
|
||||
/* 0x17 */ u8 field14_0x17;
|
||||
/* 0x00 */ char* mArc;
|
||||
/* 0x04 */ s16 mBmdIdx;
|
||||
/* 0x06 */ s16 mSrtIdx; // BTK
|
||||
/* 0x08 */ s16 mSrtIdx2; // BTK
|
||||
/* 0x0A */ s16 mTevIdx; // BRK
|
||||
/* 0x0C */ s16 mTevIdx2; // BRK
|
||||
/* 0x0E */ s16 mBckIdx;
|
||||
/* 0x10 */ s8 mTevFrm; // Unused, the equivalent in item_resource is used instead.
|
||||
/* 0x14 */ u32 mUnknown;
|
||||
/* 0x18 */ u16 mHeapSize;
|
||||
/* 0x1A */ u8 field16_0x1a;
|
||||
/* 0x1B */ u8 field17_0x1b;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(dItem_data_field_item_res) == 0x1C);
|
||||
|
||||
struct dItem_data_item_info {
|
||||
/* 0x00 */ u8 mMaybeShadowRelated;
|
||||
/* 0x00 */ u8 mShadowSize;
|
||||
/* 0x01 */ u8 mCollisionH; // Cylinder Height
|
||||
/* 0x02 */ u8 mCollisionR; // Cylinder Radius
|
||||
/* 0x03 */ u8 mSpecialBehaviors;
|
||||
/* 0x03 */ u8 mFlag;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(dItem_data_item_info) == 0x4);
|
||||
|
||||
struct dItem_data_effect_info {
|
||||
/* 0x00 */ u16 m_appear;
|
||||
/* 0x02 */ u16 m_sp_effect;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(dItem_data_effect_info) == 0x4);
|
||||
|
||||
class dItem_data {
|
||||
public:
|
||||
static char* item_arcname_tbl[0x70];
|
||||
static char* item_texture_tbl[0x74];
|
||||
static dItem_data_item_resource item_resource[0x100];
|
||||
static dItem_data_field_item_res field_item_res[0x100];
|
||||
static dItem_data_item_info item_info[0x100];
|
||||
static dItem_data_effect_info effect_info[0x81];
|
||||
|
||||
static u32 getHeapSize(u8 itemNo) { return item_resource[itemNo].mMaxHeapSize; }
|
||||
static u32 getFieldHeapSize(u8 itemNo) { return field_item_res[itemNo].mHeapSize; }
|
||||
static char* getArcname(u8 no) { return item_resource[no].mArcname; }
|
||||
static char* getTexture(u8 no) { return item_resource[no].mTexture; }
|
||||
static s16 getBmdIdx(u8 no) { return item_resource[no].mBmdIdx; }
|
||||
static s16 getSrtIdx(u8 no) { return item_resource[no].mSrtIdx; }
|
||||
static s16 getSrtIdx2(u8 no) { return item_resource[no].mSrtIdx2; }
|
||||
static s16 getTevIdx(u8 no) { return item_resource[no].mTevIdx; }
|
||||
static s16 getTevIdx2(u8 no) { return item_resource[no].mTevIdx2; }
|
||||
static s16 getBckIdx(u8 no) { return item_resource[no].mBckIdx; }
|
||||
// static s16 getBmtIdx(u8 no) { return item_resource[no].mBmtIdx; }
|
||||
static s8 getTevFrm(u8 no) { return item_resource[no].mTevFrm; }
|
||||
static s16 getItemMesgNum(u8 no) { return item_resource[no].mItemMesgNum; }
|
||||
static u32 getHeapSize(u8 no) { return item_resource[no].mHeapSize; }
|
||||
|
||||
static bool checkAppearEffect(u8 itemNo);
|
||||
static s16 getAppearEffect(u8 itemNo);
|
||||
static bool checkSpecialEffect(u8 itemNo);
|
||||
static u16 getSpecialEffect(u8 itemNo);
|
||||
static char* getFieldArc(u8 no) { return field_item_res[no].mArc; }
|
||||
static s16 getFieldBmdIdx(u8 no) { return field_item_res[no].mBmdIdx; }
|
||||
static s16 getFieldSrtIdx(u8 no) { return field_item_res[no].mSrtIdx; }
|
||||
static s16 getFieldSrtIdx2(u8 no) { return field_item_res[no].mSrtIdx2; }
|
||||
static s16 getFieldTevIdx(u8 no) { return field_item_res[no].mTevIdx; }
|
||||
static s16 getFieldTevIdx2(u8 no) { return field_item_res[no].mTevIdx2; }
|
||||
static s16 getFieldBckIdx(u8 no) { return field_item_res[no].mBckIdx; }
|
||||
// static s16 getFieldBmtIdx(u8 no) { return field_item_res[no].mBmtIdx; }
|
||||
static u32 getFieldHeapSize(u8 no) { return field_item_res[no].mHeapSize; }
|
||||
|
||||
static u8 getShadowSize(u8 no) { return item_info[no].mShadowSize; }
|
||||
static u8 getH(u8 no) { return item_info[no].mCollisionH; }
|
||||
static u8 getR(u8 no) { return item_info[no].mCollisionR; }
|
||||
static bool chkFlag(u8 no, u32 mask) { return item_info[no].mFlag & mask; }
|
||||
|
||||
static bool checkAppearEffect(u8 no);
|
||||
static u16 getAppearEffect(u8 no);
|
||||
static bool checkSpecialEffect(u8 no);
|
||||
static u16 getSpecialEffect(u8 no);
|
||||
};
|
||||
|
||||
#endif /* D_ITEM_DATA_H */
|
||||
+7
-14
@@ -29,18 +29,7 @@ public:
|
||||
/* 0x13 */ u8 mbAffectedByWind;
|
||||
};
|
||||
|
||||
class JPACallBackBase {
|
||||
public:
|
||||
JPACallBackBase();
|
||||
virtual ~JPACallBackBase();
|
||||
|
||||
virtual void init(JPABaseEmitter*);
|
||||
virtual void execute(JPABaseEmitter*);
|
||||
virtual void executeAfter(JPABaseEmitter*);
|
||||
virtual void draw(JPABaseEmitter*);
|
||||
};
|
||||
|
||||
class dPa_levelEcallBack : public JPACallBackBase {
|
||||
class dPa_levelEcallBack : public JPACallBackBase<JPABaseEmitter*> {
|
||||
public:
|
||||
virtual ~dPa_levelEcallBack() {}
|
||||
};
|
||||
@@ -69,6 +58,9 @@ STATIC_ASSERT(sizeof(dPa_followEcallBack) == 0x14);
|
||||
|
||||
class dPa_smokeEcallBack : dPa_followEcallBack {
|
||||
public:
|
||||
dPa_smokeEcallBack(u8);
|
||||
virtual ~dPa_smokeEcallBack();
|
||||
|
||||
/* 0x14 */ s8 field_0x14;
|
||||
/* 0x15 */ u8 field_0x15;
|
||||
/* 0x16 */ _GXColor field_0x16;
|
||||
@@ -163,13 +155,14 @@ public:
|
||||
|
||||
class dPa_rippleEcallBack : public dPa_levelEcallBack {
|
||||
public:
|
||||
dPa_rippleEcallBack() { mpBaseEmitter = NULL; }
|
||||
~dPa_rippleEcallBack();
|
||||
|
||||
void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
|
||||
void end();
|
||||
void execute(JPABaseEmitter*);
|
||||
void draw(JPABaseEmitter*);
|
||||
|
||||
~dPa_rippleEcallBack();
|
||||
|
||||
/* 0x04 */ JPABaseEmitter* mpBaseEmitter;
|
||||
/* 0x08 */ cXyz* mPos;
|
||||
/* 0x0C */ u32 mFlags;
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
#include "dolphin/types.h"
|
||||
|
||||
namespace dPa_name {
|
||||
enum {
|
||||
ID_SCENE_END = 0x8466,
|
||||
};
|
||||
|
||||
u16 j_o_id[];
|
||||
u16 s_o_id[];
|
||||
}
|
||||
|
||||
+80
-74
@@ -15,32 +15,34 @@
|
||||
|
||||
class dCcD_GObjInf;
|
||||
|
||||
static dCcD_SrcCyl m_cyl_src = {
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0xFFFFFFFF, // Tg damage types
|
||||
9,
|
||||
0x59,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
4,
|
||||
0,
|
||||
|
||||
// Cylinder
|
||||
0.0, // X
|
||||
0.0, // Y
|
||||
0.0, // Z
|
||||
10.0, // Radius
|
||||
50.0, // Height
|
||||
dCcD_SrcCyl daItem_c::m_cyl_src = {
|
||||
// dCcD_SrcGObjInf
|
||||
{
|
||||
/* Flags */ 0,
|
||||
/* SrcObjAt Type */ 0,
|
||||
/* SrcObjAt Atp */ 0,
|
||||
/* SrcObjAt SPrm */ 0,
|
||||
/* SrcObjTg Type */ 0xFFFFFFFF,
|
||||
/* SrcObjTg SPrm */ 0x09,
|
||||
/* SrcObjCo SPrm */ 0x59,
|
||||
/* SrcGObjAt Se */ 0,
|
||||
/* SrcGObjAt HitMark */ 0,
|
||||
/* SrcGObjAt Spl */ 0,
|
||||
/* SrcGObjAt Mtrl */ 0,
|
||||
/* SrcGObjAt GFlag */ 0,
|
||||
/* SrcGObjTg Se */ 0,
|
||||
/* SrcGObjTg HitMark */ 0,
|
||||
/* SrcGObjTg Spl */ 0,
|
||||
/* SrcGObjTg Mtrl */ 0,
|
||||
/* SrcGObjTg GFlag */ 0x04,
|
||||
/* SrcGObjCo GFlag */ 0,
|
||||
},
|
||||
// cM3dGCylS
|
||||
{
|
||||
/* Center */ 0.0f, 0.0f, 0.0f,
|
||||
/* Radius */ 10.0f,
|
||||
/* Height */ 50.0f,
|
||||
},
|
||||
};
|
||||
|
||||
/* 800F4BC8-800F4BD4 .text getData__12daItemBase_cFv */
|
||||
@@ -113,20 +115,23 @@ void itemGetCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*) {
|
||||
/* 800F5044-800F53EC .text CreateInit__8daItem_cFv */
|
||||
void daItem_c::CreateInit() {
|
||||
/* Nonmatching */
|
||||
mAcchCir.SetWall(30.0, 30.0);
|
||||
cXyz* speedPtr = &speed;
|
||||
mAcch.Set(¤t.pos, &next.pos, this, 1, &mAcchCir, speedPtr, NULL, NULL);
|
||||
mAcchCir.SetWall(30.0f, 30.0f);
|
||||
cXyz* speedPtr;
|
||||
mAcch.Set(¤t.pos, &next.pos, this, 1, &mAcchCir, speedPtr = &speed, NULL, NULL);
|
||||
mAcch.m_flags &= ~0x400;
|
||||
mAcch.m_flags &= ~0x8;
|
||||
mCullMtx = mModel->mBaseTransformMtx;
|
||||
mStts.Init(0, 0xFF, this);
|
||||
mCyl.Set(m_cyl_src);
|
||||
mCyl.SetStts(&mStts);
|
||||
mCyl.SetCoHitCallback(&itemGetCallBack);
|
||||
|
||||
dItem_data_item_info* item_info = &dItem_data::item_info[m_itemNo];
|
||||
f32 height = item_info->mCollisionH;
|
||||
f32 radius = item_info->mCollisionR;
|
||||
if (mScale.x > 1.0) {
|
||||
// Regswaps if the inlines are used.
|
||||
// f32 height = dItem_data::getH(m_itemNo);
|
||||
// f32 radius = dItem_data::getR(m_itemNo);
|
||||
f32 height = dItem_data::item_info[m_itemNo].mCollisionH;
|
||||
f32 radius = dItem_data::item_info[m_itemNo].mCollisionR;
|
||||
if (mScale.x > 1.0f) {
|
||||
height *= mScale.x;
|
||||
radius *= mScale.x;
|
||||
}
|
||||
@@ -135,18 +140,22 @@ void daItem_c::CreateInit() {
|
||||
|
||||
mItemTimer = getData()->mDuration;
|
||||
field7_0x65a = getData()->field7_0x18;
|
||||
mCurState = 0;
|
||||
field3_0x650 = speedPtr->y;
|
||||
mStatusFlags |= 2;
|
||||
mCurState = 0;
|
||||
|
||||
mUnknownParam = (fpcM_GetParam(this) & 0x03000000) >> 0x18;
|
||||
// TODO: should probably add inlines here
|
||||
// e.g. getType__10daItem_prmFP8daItem_c etc
|
||||
if ((fpcM_GetParam(this) & 0x03000000) >> 0x18 == 3 || (fpcM_GetParam(this) & 0x03000000) >> 0x18 == 1) {
|
||||
mStatusFlags |= 2;
|
||||
}
|
||||
mItemAction = (fpcM_GetParam(this) & 0xFC000000) >> 0x1A;
|
||||
|
||||
show();
|
||||
|
||||
if (dItem_data::checkSpecialEffect(m_itemNo) && (m_itemNo != SMALL_KEY || (mStatusFlags & 2))) {
|
||||
dItem_data::getSpecialEffect(m_itemNo);
|
||||
// TODO: dPa_control_c::set
|
||||
if (dItem_data::checkSpecialEffect(m_itemNo) && (m_itemNo != SMALL_KEY || (m_itemNo == SMALL_KEY && (mStatusFlags & 2)))) {
|
||||
u16 particleID = dItem_data::getSpecialEffect(m_itemNo);
|
||||
dComIfGp_particle_set(particleID, ¤t.pos, NULL, NULL, 0xFF, &mPtclFollowCb, -1, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
switch (m_itemNo) {
|
||||
@@ -154,27 +163,30 @@ void daItem_c::CreateInit() {
|
||||
case BOMB_10:
|
||||
case BOMB_20:
|
||||
case BOMB_30:
|
||||
mScaleTarget.x = 0.6;
|
||||
mScaleTarget.y = 0.6;
|
||||
mScaleTarget.z = 0.6;
|
||||
mScaleTarget.x = 0.6f;
|
||||
mScaleTarget.y = 0.6f;
|
||||
mScaleTarget.z = 0.6f;
|
||||
break;
|
||||
default:
|
||||
mScaleTarget.x = 1.0;
|
||||
mScaleTarget.y = 1.0;
|
||||
mScaleTarget.z = 1.0;
|
||||
mScaleTarget.x = 1.0f;
|
||||
mScaleTarget.y = 1.0f;
|
||||
mScaleTarget.z = 1.0f;
|
||||
break;
|
||||
}
|
||||
|
||||
mSwitchId = (fpcM_GetParam(this) & 0x00FF0000) >> 0x10;
|
||||
if (mSwitchId != 0xFF && fopAcM_isSwitch(this, mSwitchId)) {
|
||||
if (mSwitchId != 0xFF && !fopAcM_isSwitch(this, mSwitchId)) {
|
||||
hide();
|
||||
mStatusFlags |= 2;
|
||||
}
|
||||
mActivationSwitch = (orig.angle.z & 0x00FF) >> 0;
|
||||
|
||||
current.angle.z = 0;
|
||||
orig.angle.z = 0;
|
||||
initAction();
|
||||
|
||||
switch (m_itemNo) {
|
||||
case SWORD:
|
||||
case SHIELD:
|
||||
mStatus |= 0x4000;
|
||||
break;
|
||||
@@ -184,12 +196,11 @@ void daItem_c::CreateInit() {
|
||||
}
|
||||
|
||||
set_mtx();
|
||||
animPlay(1.0, 1.0, 1.0, 1.0, 1.0);
|
||||
animPlay(1.0f, 1.0f, 1.0f, 1.0f, 1.0f);
|
||||
|
||||
s16 procname = PROC_BST; // Gohdan
|
||||
if (fopAcIt_Judge(&fpcSch_JudgeForPName, &procname)) {
|
||||
// TODO: dPa_control_c::set
|
||||
mpParticleEmitter = 0;
|
||||
mpParticleEmitter = dComIfGp_particle_set(0x81E1, ¤t.pos, NULL, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,7 +211,7 @@ s32 daItem_c::_daItem_create() {
|
||||
|
||||
m_itemNo = (fpcM_GetParam(this) & 0x000000FF) >> 0x00;
|
||||
|
||||
if (!dItem_data::field_item_res[m_itemNo].mModelArcName) {
|
||||
if (!dItem_data::getFieldArc(m_itemNo)) {
|
||||
setLoadError();
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
@@ -215,10 +226,9 @@ s32 daItem_c::_daItem_create() {
|
||||
}
|
||||
}
|
||||
|
||||
s32 phase_state = dComIfG_resLoad(&mPhs, dItem_data::field_item_res[m_itemNo].mModelArcName);
|
||||
s32 phase_state = dComIfG_resLoad(&mPhs, dItem_data::getFieldArc(m_itemNo));
|
||||
if (phase_state == cPhs_COMPLEATE_e) {
|
||||
u16 heapSize = dItem_data::field_item_res[m_itemNo].mHeapSize;
|
||||
s32 result = fopAcM_entrySolidHeap(this, (heapCallbackFunc)&CheckFieldItemCreateHeap, heapSize);
|
||||
s32 result = fopAcM_entrySolidHeap(this, &CheckFieldItemCreateHeap, dItem_data::getFieldHeapSize(m_itemNo));
|
||||
if (!result) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
@@ -332,8 +342,9 @@ void daItem_c::setTevStr() {
|
||||
/* 800F61C8-800F6268 .text _daItem_delete__8daItem_cFv */
|
||||
s32 daItem_c::_daItem_delete() {
|
||||
/* Nonmatching */
|
||||
// TODO: dPa_rippleEcallBack::end()
|
||||
DeleteBase(dItem_data::field_item_res[m_itemNo].mModelArcName);
|
||||
mPtclRippleCb.end();
|
||||
// TODO
|
||||
DeleteBase(dItem_data::getFieldArc(m_itemNo));
|
||||
}
|
||||
|
||||
/* 800F6268-800F6434 .text Reflect__FR4cXyzP4cXyzff */
|
||||
@@ -367,7 +378,7 @@ bool daItem_c::checkItemDisappear() {
|
||||
if (mStatusFlags & 0x10) {
|
||||
disappearing = false;
|
||||
}
|
||||
if (dItem_data::item_info[m_itemNo].mSpecialBehaviors & 0x01) {
|
||||
if (dItem_data::chkFlag(m_itemNo, 0x01)) {
|
||||
disappearing = false;
|
||||
}
|
||||
if (g_dComIfG_gameInfo.play.mEvtCtrl.mMode != 0) {
|
||||
@@ -525,11 +536,6 @@ s32 daItem_c::_daItem_isdelete() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800F89F8-800F8A14 .text getHeadTopPos__9daPy_py_cCFv */
|
||||
void daPy_py_c::getHeadTopPos() const {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
static actor_method_class l_daItem_Method = {
|
||||
(process_method_func)daItem_Create,
|
||||
(process_method_func)daItem_Delete,
|
||||
@@ -539,18 +545,18 @@ static actor_method_class l_daItem_Method = {
|
||||
};
|
||||
|
||||
extern actor_process_profile_definition g_profile_ITEM = {
|
||||
fpcLy_CURRENT_e,
|
||||
7,
|
||||
fpcPi_CURRENT_e,
|
||||
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,
|
||||
/* LayerID */ fpcLy_CURRENT_e,
|
||||
/* ListID */ 7,
|
||||
/* ListPrio */ fpcPi_CURRENT_e,
|
||||
/* ProcName */ PROC_ITEM,
|
||||
/* Proc SubMtd */ &g_fpcLf_Method.mBase,
|
||||
/* Size */ sizeof(daItem_c),
|
||||
/* SizeOther */ 0,
|
||||
/* Parameters */ 0,
|
||||
/* Leaf SubMtd */ &g_fopAc_Method.base,
|
||||
/* Priority */ 0x00F5,
|
||||
/* Actor SubMtd */ &l_daItem_Method,
|
||||
/* Status */ 0x000C0100,
|
||||
/* Group */ fopAc_ACTOR_e,
|
||||
/* CullType */ fopAc_CULLBOX_0_e,
|
||||
};
|
||||
|
||||
+10136
-10
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user