mirror of
https://github.com/zeldaret/ss
synced 2026-05-23 06:54:20 -04:00
actorExecute 99%
This commit is contained in:
@@ -8,20 +8,20 @@ __dt__24sFState_c<11dAcEremly_c>Fv = .text:0x00000270; // type:function size:0x5
|
||||
__dt__27sFStateFct_c<11dAcEremly_c>Fv = .text:0x000002D0; // type:function size:0x6C
|
||||
__dt__80sStateMgr_c<11dAcEremly_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000340; // type:function size:0xA0
|
||||
__dt__50sFStateMgr_c<11dAcEremly_c,20sStateMethodUsr_FI_c>Fv = .text:0x000003E0; // type:function size:0xA4
|
||||
fn_177_490 = .text:0x00000490; // type:function size:0x58
|
||||
fn_177_4F0 = .text:0x000004F0; // type:function size:0x58
|
||||
fn_177_550 = .text:0x00000550; // type:function size:0x5C
|
||||
fn_177_5B0 = .text:0x000005B0; // type:function size:0xD8
|
||||
fn_177_690 = .text:0x00000690; // type:function size:0x104
|
||||
fn_177_7A0 = .text:0x000007A0; // type:function size:0x498
|
||||
__dt__15dShadowCircle_cFv = .text:0x00000490; // type:function size:0x58
|
||||
__dt__Q211dAcEremly_c10callback_cFv = .text:0x000004F0; // type:function size:0x58
|
||||
__dt__14dWaterEffect_cFv = .text:0x00000550; // type:function size:0x5C
|
||||
timingB__Q211dAcEremly_c10callback_cFUlPQ34nw4r3g3d13WorldMtxManipQ34nw4r3g3d6ResMdl = .text:0x000005B0; // type:function size:0xD8
|
||||
createHeap__11dAcEremly_cFv = .text:0x00000690; // type:function size:0x104
|
||||
actorCreate__11dAcEremly_cFv = .text:0x000007A0; // type:function size:0x498
|
||||
changeState__80sStateMgr_c<11dAcEremly_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000C40; // type:function size:0x10
|
||||
fn_177_C50 = .text:0x00000C50; // type:function size:0x10C
|
||||
fn_177_D60 = .text:0x00000D60; // type:function size:0x8
|
||||
fn_177_D70 = .text:0x00000D70; // type:function size:0x108C
|
||||
actorPostCreate__11dAcEremly_cFv = .text:0x00000C50; // type:function size:0x10C
|
||||
doDelete__11dAcEremly_cFv = .text:0x00000D60; // type:function size:0x8
|
||||
actorExecute__11dAcEremly_cFv = .text:0x00000D70; // type:function size:0x108C
|
||||
executeState__80sStateMgr_c<11dAcEremly_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001E00; // type:function size:0x10
|
||||
getStateID__80sStateMgr_c<11dAcEremly_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001E10; // type:function size:0x10
|
||||
fn_177_1E20 = .text:0x00001E20; // type:function size:0x1C
|
||||
fn_177_1E40 = .text:0x00001E40; // type:function size:0x24C
|
||||
calcTimer<Us>__4sLibFPUs_Us = .text:0x00001E20; // type:function size:0x1C
|
||||
draw__11dAcEremly_cFv = .text:0x00001E40; // type:function size:0x24C
|
||||
initializeState_Wait__11dAcEremly_cFv = .text:0x00002090; // type:function size:0x104
|
||||
executeState_Wait__11dAcEremly_cFv = .text:0x000021A0; // type:function size:0x478
|
||||
finalizeState_Wait__11dAcEremly_cFv = .text:0x00002620; // type:function size:0x4
|
||||
@@ -117,10 +117,10 @@ fn_177_8AC0 = .text:0x00008AC0; // type:function size:0x160
|
||||
fn_177_8C20 = .text:0x00008C20; // type:function size:0x36C
|
||||
fn_177_8F90 = .text:0x00008F90; // type:function size:0x3E0
|
||||
fn_177_9370 = .text:0x00009370; // type:function size:0xE8
|
||||
fn_177_9460 = .text:0x00009460; // type:function size:0x8
|
||||
fn_177_9470 = .text:0x00009470; // type:function size:0x4
|
||||
fn_177_9480 = .text:0x00009480; // type:function size:0x4
|
||||
fn_177_9490 = .text:0x00009490; // type:function size:0x8
|
||||
vt_0x88__11dAcEnBase_cFi = .text:0x00009460; // type:function size:0x8
|
||||
vt_0x84__11dAcEnBase_cFv = .text:0x00009470; // type:function size:0x4
|
||||
vt_0x80__11dAcEnBase_cFv = .text:0x00009480; // type:function size:0x4
|
||||
getObjectListEntry__11dAcEnBase_cFv = .text:0x00009490; // type:function size:0x8
|
||||
__dt__11dAcEremly_cFv = .text:0x000094A0; // type:function size:0x168
|
||||
build__27sFStateFct_c<11dAcEremly_c>FRC12sStateIDIf_c = .text:0x00009610; // type:function size:0x60
|
||||
dispose__27sFStateFct_c<11dAcEremly_c>FRP10sStateIf_c = .text:0x00009670; // type:function size:0xC
|
||||
@@ -196,27 +196,63 @@ lbl_177_data_29C = .data:0x0000029C; // type:object size:0x5 data:string
|
||||
lbl_177_data_2A4 = .data:0x000002A4; // type:object size:0x64
|
||||
jumptable_177_data_308 = .data:0x00000308; // type:object size:0x30 scope:local
|
||||
lbl_177_data_338 = .data:0x00000338; // type:object size:0xB data:string
|
||||
lbl_177_data_344 = .data:0x00000344; // type:object size:0x8C
|
||||
lbl_177_data_3D0 = .data:0x000003D0; // type:object size:0x30
|
||||
lbl_177_data_400 = .data:0x00000400; // type:object size:0x30
|
||||
lbl_177_data_430 = .data:0x00000430; // type:object size:0x18
|
||||
lbl_177_data_448 = .data:0x00000448; // type:object size:0x18
|
||||
lbl_177_data_460 = .data:0x00000460; // type:object size:0x18
|
||||
lbl_177_data_478 = .data:0x00000478; // type:object size:0xC
|
||||
lbl_177_data_484 = .data:0x00000484; // type:object size:0x64C
|
||||
__vt__11dAcEremly_c = .data:0x00000344; // type:object size:0x8C
|
||||
__vt__50sFStateMgr_c<11dAcEremly_c,20sStateMethodUsr_FI_c> = .data:0x000003D0; // type:object size:0x30
|
||||
__vt__80sStateMgr_c<11dAcEremly_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x00000400; // type:object size:0x30
|
||||
__vt__27sFStateFct_c<11dAcEremly_c> = .data:0x00000430; // type:object size:0x18
|
||||
__vt__24sFState_c<11dAcEremly_c> = .data:0x00000448; // type:object size:0x18
|
||||
__vt__Q211dAcEremly_c10callback_c = .data:0x00000460; // type:object size:0x18
|
||||
__vt__14dWaterEffect_c = .data:0x00000478; // type:object size:0xC
|
||||
__vt__15dShadowCircle_c = .data:0x00000484; // type:object size:0x64C
|
||||
lbl_177_data_AD0 = .data:0x00000AD0; // type:object size:0x34
|
||||
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
|
||||
lbl_177_bss_8 = .bss:0x00000008; // type:object size:0x10 data:4byte
|
||||
lbl_177_bss_18 = .bss:0x00000018; // type:object size:0x40 data:4byte
|
||||
lbl_177_bss_58 = .bss:0x00000058; // type:object size:0x80 data:4byte
|
||||
lbl_177_bss_D8 = .bss:0x000000D8; // type:object size:0x40 data:4byte
|
||||
lbl_177_bss_118 = .bss:0x00000118; // type:object size:0x100 data:4byte
|
||||
lbl_177_bss_218 = .bss:0x00000218; // type:object size:0x80 data:4byte
|
||||
lbl_177_bss_298 = .bss:0x00000298; // type:object size:0x40 data:4byte
|
||||
lbl_177_bss_2D8 = .bss:0x000002D8; // type:object size:0x140 data:4byte
|
||||
lbl_177_bss_418 = .bss:0x00000418; // type:object size:0x80 data:4byte
|
||||
lbl_177_bss_498 = .bss:0x00000498; // type:object size:0x80 data:4byte
|
||||
lbl_177_bss_518 = .bss:0x00000518; // type:object size:0x40 data:4byte
|
||||
lbl_177_bss_558 = .bss:0x00000558; // type:object size:0xB0 data:4byte
|
||||
lbl_177_bss_8 = .bss:0x00000008; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Wait__11dAcEremly_c = .bss:0x00000018; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_48 = .bss:0x00000048; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Walk__11dAcEremly_c = .bss:0x00000058; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_88 = .bss:0x00000088; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Run__11dAcEremly_c = .bss:0x00000098; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_C8 = .bss:0x000000C8; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Escape__11dAcEremly_c = .bss:0x000000D8; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_108 = .bss:0x00000108; // type:object size:0xC scope:local data:4byte
|
||||
StateID_EscapeDash__11dAcEremly_c = .bss:0x00000118; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_148 = .bss:0x00000148; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Wind__11dAcEremly_c = .bss:0x00000158; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_188 = .bss:0x00000188; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Hold__11dAcEremly_c = .bss:0x00000198; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_1C8 = .bss:0x000001C8; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Jump__11dAcEremly_c = .bss:0x000001D8; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_208 = .bss:0x00000208; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Fly__11dAcEremly_c = .bss:0x00000218; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_248 = .bss:0x00000248; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Damage__11dAcEremly_c = .bss:0x00000258; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_288 = .bss:0x00000288; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Sleep__11dAcEremly_c = .bss:0x00000298; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_2C8 = .bss:0x000002C8; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Scared__11dAcEremly_c = .bss:0x000002D8; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_308 = .bss:0x00000308; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Stun__11dAcEremly_c = .bss:0x00000318; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_348 = .bss:0x00000348; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Water__11dAcEremly_c = .bss:0x00000358; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_388 = .bss:0x00000388; // type:object size:0xC scope:local data:4byte
|
||||
StateID_Hear__11dAcEremly_c = .bss:0x00000398; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_3C8 = .bss:0x000003C8; // type:object size:0xC scope:local data:4byte
|
||||
StateID_NightSleepDemo__11dAcEremly_c = .bss:0x000003D8; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_408 = .bss:0x00000408; // type:object size:0xC scope:local data:4byte
|
||||
StateID_NightFoo__11dAcEremly_c = .bss:0x00000418; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_448 = .bss:0x00000448; // type:object size:0xC scope:local data:4byte
|
||||
StateID_NightReflectionFoo__11dAcEremly_c = .bss:0x00000458; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_488 = .bss:0x00000488; // type:object size:0xC scope:local data:4byte
|
||||
StateID_NightWait__11dAcEremly_c = .bss:0x00000498; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_4C8 = .bss:0x000004C8; // type:object size:0xC scope:local data:4byte
|
||||
StateID_NightWalk__11dAcEremly_c = .bss:0x000004D8; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_508 = .bss:0x00000508; // type:object size:0xC scope:local data:4byte
|
||||
StateID_NightRun__11dAcEremly_c = .bss:0x00000518; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_548 = .bss:0x00000548; // type:object size:0xC scope:local data:4byte
|
||||
StateID_NightRet__11dAcEremly_c = .bss:0x00000558; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_588 = .bss:0x00000588; // type:object size:0xC scope:local data:4byte
|
||||
StateID_NightJumpAttack__11dAcEremly_c = .bss:0x00000598; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_5C8 = .bss:0x000005C8; // type:object size:0xC scope:local data:4byte
|
||||
StateID_BirthWait__11dAcEremly_c = .bss:0x000005D8; // type:object size:0x30 data:4byte
|
||||
lbl_177_bss_608 = .bss:0x00000608; // type:object size:0x4 data:4byte
|
||||
lbl_177_bss_60C = .bss:0x0000060C; // type:object size:0x14 data:byte
|
||||
|
||||
+139
-1
@@ -1,14 +1,72 @@
|
||||
#ifndef D_A_E_REMLY_H
|
||||
#define D_A_E_REMLY_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/e/d_a_en_base.h"
|
||||
#include "d/col/bg/d_bg_s_acch.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "d/d_shadow.h"
|
||||
#include "m/m3d/m_anmtexpat.h"
|
||||
#include "m/m3d/m_mdl.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "s/s_State.hpp"
|
||||
#include "toBeSorted/d_d3d.h"
|
||||
#include "toBeSorted/d_emitter.h"
|
||||
|
||||
class dAcBomb_c;
|
||||
|
||||
class dAcEremly_c : public dAcEnBase_c {
|
||||
public:
|
||||
class callback_c : public m3d::callback_c {
|
||||
public:
|
||||
virtual ~callback_c() {}
|
||||
virtual void timingB(u32, nw4r::g3d::WorldMtxManip *, nw4r::g3d::ResMdl) override;
|
||||
|
||||
private:
|
||||
/* 0x04 */ mAng3_c mAng;
|
||||
/* 0x0C */ UNKWORD field_0x0C; // Guess
|
||||
};
|
||||
|
||||
enum State_e {
|
||||
STATE_0 = 0,
|
||||
STATE_1 = 1,
|
||||
STATE_2 = 2,
|
||||
STATE_3 = 3,
|
||||
STATE_4 = 4,
|
||||
STATE_5 = 5,
|
||||
STATE_6 = 6,
|
||||
STATE_7 = 7,
|
||||
STATE_8 = 8,
|
||||
STATE_9 = 9,
|
||||
STATE_10 = 10,
|
||||
STATE_11 = 11,
|
||||
STATE_12 = 12,
|
||||
STATE_13 = 13,
|
||||
STATE_14 = 14,
|
||||
STATE_15 = 15,
|
||||
STATE_16 = 16,
|
||||
STATE_17 = 17,
|
||||
STATE_18 = 18,
|
||||
STATE_19 = 19,
|
||||
STATE_20 = 20,
|
||||
|
||||
//
|
||||
FAKE_STATE_30 = 30,
|
||||
};
|
||||
|
||||
public:
|
||||
dAcEremly_c() : mStateMgr(*this) {}
|
||||
virtual ~dAcEremly_c() {}
|
||||
|
||||
virtual int doDelete() override;
|
||||
virtual int draw() override;
|
||||
virtual bool createHeap() override;
|
||||
virtual int actorCreate() override;
|
||||
virtual int actorPostCreate() override;
|
||||
virtual int actorExecute() override;
|
||||
|
||||
STATE_FUNC_DECLARE(dAcEremly_c, Wait);
|
||||
STATE_FUNC_DECLARE(dAcEremly_c, Walk);
|
||||
STATE_FUNC_DECLARE(dAcEremly_c, Run);
|
||||
@@ -34,8 +92,88 @@ public:
|
||||
STATE_FUNC_DECLARE(dAcEremly_c, NightJumpAttack);
|
||||
STATE_FUNC_DECLARE(dAcEremly_c, BirthWait);
|
||||
|
||||
STATE_MGR_DEFINE_UTIL_EXECUTESTATE(dAcEremly_c);
|
||||
STATE_MGR_DEFINE_UTIL_ISSTATE(dAcEremly_c);
|
||||
|
||||
private:
|
||||
/* 0x??? */ STATE_MGR_DECLARE(dAcEremly_c);
|
||||
void fn_177_6A40();
|
||||
|
||||
// Checks if Batreaux is Human
|
||||
bool fn_177_7330();
|
||||
|
||||
bool fn_177_75E0();
|
||||
|
||||
/** false -> comapres to camera
|
||||
* true -> compares to player */
|
||||
bool fn_177_7650(bool comparePlayer);
|
||||
|
||||
bool fn_177_7B10();
|
||||
|
||||
void fn_177_8520(bool);
|
||||
bool fn_177_8980(f32);
|
||||
bool fn_177_8AC0();
|
||||
|
||||
private:
|
||||
/* 0x378 */ STATE_MGR_DECLARE(dAcEremly_c);
|
||||
|
||||
/* 0x3B4 */ dShadowCircle_c mShadow;
|
||||
/* 0x3BC */ d3d::AnmMdlWrapper mMdl;
|
||||
/* 0x438 */ m3d::anmTexPat_c mTexPat;
|
||||
|
||||
/* 0x458 */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x3B4 */ dBgS_ObjAcch mAcch;
|
||||
/* 0x864 */ dCcD_Sph mSph;
|
||||
|
||||
/* 0x9B4 */ callback_c mMdlCallback;
|
||||
|
||||
/* 0x9C4 */ dEmitter_c mEmitters[2];
|
||||
|
||||
/* 0xA2C */ dAcRef_c<dAcBase_c> mRef1; // Temporary until type known
|
||||
/* 0xA38 */ dAcRef_c<dAcBomb_c> mNearbyBombRef;
|
||||
|
||||
/* 0xA44 */ u8 _A44[0xA5C - 0xA44];
|
||||
|
||||
/* 0xA5C */ dWaterEffect_c mWaterEffect;
|
||||
|
||||
/* 0xAA4 */ mVec3_c field_0xAA4;
|
||||
|
||||
/* 0xAB0 */ u8 _AB0[0xAF8 - 0xAB0];
|
||||
|
||||
/* 0xAF8 */ mVec3_c field_0xAF8;
|
||||
|
||||
/* 0xB04 */ u8 _B04[0xB10 - 0xB04];
|
||||
/* 0xB10 */ f32 field_0xB10;
|
||||
/* 0xB14 */ u8 _B14[0xB1E - 0xB14];
|
||||
/* 0xB1E */ mAng3_c field_0xB1E;
|
||||
/* 0xB24 */ s16 field_0xB24;
|
||||
/* 0xB26 */ s16 field_0xB26;
|
||||
/* 0xB28 */ u8 _B28[0xB38 - 0xB28];
|
||||
/* 0xB38 */ f32 field_0xB38;
|
||||
/* 0xB3C */ f32 field_0xB3C;
|
||||
/* 0xB40 */ f32 field_0xB40;
|
||||
/* */ u8 _B44[0xB48 - 0xB44];
|
||||
/* 0xB48 */ u16 field_0xB48;
|
||||
/* */ u8 _B4A[0xB4E - 0xB4A];
|
||||
/* 0xB4E */ u16 field_0xB4E;
|
||||
/* */ u8 _B50[0xB52 - 0xB50];
|
||||
/* 0xB52 */ u16 field_0xB52;
|
||||
/* 0xB54 */ u16 field_0xB54;
|
||||
/* 0xB56 */ u16 field_0xB56;
|
||||
/* 0xB58 */ u16 field_0xB58;
|
||||
/* */ u8 _B56[0xB60 - 0xB5A];
|
||||
/* 0xB60 */ u8 field_0xB60; // Some State representation
|
||||
/* 0xB61 */ u8 field_0xB61;
|
||||
/* */ u8 _B62;
|
||||
/* */ u8 _B63;
|
||||
/* 0xB64 */ u8 field_0xB64;
|
||||
/* */ u8 _B65;
|
||||
/* 0xB66 */ u8 field_0xB66;
|
||||
/* */ u8 _B67;
|
||||
/* 0xB68 */ u8 field_0xB68;
|
||||
/* 0xB69 */ u8 field_0xB69;
|
||||
/* 0xB6A */ u8 field_0xB6A;
|
||||
/* 0xB6B */ u8 field_0xB6B;
|
||||
/* 0xB6C */ u8 field_0xB6C;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/a/obj/d_a_obj_bomb.h"
|
||||
#include "d/d_cc.h"
|
||||
#include "m/m3d/m_mdl.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_vec.h"
|
||||
|
||||
@@ -22,6 +23,7 @@ public:
|
||||
INTERACT_0x4 = (1 << 2),
|
||||
INTERACT_0x40 = (1 << 6),
|
||||
INTERACT_0x1000 = (1 << 12),
|
||||
INTERACT_0x2000 = (1 << 13),
|
||||
};
|
||||
|
||||
public:
|
||||
@@ -71,8 +73,8 @@ public:
|
||||
int fn_8002fde0(cCcD_Obj &mCc, u16 *pTgOut);
|
||||
|
||||
// Returns 0-3 based on collision
|
||||
// 2
|
||||
int fn_800301b0(const mVec3_c &pos, mAng ang, bool, f32);
|
||||
void fn_80030400(m3d::mdl_c &, u8, bool, u8);
|
||||
void fn_800306d0();
|
||||
void fn_80030700();
|
||||
void fn_80030c20(u32 flags, f32, f32, f32, f32);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef D_A_PLAYER_ACT_H
|
||||
#define D_A_PLAYER_ACT_H
|
||||
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/obj/d_a_obj_bomb.h"
|
||||
#include "d/d_player_base.h"
|
||||
#include "m/m_vec.h"
|
||||
|
||||
@@ -413,7 +415,7 @@ public:
|
||||
/* vt 0x2A8 */ virtual void lookTowardItem() {}
|
||||
/* vt 0x2AC */ virtual void vt_0x2AC() {}
|
||||
/* vt 0x2B0 */ virtual void vt_0x2B0() {}
|
||||
/* vt 0x2B4 */ virtual void triggerMoveEventMaybe(u32, u32, u32, const mVec3_c *, const mAng&, u32, u32) {}
|
||||
/* vt 0x2B4 */ virtual void triggerMoveEventMaybe(u32, u32, u32, const mVec3_c *, const mAng &, u32, u32) {}
|
||||
/* vt 0x2B8 */ virtual void setActorRef9() {}
|
||||
/* vt 0x2BC */ virtual void unlinkActorRef9() {}
|
||||
/* vt 0x2C0 */ virtual bool vt_0x2C0() {
|
||||
@@ -654,6 +656,9 @@ public:
|
||||
return sCurrentSword;
|
||||
}
|
||||
|
||||
// Checks through beetle actor references and
|
||||
static dAcBomb_c *getBombWithinRadius(dAcBase_c *, const mVec3_c &, f32);
|
||||
|
||||
static bool isInEvent();
|
||||
bool isAttackingLeft() const;
|
||||
bool isAttackingRight() const;
|
||||
|
||||
@@ -207,7 +207,7 @@ private:
|
||||
}
|
||||
|
||||
public:
|
||||
dWaterEffect_c() : mIsInWater(1), mIsSmall(false) {}
|
||||
dWaterEffect_c() : mIsInWater(true), mIsSmall(false) {}
|
||||
virtual ~dWaterEffect_c() {}
|
||||
|
||||
void init(dAcObjBase_c *, f32 height, f32 scale, f32 depth);
|
||||
|
||||
@@ -1,5 +1,29 @@
|
||||
#include "d/a/e/d_a_e_remly.h"
|
||||
|
||||
#include "c/c_counter.h"
|
||||
#include "c/c_math.h"
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/a/obj/d_a_obj_bomb.h"
|
||||
#include "d/col/bg/d_bg_s.h"
|
||||
#include "d/col/c/c_cc_d.h"
|
||||
#include "d/col/cc/d_cc_s.h"
|
||||
#include "d/d_linkage.h"
|
||||
#include "f/f_base.h"
|
||||
#include "m/m3d/m_fanm.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_quat.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "nw4r/g3d/res/g3d_resmdl.h"
|
||||
#include "nw4r/g3d/res/g3d_resnode.h"
|
||||
#include "s/s_Math.h"
|
||||
#include "toBeSorted/attention.h"
|
||||
#include "toBeSorted/d_emitter.h"
|
||||
#include "toBeSorted/event_manager.h"
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(E_REMLY, dAcEremly_c, fProfile::E_REMLY, 0xE1, 0, 3);
|
||||
|
||||
STATE_DEFINE(dAcEremly_c, Wait);
|
||||
@@ -27,6 +51,311 @@ STATE_DEFINE(dAcEremly_c, NightRet);
|
||||
STATE_DEFINE(dAcEremly_c, NightJumpAttack);
|
||||
STATE_DEFINE(dAcEremly_c, BirthWait);
|
||||
|
||||
void dAcEremly_c::callback_c::timingB(u32, nw4r::g3d::WorldMtxManip *, nw4r::g3d::ResMdl) {}
|
||||
|
||||
bool dAcEremly_c::createHeap() {
|
||||
nw4r::g3d::ResFile res(getOarcResFile("Remly"));
|
||||
}
|
||||
|
||||
int dAcEremly_c::actorCreate() {}
|
||||
int dAcEremly_c::actorPostCreate() {}
|
||||
|
||||
int dAcEremly_c::doDelete() {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcEremly_c::actorExecute() {
|
||||
mHealth = 100;
|
||||
nw4r::g3d::ResMdl resMdl = mMdl.getModel().getResMdl();
|
||||
|
||||
mStateMgr.executeState();
|
||||
if (mStateMgr.isState(StateID_BirthWait)) {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
if (field_0xB60 == 32) {
|
||||
mSpeed = 0.f;
|
||||
|
||||
if (mMdl.getAnm().isStop()) {
|
||||
mMdl.setAnm("RemlyWaitStand", m3d::PLAY_MODE_4, 4.f);
|
||||
}
|
||||
field_0xB60 = 0;
|
||||
field_0xB66 = 1;
|
||||
field_0xB48 = 48.f + cM::rndF(48.f);
|
||||
field_0xB6A = 1;
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
}
|
||||
|
||||
if (!isState(StateID_Hold)) {
|
||||
mSph.OnCoSet();
|
||||
}
|
||||
|
||||
if ((cCounter_c::GetGameFrame() & 0xF) == 0) {
|
||||
dAcBomb_c *pBomb = dAcPy_c::getBombWithinRadius(this, mPosition, 600.f);
|
||||
if (pBomb != nullptr) {
|
||||
mNearbyBombRef.link(pBomb);
|
||||
field_0xB6C = 1;
|
||||
} else {
|
||||
mNearbyBombRef.unlink();
|
||||
}
|
||||
}
|
||||
|
||||
if (isState(StateID_EscapeDash) || isState(StateID_Water) || isState(StateID_Scared)) {
|
||||
if (fn_177_7650(false)) {
|
||||
if (fn_177_7330()) {
|
||||
deleteRequest();
|
||||
return SUCCEEDED;
|
||||
}
|
||||
mStateMgr.changeState(StateID_BirthWait);
|
||||
}
|
||||
}
|
||||
|
||||
if (0 == sLib::calcTimer(&field_0xB4E)) {
|
||||
s32 damageTypeMaybe = fn_8002fde0(mSph, nullptr);
|
||||
switch (damageTypeMaybe) {
|
||||
case 7: {
|
||||
if (isState(StateID_Fly) && field_0xB60 != 20) {
|
||||
if (field_0xB60 == 16) {
|
||||
mMdl.setAnm("RemlyFlyDamage", m3d::PLAY_MODE_4, 4.f);
|
||||
field_0xB60 = 17;
|
||||
field_0xB4E = 48;
|
||||
}
|
||||
} else {
|
||||
if (field_0xB60 == 6) {
|
||||
mMdl.setAnm("RemlySwimDamage", m3d::PLAY_MODE_4, 4.f);
|
||||
field_0xB60 = 8;
|
||||
} else {
|
||||
mSph.ClrAtSet();
|
||||
mStateMgr.changeState(StateID_Wind);
|
||||
}
|
||||
}
|
||||
} break;
|
||||
case 12: {
|
||||
if (!isState(StateID_Fly) && field_0xB60 != 6 && field_0xB60 != 11) {
|
||||
if (mSph.ChkCoHit() && mSph.ChkTgAtHitType(AT_TYPE_0x80000 | AT_TYPE_SLINGSHOT)) {
|
||||
mAngle.y = getXZAngleToPlayer();
|
||||
mSpeed = -15.f;
|
||||
mStateMgr.changeState(StateID_Stun);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// fallthrough
|
||||
default: {
|
||||
if (damageTypeMaybe != 0) {
|
||||
field_0xB52 = 8;
|
||||
field_0xB4E = 8;
|
||||
dJEffManager_c::spawnHitMarkEffect(6, mSph, nullptr, true);
|
||||
|
||||
if (isState(StateID_Fly) && field_0xB60 != 20) {
|
||||
if (field_0xB60 == 16) {
|
||||
mMdl.setAnm("RemlyFlyDamage", m3d::PLAY_MODE_4, 4.f);
|
||||
field_0xB60 = 17;
|
||||
}
|
||||
} else if (field_0xB60 == 6 || field_0xB60 == 8) {
|
||||
mMdl.setAnm("RemlySwimDamage", m3d::PLAY_MODE_4, 4.f);
|
||||
field_0xB60 = 8;
|
||||
} else {
|
||||
if (field_0xB64 != 0) {
|
||||
field_0xB64--;
|
||||
if (mSph.ChkTgHit() && mSph.ChkTgAtHitType(AT_TYPE_BOMB | AT_TYPE_ARROW)) {
|
||||
field_0xB64 = 0;
|
||||
}
|
||||
}
|
||||
field_0xB6A = 0;
|
||||
mSph.ClrAtSet();
|
||||
|
||||
field_0xB68 = 1;
|
||||
field_0xB6B = 0;
|
||||
|
||||
if (isState(StateID_Scared)) {
|
||||
field_0xB6B = 1;
|
||||
}
|
||||
|
||||
mStateMgr.changeState(StateID_Damage);
|
||||
}
|
||||
}
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!isState(StateID_Hold)) {
|
||||
field_0xAA4 = mPosition;
|
||||
calcVelocity();
|
||||
mPosition += mVelocity;
|
||||
mPosition += mStts.GetCcMove();
|
||||
mPosition += field_0xAF8;
|
||||
field_0xAF8 *= 0.7f;
|
||||
}
|
||||
|
||||
if (fn_177_7330()) {
|
||||
if (field_0xB64 == 0 || fn_177_8AC0()) {
|
||||
if (field_0xB40 != 1.0f) {
|
||||
field_0xB54 = 7;
|
||||
field_0xB40 = 1.f;
|
||||
}
|
||||
} else {
|
||||
if (field_0xB40 != 1.3f) {
|
||||
field_0xB54 = 7;
|
||||
field_0xB40 = 1.3f;
|
||||
}
|
||||
}
|
||||
|
||||
if (0 != sLib::calcTimer(&field_0xB54)) {
|
||||
sLib::addCalcScaledDiff(&field_0xB10, field_0xB40, 1.f, 0.05f);
|
||||
}
|
||||
}
|
||||
|
||||
mScale.set(field_0xB10, field_0xB10, field_0xB10);
|
||||
|
||||
mMdl.getModel().setScale(mScale);
|
||||
mMdl.play();
|
||||
if (!isState(StateID_Hold)) {
|
||||
mAcch.CrrPos(*dBgS::GetInstance());
|
||||
mWaterEffect.execute(mAcch.GetWtrGroundH(), mAcch.GetGroundH());
|
||||
} else {
|
||||
mLinkage.bushTpFunc(mAcch);
|
||||
}
|
||||
|
||||
if (!isState(StateID_Hold) && !isState(StateID_NightSleepDemo) && !isState(StateID_Damage) &&
|
||||
!isState(StateID_Fly) && !isState(StateID_Jump)) {
|
||||
sLib::addCalcAngle(mRotation.y.ref(), mAngle.y, 2, 0x800);
|
||||
}
|
||||
|
||||
if (!isState(StateID_Fly) && !isState(StateID_Hold) && !isState(StateID_BirthWait) && !isState(StateID_Water)) {
|
||||
if (!mAcch.ChkGndHit()) {
|
||||
if (fn_177_8980(100.f) && field_0xB58 == 0) {
|
||||
field_0xB58 = 1;
|
||||
}
|
||||
if (field_0xB58 != 0) {
|
||||
if (field_0xB61 == 1 && !fn_177_75E0() && EventManager::isInEvent()) {
|
||||
setActorProperty(AC_PROP_0x1);
|
||||
mPosition.set(mStartingPos.x, mStartingPos.y, mStartingPos.z);
|
||||
mRotation.y = mStartingRot.y;
|
||||
mAngle.y = mStartingRot.y;
|
||||
mStateMgr.changeState(StateID_Sleep);
|
||||
}
|
||||
field_0xB58++;
|
||||
// Why cast?
|
||||
if ((s32)field_0xB58 > 30) {
|
||||
mStateMgr.changeState(StateID_Fly);
|
||||
}
|
||||
}
|
||||
|
||||
field_0xB38 = mPosition.y;
|
||||
} else {
|
||||
sLib::chase(&field_0xB38, mPosition.y, 10.f);
|
||||
fn_177_8520(false);
|
||||
|
||||
if (field_0xB24 != 0 || field_0xB26 != 0) {
|
||||
field_0xB38 = mPosition.y;
|
||||
}
|
||||
field_0xB58 = 0;
|
||||
}
|
||||
} else {
|
||||
field_0xB26 = 0;
|
||||
field_0xB24 = 0;
|
||||
field_0xB38 = mPosition.y + field_0xB3C;
|
||||
}
|
||||
|
||||
if (!fn_177_7B10() && isState(StateID_Water)) {
|
||||
field_0xB6B = 1;
|
||||
}
|
||||
|
||||
sLib::addCalcAngle(field_0xB1E.x.ref(), field_0xB24, 2, 0x1000);
|
||||
sLib::addCalcAngle(field_0xB1E.z.ref(), field_0xB26, 2, 0x1000);
|
||||
|
||||
mWorldMtx.transS(mPosition.x, field_0xB38, mPosition.z);
|
||||
|
||||
mWorldMtx.XrotM(field_0xB1E.x);
|
||||
mWorldMtx.ZrotM(field_0xB1E.z);
|
||||
mWorldMtx.ZXYrotM(mRotation);
|
||||
|
||||
mMdl.getModel().setLocalMtx(mWorldMtx);
|
||||
mMdl.getModel().calc(false);
|
||||
fn_177_6A40();
|
||||
|
||||
f32 radius = 40.f + mAng(0);
|
||||
mVec3_c center;
|
||||
|
||||
center.x = mPosition.x;
|
||||
center.y = mPosition.y;
|
||||
center.z = mPosition.z;
|
||||
|
||||
center.y += (30.f + mAng(0));
|
||||
|
||||
mSph.SetC(center);
|
||||
if (isState(StateID_Fly)) {
|
||||
mMtx_c m;
|
||||
mMdl.getModel().getNodeWorldMtx(resMdl.GetResNode("backbone3").GetID(), m);
|
||||
m.getTranslation(center);
|
||||
mSph.SetC(center);
|
||||
}
|
||||
mSph.SetR(radius * field_0xB10);
|
||||
|
||||
dCcS::GetInstance()->Set(&mSph);
|
||||
|
||||
if (!(fn_177_7330() && field_0xB64) // Check Batreaux Human
|
||||
&& !(isState(StateID_Hold) || field_0xB60 == 6) // Hold
|
||||
&& !isState(StateID_Stun) && !isState(StateID_Jump)) {
|
||||
AttentionManager::GetInstance()->addPickUpTarget(*this, 3.f * radius * field_0xB10);
|
||||
if (mLinkage.checkConnection(dLinkage_c::CONNECTION_1)) {
|
||||
mStateMgr.changeState(StateID_Hold);
|
||||
}
|
||||
}
|
||||
|
||||
if (field_0xB60 == 7) {
|
||||
mMtx_c m;
|
||||
mMdl.getModel().getNodeWorldMtx(resMdl.GetResNode("backbone3").GetID(), m);
|
||||
m.getTranslation(center);
|
||||
|
||||
mEmitters[1].holdEffect(PARTICLE_RESOURCE_ID_MAPPING_859_, center, nullptr, nullptr, nullptr, nullptr);
|
||||
}
|
||||
|
||||
mPositionCopy2 = mPosition;
|
||||
mPositionCopy2.y += 30.f;
|
||||
|
||||
mPositionCopy3 = mPositionCopy2;
|
||||
mPositionCopy3.y += 50.f;
|
||||
|
||||
if (isState(StateID_Fly)) {
|
||||
mPositionCopy3.y += 50.f;
|
||||
}
|
||||
|
||||
if (!isState(StateID_Hold)) {
|
||||
if (!fn_177_7330()) {
|
||||
setInteractionFlags(INTERACT_0x2000);
|
||||
}
|
||||
fn_80030c20(3, 600.f, radius, -400.f, 400.f);
|
||||
}
|
||||
|
||||
sLib::calcTimer(&field_0xB52);
|
||||
fn_80030400(mMdl.getModel(), 100, false, field_0xB52);
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcEremly_c::draw() {
|
||||
if (mStateMgr.isState(StateID_BirthWait)) {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
if (mStateMgr.isState(StateID_Fly)) {
|
||||
if (EventManager::isInEvent()) {
|
||||
if (EventManager::isCurrentEvent("RescuePlayer") || EventManager::isCurrentEvent("RescuePlayerToUpward")) {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m3d::smdl_c &mdl = mMdl.getModel();
|
||||
drawModelType1(&mdl);
|
||||
|
||||
static mQuat_c shadow = mQuat_c(mVec3_c(0, 70.f + mAng(0), 0), 290.f + mAng(0));
|
||||
fn_8002edb0(mShadow, mdl, &shadow, -1, -1, mPosition.y - mAcch.GetGroundH());
|
||||
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
void dAcEremly_c::initializeState_Wait() {}
|
||||
void dAcEremly_c::executeState_Wait() {}
|
||||
void dAcEremly_c::finalizeState_Wait() {}
|
||||
|
||||
Reference in New Issue
Block a user