mirror of https://github.com/zeldaret/tp.git
d_a_tag_mwait OK
This commit is contained in:
parent
f825fdb16e
commit
32f80f3774
|
|
@ -6252,14 +6252,17 @@ public:
|
|||
enum daMidna_ERFLG0 {
|
||||
ERFLG0_NO_SERVICE_WAIT = 0x80,
|
||||
ERFLG0_FORCE_PANIC = 8,
|
||||
ERFLG0_UNK_2 = 2,
|
||||
};
|
||||
|
||||
enum daMidna_FLG0 {
|
||||
FLG0_UNK_80000000 = 0x80000000,
|
||||
FLG0_UNK_8000000 = 0x8000000,
|
||||
FLG0_NPC_NEAR = 0x100000,
|
||||
FLG0_NPC_FAR = 0x40000,
|
||||
FLG0_NO_INPUT = 0x4000,
|
||||
FLG0_NO_DRAW = 0x2000,
|
||||
FLG0_UNK_400 = 0x400,
|
||||
FLG0_UNK_800 = 0x800,
|
||||
FLG0_UNK_200 = 0x200,
|
||||
};
|
||||
|
|
@ -6276,10 +6279,8 @@ public:
|
|||
u32 checkForceNormalColor() const;
|
||||
u32 checkForceTiredColor() const;
|
||||
bool checkMidnaTired();
|
||||
bool i_checkMidnaTired() {
|
||||
return dComIfGs_isTransformLV(3) && !i_dComIfGs_isEventBit(0x1e08);
|
||||
}
|
||||
void onNoServiceWait();
|
||||
|
||||
/* 804BC3E0 */ void modelCallBack(int);
|
||||
/* 804BC5C4 */ void changeUpperBck();
|
||||
/* 804BC614 */ void changeFaceBck();
|
||||
|
|
@ -6326,6 +6327,8 @@ public:
|
|||
/* 804C61A4 */ ~daMidna_c();
|
||||
|
||||
void onEndResetStateFlg0(daMidna_ERFLG0 pFlg) { mEndResetStateFlg0 |= pFlg; }
|
||||
void onStateFlg0(daMidna_FLG0 i_flag) { mStateFlg0 |= i_flag; }
|
||||
void offStateFlg0(daMidna_FLG0 i_flag) { mStateFlg0 &= ~i_flag; }
|
||||
u32 checkStateFlg0(daMidna_FLG0 flag) const { return mStateFlg0 & flag; }
|
||||
u32 checkStateFlg1(daMidna_FLG1 flag) const { return mStateFlg1 & flag; }
|
||||
void setFaceNum(int num) { mFaceNum = num; }
|
||||
|
|
@ -6341,6 +6344,29 @@ public:
|
|||
int checkMetamorphoseEnable() { return (this->*mpFunc)(); }
|
||||
int checkShadowModelDrawDemoForce() const { return checkStateFlg1(FLG1_SHADOW_MODEL_DRAW_DEMO_FORCE); }
|
||||
|
||||
void onTagWaitPosWarp(const cXyz* param_0) {
|
||||
field_0x9ac = *param_0;
|
||||
onStateFlg0(FLG0_UNK_400);
|
||||
onEndResetStateFlg0(ERFLG0_UNK_2);
|
||||
}
|
||||
|
||||
void onTagWaitPos(const cXyz* param_0) {
|
||||
field_0x9ac = *param_0;
|
||||
onStateFlg0(FLG0_UNK_400);
|
||||
}
|
||||
|
||||
void offTagWaitPos() {
|
||||
offStateFlg0((daMidna_FLG0)(FLG0_UNK_80000000 | FLG0_UNK_8000000 | FLG0_UNK_400));
|
||||
}
|
||||
|
||||
void onTagNoHairLead() {
|
||||
onStateFlg0(FLG0_UNK_80000000);
|
||||
}
|
||||
|
||||
bool checkReturnAnime() const {
|
||||
return field_0x5e4[0].getIdx() == 0x1CA;
|
||||
}
|
||||
|
||||
bool checkShadowModelDrawSmode() const {
|
||||
if (field_0x84e != 3 && field_0x84e != 4) {
|
||||
if (field_0x84e == 2) {
|
||||
|
|
@ -6363,7 +6389,7 @@ public:
|
|||
}
|
||||
|
||||
int checkShadowReturnEnd() const {
|
||||
if (field_0x5e4[0].getIdx() == 0x21c && !field_0x578->isStop()) {
|
||||
if (field_0x5e4[0].getIdx() == 0x21C && !field_0x578->isStop()) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -6383,6 +6409,10 @@ public:
|
|||
|
||||
inline static BOOL checkMidnaRealBody();
|
||||
|
||||
bool i_checkMidnaTired() {
|
||||
return dComIfGs_isTransformLV(3) && !i_dComIfGs_isEventBit(0x1E08);
|
||||
}
|
||||
|
||||
static u8 const m_texDataTable[84];
|
||||
static u8 const m_anmDataTable[636];
|
||||
|
||||
|
|
@ -6477,7 +6507,9 @@ private:
|
|||
/* 0x091C */ cXyz field_0x91c[5];
|
||||
/* 0x0958 */ u8 field_0x958[0xC]; // cXyz here, fix later
|
||||
/* 0x0964 */ cXyz field_0x964[5];
|
||||
/* 0x09A0 */ u8 field_0x9a0[0x14];
|
||||
/* 0x09A0 */ u8 field_0x9a0[0xC];
|
||||
/* 0x09AC */ cXyz field_0x9ac;
|
||||
/* 0x09B8 */ u8 field_0x9b8[0x9C4 - 0x9B8];
|
||||
/* 0x09C4 */ cXyz field_0x9c4;
|
||||
/* 0x09D0 */ u8 field_0x9d0[4];
|
||||
/* 0x09D4 */ daMidna_func mpFunc;
|
||||
|
|
|
|||
|
|
@ -37,9 +37,9 @@ public:
|
|||
/* 80249F00 */ dMsgFlow_c();
|
||||
/* 80249F48 */ virtual ~dMsgFlow_c();
|
||||
|
||||
/* 80249F90 */ void init(fopAc_ac_c*, int, int, fopAc_ac_c**);
|
||||
/* 80249F90 */ void init(fopAc_ac_c* i_partner, int i_flowID, int, fopAc_ac_c**);
|
||||
/* 8024A13C */ int checkOpenDoor(fopAc_ac_c*, int*);
|
||||
/* 8024A2D8 */ int doFlow(fopAc_ac_c*, fopAc_ac_c**, int);
|
||||
/* 8024A2D8 */ int doFlow(fopAc_ac_c*, fopAc_ac_c**, int i_flow);
|
||||
/* 8024A424 */ int checkEventRender(int*, int*, int*, int*);
|
||||
/* 8024A4C4 */ void remove();
|
||||
/* 8024A528 */ u16 getEventId(int*);
|
||||
|
|
|
|||
|
|
@ -464,7 +464,7 @@ s32 fopAcM_cullingCheck(const fopAc_ac_c*);
|
|||
void* event_second_actor(u16);
|
||||
s32 fopAcM_orderTalkEvent(fopAc_ac_c*, fopAc_ac_c*, u16, u16);
|
||||
s32 fopAcM_orderTalkItemBtnEvent(u16, fopAc_ac_c*, fopAc_ac_c*, u16, u16);
|
||||
s32 fopAcM_orderSpeakEvent(fopAc_ac_c*, u16, u16);
|
||||
s32 fopAcM_orderSpeakEvent(fopAc_ac_c* i_actor, u16 i_priority, u16 i_flag);
|
||||
s32 fopAcM_orderDoorEvent(fopAc_ac_c*, fopAc_ac_c*, u16, u16);
|
||||
s32 fopAcM_orderCatchEvent(fopAc_ac_c*, fopAc_ac_c*, u16, u16);
|
||||
s32 fopAcM_orderOtherEvent(fopAc_ac_c*, const char*, u16, u16, u16);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,24 @@
|
|||
#ifndef D_A_TAG_MWAIT_H
|
||||
#define D_A_TAG_MWAIT_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/msg/d_msg_flow.h"
|
||||
|
||||
class daTagMwait_c : public fopAc_ac_c {
|
||||
public:
|
||||
/* 80D5BE18 */ int create();
|
||||
/* 80D5C01C */ ~daTagMwait_c();
|
||||
/* 80D5C0A8 */ int execute();
|
||||
|
||||
/* 0x568 */ u8 mOnSw;
|
||||
/* 0x569 */ u8 mEnterSw;
|
||||
/* 0x56A */ bool mInitMsgFlow;
|
||||
/* 0x56B */ u8 mWarpToPos;
|
||||
/* 0x56C */ bool mEnteredTrigger;
|
||||
/* 0x56D */ u8 field_0x56d;
|
||||
/* 0x570 */ f32 field_0x570;
|
||||
/* 0x574 */ cXyz mWaitPosition;
|
||||
/* 0x580 */ dMsgFlow_c mMsgFlow;
|
||||
};
|
||||
|
||||
#endif /* D_A_TAG_MWAIT_H */
|
||||
|
|
|
|||
|
|
@ -1,277 +1,188 @@
|
|||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: d_a_tag_mwait
|
||||
//
|
||||
/**
|
||||
* d_a_tag_mwait.cpp
|
||||
* Midna Wait Trigger
|
||||
*/
|
||||
|
||||
#include "rel/d/a/tag/d_a_tag_mwait/d_a_tag_mwait.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct fopAc_ac_c {
|
||||
/* 80018B64 */ fopAc_ac_c();
|
||||
/* 80018C8C */ ~fopAc_ac_c();
|
||||
};
|
||||
|
||||
struct daTagMwait_c {
|
||||
/* 80D5BE18 */ void create();
|
||||
/* 80D5C01C */ ~daTagMwait_c();
|
||||
/* 80D5C0A8 */ void execute();
|
||||
};
|
||||
|
||||
struct daPy_py_c {
|
||||
static u8 m_midnaActor[4];
|
||||
};
|
||||
|
||||
struct dSv_info_c {
|
||||
/* 80035200 */ void onSwitch(int, int);
|
||||
/* 80035360 */ void isSwitch(int, int) const;
|
||||
};
|
||||
|
||||
struct dMsgFlow_c {
|
||||
/* 80249F00 */ dMsgFlow_c();
|
||||
/* 80249F48 */ ~dMsgFlow_c();
|
||||
/* 80249F90 */ void init(fopAc_ac_c*, int, int, fopAc_ac_c**);
|
||||
/* 8024A2D8 */ void doFlow(fopAc_ac_c*, fopAc_ac_c**, int);
|
||||
};
|
||||
|
||||
struct dEvt_control_c {
|
||||
/* 80042468 */ void reset();
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void create__12daTagMwait_cFv();
|
||||
extern "C" static void daTagMwait_Create__FP10fopAc_ac_c();
|
||||
extern "C" void __dt__12daTagMwait_cFv();
|
||||
extern "C" static void daTagMwait_Delete__FP12daTagMwait_c();
|
||||
extern "C" void execute__12daTagMwait_cFv();
|
||||
extern "C" static void daTagMwait_Execute__FP12daTagMwait_c();
|
||||
extern "C" static bool daTagMwait_Draw__FP12daTagMwait_c();
|
||||
extern "C" extern void* g_profile_Tag_Mwait[12];
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void __ct__10fopAc_ac_cFv();
|
||||
extern "C" void __dt__10fopAc_ac_cFv();
|
||||
extern "C" void fopAcM_delete__FP10fopAc_ac_c();
|
||||
extern "C" void fopAcM_orderSpeakEvent__FP10fopAc_ac_cUsUs();
|
||||
extern "C" void onSwitch__10dSv_info_cFii();
|
||||
extern "C" void isSwitch__10dSv_info_cCFii();
|
||||
extern "C" void reset__14dEvt_control_cFv();
|
||||
extern "C" void __ct__10dMsgFlow_cFv();
|
||||
extern "C" void __dt__10dMsgFlow_cFv();
|
||||
extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c();
|
||||
extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void PSVECScale();
|
||||
extern "C" void PSVECSquareDistance();
|
||||
extern "C" void _savegpr_28();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_28();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" extern void* g_fopAc_Method[8];
|
||||
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
extern "C" extern u32 __float_nan;
|
||||
extern "C" u8 m_midnaActor__9daPy_py_c[4];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80D5C580-80D5C584 000000 0004+00 2/2 0/0 0/0 .rodata @3841 */
|
||||
SECTION_RODATA static f32 const lit_3841 = -1.0f;
|
||||
COMPILER_STRIP_GATE(0x80D5C580, &lit_3841);
|
||||
|
||||
/* 80D5C584-80D5C588 000004 0004+00 0/1 0/0 0/0 .rodata @3842 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3842 = 100.0f;
|
||||
COMPILER_STRIP_GATE(0x80D5C584, &lit_3842);
|
||||
#pragma pop
|
||||
|
||||
/* 80D5C588-80D5C58C 000008 0004+00 0/1 0/0 0/0 .rodata @3843 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3843 = 10.0f;
|
||||
COMPILER_STRIP_GATE(0x80D5C588, &lit_3843);
|
||||
#pragma pop
|
||||
|
||||
/* 80D5C58C-80D5C590 00000C 0004+00 0/1 0/0 0/0 .rodata @3844 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3844 = 220.0f;
|
||||
COMPILER_STRIP_GATE(0x80D5C58C, &lit_3844);
|
||||
#pragma pop
|
||||
|
||||
/* 80D5C590-80D5C598 000010 0004+04 0/1 0/0 0/0 .rodata @3845 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3845[1 + 1 /* padding */] = {
|
||||
150.0f,
|
||||
/* padding */
|
||||
0.0f,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80D5C590, &lit_3845);
|
||||
#pragma pop
|
||||
|
||||
/* 80D5C598-80D5C5A0 000018 0008+00 0/1 0/0 0/0 .rodata @3847 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const lit_3847[8] = {
|
||||
0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80D5C598, &lit_3847);
|
||||
#pragma pop
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "d/a/d_a_alink.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "d/d_procname.h"
|
||||
|
||||
/* 80D5BE18-80D5BFFC 000078 01E4+00 1/1 0/0 0/0 .text create__12daTagMwait_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daTagMwait_c::create() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mwait/d_a_tag_mwait/create__12daTagMwait_cFv.s"
|
||||
int daTagMwait_c::create() {
|
||||
if (!fopAcM_CheckCondition(this, 8)) {
|
||||
new (this) daTagMwait_c();
|
||||
fopAcM_OnCondition(this, 8);
|
||||
}
|
||||
|
||||
mEnterSw = fopAcM_GetParam(this) >> 8;
|
||||
|
||||
if (i_fopAcM_isSwitch(this, mEnterSw)) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
mOnSw = fopAcM_GetParam(this);
|
||||
|
||||
u32 prm = (fopAcM_GetParam(this) >> 0x10) & 0xFF;
|
||||
if (prm == 0 || prm == 0xFF) {
|
||||
field_0x570 = -1.0f;
|
||||
} else {
|
||||
field_0x570 = prm * prm * 100.0f;
|
||||
}
|
||||
|
||||
mWarpToPos = shape_angle.x & 0xF;
|
||||
if (mWarpToPos >= 2) {
|
||||
mWarpToPos = 0;
|
||||
}
|
||||
|
||||
field_0x56d = (shape_angle.x >> 4) & 0xF;
|
||||
if (field_0x56d >= 2) {
|
||||
field_0x56d = 0;
|
||||
}
|
||||
|
||||
mScale *= 100.0f;
|
||||
|
||||
u32 wait_y_offset = (fopAcM_GetParam(this) >> 0x18) & 0xFF;
|
||||
if (wait_y_offset == 0 || wait_y_offset == 0xFF) {
|
||||
wait_y_offset = 0;
|
||||
}
|
||||
|
||||
mWaitPosition.set(current.pos.x, current.pos.y + (wait_y_offset * 10.0f), current.pos.z);
|
||||
mAttentionInfo.mPosition.set(mWaitPosition.x, mWaitPosition.y + 220.0f, mWaitPosition.z);
|
||||
mEyePos.set(mWaitPosition.x, mWaitPosition.y + 150.0f, mWaitPosition.z);
|
||||
|
||||
mAttentionInfo.field_0x0[1] = 54;
|
||||
mAttentionInfo.mFlags = 0;
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80D5BFFC-80D5C01C 00025C 0020+00 1/0 0/0 0/0 .text daTagMwait_Create__FP10fopAc_ac_c
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daTagMwait_Create(fopAc_ac_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mwait/d_a_tag_mwait/daTagMwait_Create__FP10fopAc_ac_c.s"
|
||||
static int daTagMwait_Create(fopAc_ac_c* i_this) {
|
||||
return static_cast<daTagMwait_c*>(i_this)->create();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80D5C01C-80D5C080 00027C 0064+00 1/1 0/0 0/0 .text __dt__12daTagMwait_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm daTagMwait_c::~daTagMwait_c() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mwait/d_a_tag_mwait/__dt__12daTagMwait_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
daTagMwait_c::~daTagMwait_c() {}
|
||||
|
||||
/* 80D5C080-80D5C0A8 0002E0 0028+00 1/0 0/0 0/0 .text daTagMwait_Delete__FP12daTagMwait_c
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daTagMwait_Delete(daTagMwait_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mwait/d_a_tag_mwait/daTagMwait_Delete__FP12daTagMwait_c.s"
|
||||
static int daTagMwait_Delete(daTagMwait_c* i_this) {
|
||||
i_this->~daTagMwait_c();
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80D5C5A0-80D5C5A8 000020 0004+04 0/1 0/0 0/0 .rodata @4006 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const lit_4006[4 + 4 /* padding */] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
/* padding */
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80D5C5A0, &lit_4006);
|
||||
#pragma pop
|
||||
|
||||
/* 80D5C5A8-80D5C5B0 000028 0008+00 0/1 0/0 0/0 .rodata @4007 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const lit_4007[8] = {
|
||||
0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80D5C5A8, &lit_4007);
|
||||
#pragma pop
|
||||
|
||||
/* 80D5C5B0-80D5C5B8 000030 0008+00 0/1 0/0 0/0 .rodata @4008 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const lit_4008[8] = {
|
||||
0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80D5C5B0, &lit_4008);
|
||||
#pragma pop
|
||||
|
||||
/* 80D5C5B8-80D5C5C0 000038 0008+00 0/1 0/0 0/0 .rodata @4009 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const lit_4009[8] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80D5C5B8, &lit_4009);
|
||||
#pragma pop
|
||||
|
||||
/* 80D5C5C0-80D5C5C4 000040 0004+00 0/1 0/0 0/0 .rodata @4010 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_4010 = 5.0f;
|
||||
COMPILER_STRIP_GATE(0x80D5C5C0, &lit_4010);
|
||||
#pragma pop
|
||||
|
||||
/* 80D5C0A8-80D5C550 000308 04A8+00 1/1 0/0 0/0 .text execute__12daTagMwait_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daTagMwait_c::execute() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mwait/d_a_tag_mwait/execute__12daTagMwait_cFv.s"
|
||||
int daTagMwait_c::execute() {
|
||||
daMidna_c* midna_p = daPy_py_c::getMidnaActor();
|
||||
daPy_py_c* player_p = daPy_getLinkPlayerActorClass();
|
||||
|
||||
if (midna_p == NULL) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
mAttentionInfo.mFlags = 0;
|
||||
|
||||
if (mEvtInfo.checkCommandTalk()) {
|
||||
if (!mEnteredTrigger || !midna_p->checkReturnAnime()) {
|
||||
if (!mInitMsgFlow) {
|
||||
mMsgFlow.init(this, (u16)shape_angle.z, 0, NULL);
|
||||
mInitMsgFlow = true;
|
||||
} else if (mMsgFlow.doFlow(this, NULL, 0)) {
|
||||
i_dComIfGp_event_reset();
|
||||
|
||||
if (mEnteredTrigger) {
|
||||
fopAcM_delete(this);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (mEnteredTrigger) {
|
||||
fopAcM_orderSpeakEvent(this, 0, 0);
|
||||
mEvtInfo.i_onCondition(1);
|
||||
mAttentionInfo.mPosition = midna_p->mAttentionInfo.mPosition;
|
||||
mEyePos = mAttentionInfo.mPosition;
|
||||
} else {
|
||||
mInitMsgFlow = false;
|
||||
|
||||
if (daPy_py_c::i_checkNowWolf() && midna_p != NULL && i_fopAcM_isSwitch(this, mOnSw)) {
|
||||
if (mWarpToPos) {
|
||||
midna_p->onTagWaitPosWarp(&mWaitPosition);
|
||||
} else {
|
||||
midna_p->onTagWaitPos(&mWaitPosition);
|
||||
}
|
||||
|
||||
if (midna_p->current.pos.abs(mWaitPosition) < 5.0f) {
|
||||
if (field_0x56d == 1) {
|
||||
midna_p->onTagNoHairLead();
|
||||
}
|
||||
|
||||
f32 player_dist = player_p->current.pos.abs2XZ(current.pos);
|
||||
if ((player_dist <= mScale.x * mScale.x &&
|
||||
player_p->current.pos.y >= current.pos.y &&
|
||||
player_p->current.pos.y <= current.pos.y + mScale.y) ||
|
||||
i_fopAcM_isSwitch(this, mEnterSw))
|
||||
{
|
||||
midna_p->offTagWaitPos();
|
||||
i_fopAcM_onSwitch(this, mEnterSw);
|
||||
mEnteredTrigger = true;
|
||||
|
||||
if (shape_angle.z == 0) {
|
||||
fopAcM_delete(this);
|
||||
} else {
|
||||
mAttentionInfo.mPosition = midna_p->mAttentionInfo.mPosition;
|
||||
mEyePos = mAttentionInfo.mPosition;
|
||||
fopAcM_orderSpeakEvent(this, 0, 0);
|
||||
mEvtInfo.i_onCondition(1);
|
||||
}
|
||||
} else if (field_0x570 > 0.0f && player_dist < field_0x570 &&
|
||||
player_p->current.pos.y >= current.pos.y &&
|
||||
player_p->current.pos.y <= current.pos.y + mScale.y)
|
||||
{
|
||||
mAttentionInfo.mFlags = 2;
|
||||
mEvtInfo.i_onCondition(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80D5C550-80D5C570 0007B0 0020+00 1/0 0/0 0/0 .text daTagMwait_Execute__FP12daTagMwait_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daTagMwait_Execute(daTagMwait_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/tag/d_a_tag_mwait/d_a_tag_mwait/daTagMwait_Execute__FP12daTagMwait_c.s"
|
||||
static int daTagMwait_Execute(daTagMwait_c* i_this) {
|
||||
return i_this->execute();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80D5C570-80D5C578 0007D0 0008+00 1/0 0/0 0/0 .text daTagMwait_Draw__FP12daTagMwait_c
|
||||
*/
|
||||
static bool daTagMwait_Draw(daTagMwait_c* param_0) {
|
||||
return true;
|
||||
static int daTagMwait_Draw(daTagMwait_c* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80D5C5C4-80D5C5E4 -00001 0020+00 1/0 0/0 0/0 .data l_daTagMwait_Method */
|
||||
SECTION_DATA static void* l_daTagMwait_Method[8] = {
|
||||
(void*)daTagMwait_Create__FP10fopAc_ac_c,
|
||||
(void*)daTagMwait_Delete__FP12daTagMwait_c,
|
||||
(void*)daTagMwait_Execute__FP12daTagMwait_c,
|
||||
(void*)NULL,
|
||||
(void*)daTagMwait_Draw__FP12daTagMwait_c,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
static actor_method_class l_daTagMwait_Method = {
|
||||
(process_method_func)daTagMwait_Create, (process_method_func)daTagMwait_Delete,
|
||||
(process_method_func)daTagMwait_Execute, (process_method_func)NULL,
|
||||
(process_method_func)daTagMwait_Draw,
|
||||
};
|
||||
|
||||
/* 80D5C5E4-80D5C614 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_Mwait */
|
||||
SECTION_DATA extern void* g_profile_Tag_Mwait[12] = {
|
||||
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
|
||||
(void*)0x02C30000, (void*)&g_fpcLf_Method,
|
||||
(void*)0x000005CC, (void*)NULL,
|
||||
(void*)NULL, (void*)&g_fopAc_Method,
|
||||
(void*)0x01000000, (void*)&l_daTagMwait_Method,
|
||||
(void*)0x00044000, (void*)0x030E0000,
|
||||
extern actor_process_profile_definition g_profile_Tag_Mwait = {
|
||||
-3,
|
||||
7,
|
||||
-3,
|
||||
PROC_Tag_Mwait,
|
||||
&g_fpcLf_Method.mBase,
|
||||
sizeof(daTagMwait_c),
|
||||
0,
|
||||
0,
|
||||
&g_fopAc_Method.base,
|
||||
256,
|
||||
&l_daTagMwait_Method,
|
||||
0x44000,
|
||||
3,
|
||||
14,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -448,7 +448,7 @@ SECTION_DEAD static char const* const stringBase_80399CB5 = "FLI1";
|
|||
|
||||
/* 80249F90-8024A13C 2448D0 01AC+00 0/0 10/10 86/86 .text
|
||||
* init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c */
|
||||
void dMsgFlow_c::init(fopAc_ac_c* param_0, int param_1, int param_2, fopAc_ac_c** param_3) {
|
||||
void dMsgFlow_c::init(fopAc_ac_c* i_partner, int i_flowID, int param_2, fopAc_ac_c** param_3) {
|
||||
u16 uVar4;
|
||||
u16 flow_val;
|
||||
|
||||
|
|
@ -459,11 +459,11 @@ void dMsgFlow_c::init(fopAc_ac_c* param_0, int param_1, int param_2, fopAc_ac_c*
|
|||
}
|
||||
|
||||
if (param_2 == 0 && g_MsgObject_HIO_c.mMsgDebug == 2) {
|
||||
param_1 = g_MsgObject_HIO_c.mFlowIndex;
|
||||
i_flowID = g_MsgObject_HIO_c.mFlowIndex;
|
||||
}
|
||||
flow_val = param_1;
|
||||
flow_val = i_flowID;
|
||||
|
||||
dMsgObject_changeFlowGroup(param_1);
|
||||
dMsgObject_changeFlowGroup(i_flowID);
|
||||
if (param_2 == 0) {
|
||||
setInitValue(1);
|
||||
mFlow_p = getMsgDataBlock("FLW1");
|
||||
|
|
@ -473,15 +473,15 @@ void dMsgFlow_c::init(fopAc_ac_c* param_0, int param_1, int param_2, fopAc_ac_c*
|
|||
field_0x18 = field_0x14 + *(u16*)(mFlow_p + 8);
|
||||
|
||||
mFlow = flow_val;
|
||||
if (param_0 != NULL) {
|
||||
dMsgObject_setTalkPartner(param_0);
|
||||
if (i_partner != NULL) {
|
||||
dMsgObject_setTalkPartner(i_partner);
|
||||
}
|
||||
setNodeIndex(getInitNodeIndex(mFlow), param_3);
|
||||
} else {
|
||||
uVar4 = field_0x10;
|
||||
setInitValue(0);
|
||||
if (param_0 != NULL) {
|
||||
dMsgObject_setTalkPartner(param_0);
|
||||
if (i_partner != NULL) {
|
||||
dMsgObject_setTalkPartner(i_partner);
|
||||
}
|
||||
setNodeIndex(uVar4, param_3);
|
||||
}
|
||||
|
|
@ -568,9 +568,9 @@ asm int dMsgFlow_c::checkOpenDoor(fopAc_ac_c* param_0, int* param_1) {
|
|||
|
||||
/* 8024A2D8-8024A424 244C18 014C+00 0/0 21/21 78/78 .text
|
||||
* doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci */
|
||||
int dMsgFlow_c::doFlow(fopAc_ac_c* param_0, fopAc_ac_c** param_1, int flow) {
|
||||
int dMsgFlow_c::doFlow(fopAc_ac_c* param_0, fopAc_ac_c** param_1, int i_flow) {
|
||||
int check = false;
|
||||
u16 set_flow = flow;
|
||||
u16 set_flow = i_flow;
|
||||
dMsgObject_changeFlowGroup(mFlow);
|
||||
|
||||
if (dMsgObject_isKillMessageFlag()) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue