mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-25 15:25:07 -04:00
568 lines
24 KiB
C++
568 lines
24 KiB
C++
#ifndef D_A_PLAYER
|
|
#define D_A_PLAYER
|
|
|
|
#include "f_op/f_op_actor.h"
|
|
#include "d/d_particle.h"
|
|
#include "d/d_cc_d.h"
|
|
#include "d/d_item_data.h"
|
|
|
|
inline u8 dComIfGs_getSelectEquip(int i_no);
|
|
inline u8 dComIfGp_getMiniGameType();
|
|
|
|
class daPy_mtxFollowEcallBack_c : public dPa_levelEcallBack {
|
|
public:
|
|
void execute(JPABaseEmitter*);
|
|
void end();
|
|
JPABaseEmitter* makeEmitter(u16, MtxP, const cXyz*, const cXyz*);
|
|
JPABaseEmitter* makeEmitterColor(u16, MtxP, const cXyz*, const GXColor*, const GXColor*);
|
|
void setup(JPABaseEmitter* emitter, const cXyz*, const csXyz*, s8) { mpEmitter = emitter; }
|
|
|
|
JPABaseEmitter* getEmitter() { return mpEmitter; }
|
|
|
|
/* 0x04 */ JPABaseEmitter* mpEmitter;
|
|
/* 0x08 */ MtxP mpMtx;
|
|
}; // Size: 0x0C
|
|
|
|
STATIC_ASSERT(sizeof(daPy_mtxFollowEcallBack_c) == 0x0C);
|
|
|
|
class daPy_demo_c {
|
|
public:
|
|
enum {
|
|
DEMO_UNK00_e = 0x00,
|
|
DEMO_UNK01_e = 0x01,
|
|
DEMO_UNK02_e = 0x02,
|
|
DEMO_UNK03_e = 0x03,
|
|
DEMO_UNK04_e = 0x04,
|
|
DEMO_UNK05_e = 0x05,
|
|
DEMO_UNK06_e = 0x06,
|
|
DEMO_UNK08_e = 0x08,
|
|
DEMO_UNK09_e = 0x09,
|
|
DEMO_UNK0A_e = 0x0A,
|
|
DEMO_UNK0E_e = 0x0E,
|
|
DEMO_UNK0F_e = 0x0F,
|
|
DEMO_UNK10_e = 0x10,
|
|
DEMO_UNK11_e = 0x11,
|
|
DEMO_UNK12_e = 0x12,
|
|
DEMO_UNK14_e = 0x14,
|
|
DEMO_UNK17_e = 0x17,
|
|
DEMO_UNK18_e = 0x18,
|
|
DEMO_UNK1A_e = 0x1A,
|
|
DEMO_UNK1B_e = 0x1B,
|
|
DEMO_UNK1D_e = 0x1D,
|
|
DEMO_UNK1E_e = 0x1E,
|
|
DEMO_UNK1F_e = 0x1F,
|
|
DEMO_UNK22_e = 0x22,
|
|
DEMO_UNK25_e = 0x25,
|
|
DEMO_UNK27_e = 0x27,
|
|
DEMO_UNK2A_e = 0x2A,
|
|
DEMO_UNK2B_e = 0x2B,
|
|
DEMO_UNK2C_e = 0x2C,
|
|
DEMO_UNK2F_e = 0x2F,
|
|
DEMO_UNK33_e = 0x33,
|
|
DEMO_UNK35_e = 0x35,
|
|
DEMO_UNK38_e = 0x38,
|
|
DEMO_UNK39_e = 0x39,
|
|
DEMO_UNK3D_e = 0x3D,
|
|
DEMO_UNK3E_e = 0x3E,
|
|
DEMO_UNK40_e = 0x40,
|
|
DEMO_UNK44_e = 0x44,
|
|
DEMO_UNK48_e = 0x48,
|
|
DEMO_UNK4A_e = 0x4A,
|
|
DEMO_LAST_e = 0x4B,
|
|
DEMO_NEW_ANM0_e = 0x200,
|
|
};
|
|
|
|
void setDemoType(u16 pType) { mDemoType = pType; }
|
|
int getDemoType() const { return mDemoType; }
|
|
void setDemoMode(u32 mode) { mDemoMode = mode; }
|
|
u32 getDemoMode() const { return mDemoMode; }
|
|
int getParam1() const { return mParam1; }
|
|
s16 getTimer() const { return mTimer; }
|
|
void setTimer(s16 time) { mTimer = time; }
|
|
void decTimer() { mTimer--; }
|
|
void setOriginalDemoType() { setDemoType(3); }
|
|
void setSpecialDemoType() { setDemoType(5); }
|
|
void setSystemDemoType() { setDemoType(2); }
|
|
void setStick(f32 stick) { mStick = stick; }
|
|
void setMoveAngle(s16 angle) { mDemoMoveAngle = angle; }
|
|
s16 getMoveAngle() const { return mDemoMoveAngle; }
|
|
f32 getStick() { return mStick; }
|
|
int getParam0() const { return mParam0; }
|
|
void setParam0(int value) { mParam0 = value; }
|
|
void setParam1(int value) { mParam1 = value; }
|
|
void setParam2(int value) { mParam2 = value; }
|
|
|
|
private:
|
|
/* 0x00 */ u16 mDemoType;
|
|
/* 0x02 */ s16 mDemoMoveAngle;
|
|
/* 0x04 */ s16 mTimer;
|
|
/* 0x06 */ s16 mParam2;
|
|
/* 0x08 */ int mParam0;
|
|
/* 0x0C */ int mParam1;
|
|
/* 0x10 */ u32 mDemoMode;
|
|
/* 0x14 */ f32 mStick;
|
|
}; // Size: 0x18
|
|
|
|
class daPy_py_c : public fopAc_ac_c {
|
|
public:
|
|
enum daPy_FLG0 {
|
|
daPyFlg0_UNK1 = 0x00000001,
|
|
daPyFlg0_UNK2 = 0x00000002,
|
|
daPyFlg0_UNK4 = 0x00000004,
|
|
daPyFlg0_UNK8 = 0x00000008,
|
|
daPyFlg0_DEKU_SP_RETURN_FLG = 0x00000010,
|
|
daPyFlg0_UNK20 = 0x00000020,
|
|
daPyFlg0_CUT_AT_FLG = 0x00000040,
|
|
daPyFlg0_UNK80 = 0x00000080,
|
|
daPyFlg0_UNK100 = 0x00000100,
|
|
daPyFlg0_SHIP_DROP = 0x00000200,
|
|
daPyFlg0_UNK400 = 0x00000400,
|
|
daPyFlg0_PUSH_PULL_KEEP = 0x00000800,
|
|
daPyFlg0_HOVER_BOOTS = 0x00001000,
|
|
daPyFlg0_UNK4000 = 0x00004000,
|
|
daPyFlg0_UNK10000 = 0x00010000,
|
|
daPyFlg0_UNK20000 = 0x00020000,
|
|
daPyFlg0_NO_FALL_VOICE = 0x00040000,
|
|
daPyFlg0_SCOPE_CANCEL = 0x00080000,
|
|
daPyFlg0_PHOTO_BOX_CANCEL = 0x00080000, // Same as scope cancel
|
|
daPyFlg0_UNK100000 = 0x00100000,
|
|
daPyFlg0_UNK200000 = 0x00200000,
|
|
daPyFlg0_UNK400000 = 0x00400000,
|
|
daPyFlg0_UNK800000 = 0x00800000,
|
|
daPyFlg0_UNK1000000 = 0x01000000,
|
|
daPyFlg0_EQUIP_HEAVY_BOOTS = 0x02000000,
|
|
daPyFlg0_NO_DRAW = 0x08000000,
|
|
daPyFlg0_UNK10000000 = 0x10000000,
|
|
daPyFlg0_UNK20000000 = 0x20000000,
|
|
daPyFlg0_HEAVY_STATE = 0x40000000,
|
|
daPyFlg0_UNK80000000 = 0x80000000,
|
|
};
|
|
|
|
enum daPy_FLG1 {
|
|
daPyFlg1_EQUIP_DRAGON_SHIELD = 0x00000001,
|
|
daPyFlg1_NPC_CALL_COMMAND = 0x00000002,
|
|
daPyFlg1_UNK4 = 0x00000004,
|
|
daPyFlg1_CASUAL_CLOTHES = 0x00000008,
|
|
daPyFlg1_FORCE_VOMIT_JUMP = 0x00000010,
|
|
daPyFlg1_NPC_NOT_CHANGE = 0x00000040,
|
|
daPyFlg1_UNK80 = 0x00000080,
|
|
daPyFlg1_CONFUSE = 0x00000100,
|
|
daPyFlg1_UNK200 = 0x00000200,
|
|
daPyFlg1_UNK400 = 0x00000400,
|
|
daPyFlg1_FREEZE_STATE = 0x00000800,
|
|
daPyFlg1_SHIP_TACT = 0x00001000,
|
|
daPyFlg1_USE_ARROW_EFFECT = 0x00002000,
|
|
daPyFlg1_LETTER_READ_EYE_MOVE = 0x00004000,
|
|
daPyFlg1_UNK8000 = 0x00008000,
|
|
daPyFlg1_FORCE_VOMIT_JUMP_SHORT = 0x00010000,
|
|
daPyFlg1_FOREST_WATER_USE = 0x00020000,
|
|
daPyFlg1_UNK40000 = 0x00040000,
|
|
daPyFlg1_WATER_DROP = 0x00080000,
|
|
daPyFlg1_UNK100000 = 0x00100000,
|
|
daPyFlg1_UNK200000 = 0x00200000,
|
|
daPyFlg1_UNK800000 = 0x00800000,
|
|
daPyFlg1_UNK1000000 = 0x01000000,
|
|
daPyFlg1_VINE_CATCH = 0x02000000,
|
|
daPyFlg1_UNK4000000 = 0x04000000,
|
|
daPyFlg1_UNK8000000 = 0x08000000,
|
|
daPyFlg1_UNK10000000 = 0x10000000,
|
|
daPyFlg1_LAST_COMBO_WAIT = 0x20000000,
|
|
daPyFlg1_UNK40000000 = 0x40000000,
|
|
};
|
|
|
|
enum daPy_RFLG0 {
|
|
daPyRFlg0_UNK1 = 0x00000001,
|
|
daPyRFlg0_UNK2 = 0x00000002,
|
|
daPyRFlg0_ROPE_GRAB_RIGHT_HAND = 0x00000004,
|
|
daPyRFlg0_UNK8 = 0x00000008,
|
|
daPyRFlg0_UNK10 = 0x00000010,
|
|
daPyRFlg0_GRAB_UP_END = 0x00000020,
|
|
daPyRFlg0_AUTO_JUMP_LAND = 0x00000040,
|
|
daPyRFlg0_UNK80 = 0x00000080,
|
|
daPyRFlg0_UNK100 = 0x00000100,
|
|
daPyRFlg0_UNK200 = 0x00000200,
|
|
daPyRFlg0_RIGHT_FOOT_ON_GROUND = 0x00000400,
|
|
daPyRFlg0_LEFT_FOOT_ON_GROUND = 0x00000800,
|
|
daPyRFlg0_UNK1000 = 0x00001000,
|
|
daPyRFlg0_FRONT_ROLL_CRASH = 0x00002000,
|
|
daPyRFlg0_UNK4000 = 0x00004000,
|
|
daPyRFlg0_GRAB_UP_START = 0x00008000,
|
|
daPyRFlg0_ATTENTION_LOCK = 0x00010000,
|
|
daPyRFlg0_HAMMER_QUAKE = 0x00020000,
|
|
daPyRFlg0_UNK40000 = 0x00040000,
|
|
daPyRFlg0_UNK80000 = 0x00080000,
|
|
daPyRFlg0_POISON_CURSE = 0x00100000,
|
|
daPyRFlg0_UNK200000 = 0x00200000,
|
|
daPyRFlg0_GRAB_PUT_START = 0x00400000,
|
|
daPyRFlg0_UNK800000 = 0x00800000,
|
|
daPyRFlg0_TACT_INPUT = 0x01000000,
|
|
daPyRFlg0_FAIRY_USE = 0x02000000,
|
|
daPyRFlg0_UNK4000000 = 0x04000000,
|
|
daPyRFlg0_UNK8000000 = 0x08000000,
|
|
daPyRFlg0_UNK10000000 = 0x10000000,
|
|
daPyRFlg0_ARROW_SHOOT = 0x20000000,
|
|
daPyRFlg0_UNK40000000 = 0x40000000,
|
|
// 0x00000001 and 0x00000002 set in daPy_lk_c::dProcLastCombo
|
|
// 0x00001000 set in daPy_lk_c::procCrawlMove_init, checked in checkNoCollisionCorret__9daPy_lk_cFv
|
|
// 0x04000000 set in daPy_lk_c::procShipPaddle
|
|
};
|
|
|
|
enum daPy_FACE {
|
|
// Index in daPy_lk_c::mTexAnmIndexTable
|
|
daPyFace_TMABAA = 0x00,
|
|
daPyFace_TMABAA_TEUP = 0x01,
|
|
daPyFace_TMABAB = 0x02,
|
|
daPyFace_TMABAC = 0x03,
|
|
daPyFace_TMABACB = 0x04,
|
|
daPyFace_TMABACB_TEDW = 0x05,
|
|
daPyFace_TMABACC = 0x06,
|
|
daPyFace_TMABAD = 0x07,
|
|
daPyFace_TMABAD_TEDW = 0x08,
|
|
daPyFace_TMABAE = 0x09,
|
|
daPyFace_TMABAE_TEUP = 0x0A,
|
|
daPyFace_TMABAE_TEDW = 0x0B,
|
|
daPyFace_TMABAE_TEL = 0x0C,
|
|
daPyFace_TMABAE_TER = 0x0D,
|
|
daPyFace_TMABAF = 0x0E,
|
|
daPyFace_TMABAG = 0x0F,
|
|
daPyFace_TMABAH = 0x10,
|
|
daPyFace_TMABAI = 0x11,
|
|
daPyFace_TMABAJ_TEYORIME = 0x12,
|
|
daPyFace_TMABAD_TWAITPICKUP = 0x13,
|
|
daPyFace_TMABAC_THOOKSHOTJMP = 0x14,
|
|
daPyFace_TGRABP = 0x15,
|
|
daPyFace_TGRABUP = 0x16,
|
|
daPyFace_TGRABNG = 0x17,
|
|
daPyFace_TGRABTHROW = 0x18,
|
|
daPyFace_TGRABRE = 0x19,
|
|
daPyFace_TWALLWL = 0x1A,
|
|
daPyFace_TWALLWR = 0x1B,
|
|
daPyFace_TWALLPL = 0x1C,
|
|
daPyFace_TWALLPR = 0x1D,
|
|
daPyFace_TCUT = 0x1E,
|
|
daPyFace_TCUTEA = 0x1F,
|
|
daPyFace_TCUTEA_TECN = 0x20,
|
|
daPyFace_TEXCA1 = 0x21,
|
|
daPyFace_TEXCB1 = 0x22,
|
|
daPyFace_TJATTACK = 0x23,
|
|
daPyFace_TJATTACK_TEUP = 0x24,
|
|
daPyFace_TCUTTURNP = 0x25,
|
|
daPyFace_TCUTTURN = 0x26,
|
|
daPyFace_TMJMP = 0x27,
|
|
daPyFace_TMJMPC = 0x28,
|
|
daPyFace_TMROLLL = 0x29,
|
|
daPyFace_TMROLLR = 0x2A,
|
|
daPyFace_TMROLLLC = 0x2B,
|
|
daPyFace_TMROLLRC = 0x2C,
|
|
daPyFace_TMSTEPOVER = 0x2D,
|
|
daPyFace_TMSTEPOVERA = 0x2E,
|
|
daPyFace_TMSTEPOVERLAND = 0x2F,
|
|
daPyFace_TATNJL = 0x30,
|
|
daPyFace_TATNJR = 0x31,
|
|
daPyFace_TJMP = 0x32,
|
|
daPyFace_TROLLF = 0x33,
|
|
daPyFace_TROLLB = 0x34,
|
|
daPyFace_TROLLBLAND = 0x35,
|
|
daPyFace_TROLLFMIS = 0x36,
|
|
daPyFace_TFALL = 0x37,
|
|
daPyFace_TLANDDAMA = 0x38,
|
|
daPyFace_TLANDDAMAST = 0x39,
|
|
daPyFace_TDAM = 0x3A,
|
|
daPyFace_TDAMF = 0x3B,
|
|
daPyFace_TDAMFFUP = 0x3C,
|
|
daPyFace_TDAMFBUP = 0x3D,
|
|
daPyFace_TDAMFLUP = 0x3E,
|
|
daPyFace_TDAMFRUP = 0x3F,
|
|
daPyFace_TDAMDASH = 0x40,
|
|
daPyFace_TGUARD = 0x41,
|
|
daPyFace_TSLIDEF = 0x42,
|
|
daPyFace_TSLIDEFLAND = 0x43,
|
|
daPyFace_TSLIDEB = 0x44,
|
|
daPyFace_TSLIDEBLAND = 0x45,
|
|
daPyFace_TSWIMP = 0x46,
|
|
daPyFace_TSWIMING = 0x47,
|
|
daPyFace_TBOOMTHROW = 0x48,
|
|
daPyFace_TBOOMCATCH = 0x49,
|
|
daPyFace_TWALKPUSH = 0x4A,
|
|
daPyFace_TWALKPULL = 0x4B,
|
|
daPyFace_TVJMPCHA = 0x4C,
|
|
daPyFace_TVJMPCL = 0x4D,
|
|
daPyFace_TROPECLIMB = 0x4E,
|
|
daPyFace_TROPEDOWN = 0x4F,
|
|
daPyFace_TLADDERUPST = 0x50,
|
|
daPyFace_TLADDERDWST = 0x51,
|
|
daPyFace_TLADDERUPED = 0x52,
|
|
daPyFace_TLADDERDWED = 0x53,
|
|
daPyFace_THANGING = 0x54,
|
|
daPyFace_THANGUP = 0x55,
|
|
daPyFace_TLAVADAM = 0x56,
|
|
daPyFace_TCUTRE = 0x57,
|
|
daPyFace_TCUTTURNB = 0x58,
|
|
daPyFace_TWAITATOB = 0x59,
|
|
daPyFace_TCOMEOUT = 0x5A,
|
|
daPyFace_THOLDUP = 0x5B,
|
|
daPyFace_TWALLHOLDUP = 0x5C,
|
|
daPyFace_TITEMGET = 0x5D,
|
|
daPyFace_TSALTATION = 0x5E,
|
|
daPyFace_TWHO = 0x5F,
|
|
daPyFace_TPICKUP = 0x60,
|
|
daPyFace_TBOXOPENLINK = 0x61,
|
|
daPyFace_TBOXOPENSHORTLINK = 0x62,
|
|
daPyFace_TDIELONG = 0x63,
|
|
daPyFace_TSWIMDIE = 0x64,
|
|
daPyFace_TSURPRISED = 0x65,
|
|
daPyFace_TTURNBACK = 0x66,
|
|
daPyFace_TLOOKUP = 0x67,
|
|
daPyFace_TWAITQ = 0x68,
|
|
daPyFace_TGLAD = 0x69,
|
|
daPyFace_TCUTBOKO = 0x6A,
|
|
daPyFace_SHIP_JUMP1 = 0x6B,
|
|
daPyFace_SHIP_JUMP2 = 0x6C,
|
|
daPyFace_TUSEFANA = 0x6D,
|
|
daPyFace_TUSEFANB = 0x6E,
|
|
daPyFace_TUSEFANB2 = 0x6F,
|
|
daPyFace_TBOWWAIT = 0x70,
|
|
daPyFace_TVOMITJMP = 0x71,
|
|
daPyFace_TREST = 0x72,
|
|
daPyFace_TTAKE = 0x73,
|
|
daPyFace_TTAKELR = 0x74,
|
|
daPyFace_TSLIPICE = 0x75,
|
|
daPyFace_THAMSWINGA = 0x76,
|
|
daPyFace_THAMSWINGBPRE = 0x77,
|
|
daPyFace_THAMSWINGBHIT = 0x78,
|
|
daPyFace_THAMSWINGBEND = 0x79,
|
|
daPyFace_TSETBOOTS = 0x7A,
|
|
daPyFace_TDOOROPENALINK = 0x7B,
|
|
daPyFace_TDOOROPENBLINK = 0x7C,
|
|
daPyFace_TSEYYES = 0x7D,
|
|
daPyFace_TPRESENTATIONA = 0x7E,
|
|
daPyFace_TWINDL = 0x7F,
|
|
daPyFace_TWINDR = 0x80,
|
|
daPyFace_TPRESENTATIONB = 0x81,
|
|
daPyFace_TBINDRINKPRE = 0x82,
|
|
daPyFace_TBINDRINKING = 0x83,
|
|
daPyFace_TBINDRINKAFTER = 0x84,
|
|
daPyFace_TBINDRINKPRE2 = 0x85,
|
|
daPyFace_TBINDRINKING2 = 0x86,
|
|
daPyFace_TBINDRINKAFTER2 = 0x87,
|
|
daPyFace_TBINOPENPRE = 0x88,
|
|
daPyFace_TBINOPENA = 0x89,
|
|
daPyFace_TBINOPENB = 0x8A,
|
|
daPyFace_TBINSWING = 0x8B,
|
|
daPyFace_TBINGET = 0x8C,
|
|
daPyFace_TARROWRELORD = 0x8D,
|
|
daPyFace_TSURPRISEDB = 0x8E,
|
|
daPyFace_TFAN = 0x8F,
|
|
daPyFace_TNENRIKI = 0x90,
|
|
daPyFace_TMABAB_TEDL = 0x91,
|
|
daPyFace_TMABAH_TABEKOBE = 0x92,
|
|
daPyFace_TSETHYOINOMI = 0x93,
|
|
daPyFace_LINK_FREEZ = 0x94,
|
|
daPyFace_LINK_MOGAKI = 0x95,
|
|
daPyFace_TDAMBIRI = 0x96,
|
|
daPyFace_SALVLR = 0x97,
|
|
daPyFace_SALVWAIT = 0x98,
|
|
daPyFace_SALVBAD = 0x99,
|
|
daPyFace_SALVGOOD = 0x9A,
|
|
daPyFace_SEARESET = 0x9B,
|
|
daPyFace_TWARPIN = 0x9C,
|
|
daPyFace_TWARPOUT = 0x9D,
|
|
daPyFace_TPOWUPWAIT = 0x9E,
|
|
daPyFace_TPOWUP = 0x9F,
|
|
daPyFace_TCUTKESA = 0xA0,
|
|
daPyFace_TWARPOUTFIRST = 0xA1,
|
|
daPyFace_TDASHKAZE = 0xA2,
|
|
daPyFace_TIYAYA = 0xA3,
|
|
daPyFace_TFREEA = 0xA4,
|
|
daPyFace_TFREEB = 0xA5,
|
|
daPyFace_TFREED = 0xA6,
|
|
daPyFace_TTAKTKAZE = 0xA7,
|
|
daPyFace_TTAKTSIPPU = 0xA8,
|
|
daPyFace_TTAKTCHUYA = 0xA9,
|
|
daPyFace_TTAKTFUJIN = 0xAA,
|
|
daPyFace_TTAKTAYATSURI = 0xAB,
|
|
daPyFace_TTAKTCHISIN = 0xAC,
|
|
daPyFace_UNKNOWN = 0xAD, // Not an index, this is a special value checked in checkNormalFace()
|
|
};
|
|
|
|
/* 0x290 */ u8 mCutType;
|
|
/* 0x291 */ u8 mCutCount;
|
|
/* 0x292 */ u8 field_0x292[0x294 - 0x292];
|
|
/* 0x294 */ s16 mDamageWaitTimer;
|
|
/* 0x296 */ s16 mQuakeTimer;
|
|
/* 0x298 */ int mFace;
|
|
/* 0x29C */ u32 mNoResetFlg0;
|
|
/* 0x2A0 */ u32 mNoResetFlg1;
|
|
/* 0x2A4 */ u32 mResetFlg0;
|
|
/* 0x2A8 */ f32 mMaxNormalSpeed;
|
|
/* 0x2AC */ f32 mHeight;
|
|
/* 0x2B0 */ f32 field_0x2b0;
|
|
/* 0x2B4 */ csXyz mBodyAngle;
|
|
/* 0x2BA */ u8 field_0x2BA[0x2BC - 0x2BA];
|
|
/* 0x2BC */ cXyz mHeadTopPos;
|
|
/* 0x2C8 */ cXyz mSwordTopPos;
|
|
/* 0x2D4 */ cXyz mLeftHandPos;
|
|
/* 0x2E0 */ cXyz mRightHandPos;
|
|
/* 0x2EC */ cXyz mRopePos;
|
|
/* 0x2F8 */ cXyz field_0x2f8;
|
|
/* 0x304 */ daPy_demo_c mDemo;
|
|
/* 0x31C */ /* vtable */
|
|
|
|
f32 getSpeedF() const { return speedF; }
|
|
u8 getCutType() const { return mCutType; }
|
|
u8 getCutCount() const { return mCutCount; }
|
|
s16 getDamageWaitTimer() const { return mDamageWaitTimer; }
|
|
f32 getHeight() const { return mHeight; }
|
|
s16 getBodyAngleX() const { return mBodyAngle.x; }
|
|
s16 getBodyAngleY() const { return mBodyAngle.y; }
|
|
cXyz getHeadTopPos() const { return mHeadTopPos; }
|
|
cXyz* getHeadTopPosP() { return &mHeadTopPos; }
|
|
cXyz getSwordTopPos() const { return mSwordTopPos;}
|
|
cXyz getLeftHandPos() const { return mLeftHandPos; }
|
|
cXyz getRightHandPos() const { return mRightHandPos; }
|
|
cXyz getRopePos() const { return mRopePos; }
|
|
void getYPos() const {}
|
|
|
|
void changeDemoMode(u32 mode) { mDemo.setDemoMode(mode); }
|
|
void changeDemoMoveAngle(s16 angle) { mDemo.setMoveAngle(angle); }
|
|
void changeDemoParam0(int param0) { mDemo.setParam0(param0); }
|
|
void changeOriginalDemo() {
|
|
mDemo.setOriginalDemoType();
|
|
mDemo.setParam0(0);
|
|
}
|
|
void cancelOriginalDemo() {
|
|
mDemo.setSystemDemoType();
|
|
mDemo.setDemoMode(daPy_demo_c::DEMO_UNK01_e);
|
|
}
|
|
|
|
void onNoResetFlg0(daPy_FLG0 flag) { mNoResetFlg0 |= flag; }
|
|
void offNoResetFlg0(daPy_FLG0 flag) { mNoResetFlg0 &= ~flag; }
|
|
u32 checkNoResetFlg0(daPy_FLG0 flag) const { return mNoResetFlg0 & flag; }
|
|
bool getCutAtFlg() const { return checkNoResetFlg0(daPyFlg0_CUT_AT_FLG); }
|
|
void onPushPullKeep() { onNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP); }
|
|
void offPushPullKeep() { offNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP); }
|
|
bool checkEquipHoverBoots() const { return checkNoResetFlg0(daPyFlg0_HOVER_BOOTS); }
|
|
void onNoFallVoice() { onNoResetFlg0(daPyFlg0_NO_FALL_VOICE); }
|
|
void onScopeCancel() { onNoResetFlg0(daPyFlg0_SCOPE_CANCEL); }
|
|
void onPhotoBoxCancel() { onNoResetFlg0(daPyFlg0_PHOTO_BOX_CANCEL); }
|
|
bool checkEquipHeavyBoots() const { return checkNoResetFlg0(daPyFlg0_EQUIP_HEAVY_BOOTS); }
|
|
void onPlayerNoDraw() { onNoResetFlg0(daPyFlg0_NO_DRAW); }
|
|
void offPlayerNoDraw() { offNoResetFlg0(daPyFlg0_NO_DRAW); }
|
|
void onHeavyState() { onNoResetFlg0(daPyFlg0_HEAVY_STATE); }
|
|
void offHeavyState() { offNoResetFlg0(daPyFlg0_HEAVY_STATE); }
|
|
bool getHeavyState() { return checkNoResetFlg0(daPyFlg0_HEAVY_STATE); }
|
|
bool getHeavyStateAndBoots() { return checkNoResetFlg0(static_cast<daPy_FLG0>(daPyFlg0_HEAVY_STATE | daPyFlg0_EQUIP_HEAVY_BOOTS)); }
|
|
|
|
void onNoResetFlg1(daPy_FLG1 flag) { mNoResetFlg1 |= flag; }
|
|
void offNoResetFlg1(daPy_FLG1 flag) { mNoResetFlg1 &= ~flag; }
|
|
u32 checkNoResetFlg1(daPy_FLG1 flag) const { return mNoResetFlg1 & flag; }
|
|
bool checkEquipDragonShield() const { return checkNoResetFlg1(daPyFlg1_EQUIP_DRAGON_SHIELD); }
|
|
void onNpcCallCommand() { onNoResetFlg1(daPyFlg1_NPC_CALL_COMMAND); }
|
|
void onNpcCall() { onNoResetFlg1(daPyFlg1_NPC_CALL_COMMAND); }
|
|
void offNpcCallCommand() { offNoResetFlg1(daPyFlg1_NPC_CALL_COMMAND); }
|
|
bool checkNpcCallCommand() const { return checkNoResetFlg1(daPyFlg1_NPC_CALL_COMMAND); }
|
|
void onForceVomitJump() { onNoResetFlg1(daPyFlg1_FORCE_VOMIT_JUMP); }
|
|
void onNpcNotChange() { onNoResetFlg1(daPyFlg1_NPC_NOT_CHANGE); }
|
|
void offNpcNotChange() { offNoResetFlg1(daPyFlg1_NPC_NOT_CHANGE); }
|
|
bool checkNpcNotChange() const { return checkNoResetFlg1(daPyFlg1_NPC_NOT_CHANGE); }
|
|
void onConfuse() { onNoResetFlg1(daPyFlg1_CONFUSE); }
|
|
void offConfuse() { offNoResetFlg1(daPyFlg1_CONFUSE); }
|
|
bool checkConfuse() const { return checkNoResetFlg1(daPyFlg1_CONFUSE); }
|
|
bool checkFreezeState() const { return checkNoResetFlg1(daPyFlg1_FREEZE_STATE); }
|
|
bool checkUseArrowEffect() const { return checkNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT); }
|
|
void onUseArrowEffect() { onNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT); }
|
|
void offUseArrowEffect() { offNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT); }
|
|
void onLetterReadEyeMove() { onNoResetFlg1(daPyFlg1_LETTER_READ_EYE_MOVE); }
|
|
void onForceVomitJumpShort() { onNoResetFlg1(daPyFlg1_FORCE_VOMIT_JUMP_SHORT); }
|
|
bool checkForestWaterUse() const { return checkNoResetFlg1(daPyFlg1_FOREST_WATER_USE); }
|
|
void onWaterDrop() { onNoResetFlg1(daPyFlg1_WATER_DROP); }
|
|
void onVineCatch() { onNoResetFlg1(daPyFlg1_VINE_CATCH); }
|
|
bool checkLastComboWait() const { return checkNoResetFlg1(daPyFlg1_LAST_COMBO_WAIT); }
|
|
|
|
void onResetFlg0(daPy_RFLG0 flag) { mResetFlg0 |= flag; }
|
|
void offResetFlg0(daPy_RFLG0 flag) { mResetFlg0 &= ~flag; }
|
|
u32 checkResetFlg0(daPy_RFLG0 flag) const { return mResetFlg0 & flag; }
|
|
bool getRopeGrabRightHand() const { return checkResetFlg0(daPyRFlg0_ROPE_GRAB_RIGHT_HAND); }
|
|
bool getGrabUpEnd() const { return checkResetFlg0(daPyRFlg0_GRAB_UP_END); }
|
|
bool getAutoJumpLand() const { return checkResetFlg0(daPyRFlg0_AUTO_JUMP_LAND); }
|
|
bool getRightFootOnGround() const { return checkResetFlg0(daPyRFlg0_RIGHT_FOOT_ON_GROUND); }
|
|
bool getLeftFootOnGround() const { return checkResetFlg0(daPyRFlg0_LEFT_FOOT_ON_GROUND); }
|
|
bool getFootOnGround() const { return getRightFootOnGround() || getLeftFootOnGround(); }
|
|
bool checkFrontRollCrash() const { return checkResetFlg0(daPyRFlg0_FRONT_ROLL_CRASH); }
|
|
bool getGrabUpStart() const { return checkResetFlg0(daPyRFlg0_GRAB_UP_START); }
|
|
bool checkAttentionLock() const { return checkResetFlg0(daPyRFlg0_ATTENTION_LOCK); }
|
|
bool checkHammerQuake() const { return checkResetFlg0(daPyRFlg0_HAMMER_QUAKE); }
|
|
void onPoisonCurse() { onResetFlg0(daPyRFlg0_POISON_CURSE); }
|
|
bool getGrabPutStart() const { return checkResetFlg0(daPyRFlg0_GRAB_PUT_START); }
|
|
bool checkFairyUse() const { return checkResetFlg0(daPyRFlg0_FAIRY_USE); }
|
|
bool checkTactInput() const { return checkResetFlg0(daPyRFlg0_TACT_INPUT); }
|
|
bool checkArrowShoot() const { return checkResetFlg0(daPyRFlg0_ARROW_SHOOT); }
|
|
|
|
bool checkGrabWear() const { return field_0x2b0 < 0.0f; }
|
|
BOOL checkNormalSwordEquip() const {
|
|
return dComIfGs_getSelectEquip(0) == dItem_SWORD_e || checkSwordMiniGame();
|
|
}
|
|
BOOL checkMasterSwordEquip() const {
|
|
return dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_1_e ||
|
|
dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_2_e ||
|
|
dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_3_e;
|
|
}
|
|
BOOL checkFinalMasterSwordEquip() const {
|
|
return dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_3_e;
|
|
}
|
|
|
|
void setFace(daPy_FACE face) { mFace = face; }
|
|
|
|
BOOL checkSwordMiniGame() const { return dComIfGp_getMiniGameType() == 2; }
|
|
void checkBowMiniGame() const {}
|
|
void checkSoupPowerUp() const {}
|
|
void checkSubjectAccept() const {}
|
|
void getRopeJumpLand() const {}
|
|
void checkRopeForceEnd() const {}
|
|
|
|
virtual MtxP getLeftHandMatrix() = 0;
|
|
virtual MtxP getRightHandMatrix() = 0;
|
|
virtual f32 getGroundY() = 0;
|
|
virtual s32 getTactMusic() const { return -1; }
|
|
virtual int getTactTimerCancel() const { return 0; }
|
|
virtual BOOL checkPlayerGuard() const { return FALSE; }
|
|
virtual fopAc_ac_c* getGrabMissActor() { return NULL; }
|
|
virtual u32 checkPlayerFly() const { return 0; }
|
|
virtual BOOL checkFrontRoll() const { return FALSE; }
|
|
virtual BOOL checkBottleSwing() const { return FALSE; }
|
|
virtual BOOL checkCutCharge() const { return FALSE; }
|
|
virtual BOOL getBokoFlamePos(cXyz*) { return FALSE; }
|
|
virtual BOOL checkTactWait() const { return FALSE; }
|
|
virtual void setTactZev(fpc_ProcID, int, char*) {}
|
|
virtual void onDekuSpReturnFlg(u8) {}
|
|
virtual BOOL checkComboCutTurn() const { return false; }
|
|
virtual f32 getBaseAnimeFrameRate() = 0;
|
|
virtual f32 getBaseAnimeFrame() = 0;
|
|
virtual fpc_ProcID getItemID() const { return fpcM_ERROR_PROCESS_ID_e; }
|
|
virtual fpc_ProcID getThrowBoomerangID() const { return fpcM_ERROR_PROCESS_ID_e; }
|
|
virtual fpc_ProcID getGrabActorID() const { return fpcM_ERROR_PROCESS_ID_e; }
|
|
virtual BOOL checkGrabBarrel() { return FALSE; }
|
|
virtual u32 checkPlayerNoDraw() { return FALSE; }
|
|
virtual BOOL checkRopeTag() { return FALSE; }
|
|
virtual BOOL checkRopeReadyAnime() const { return FALSE; }
|
|
virtual void voiceStart(u32) {}
|
|
virtual void setOutPower(f32, s16, int) {}
|
|
virtual void onFrollCrashFlg(u32) {}
|
|
virtual MtxP getModelJointMtx(u16) { return NULL; }
|
|
virtual f32 getOldSpeedY() { return 0.0f; }
|
|
virtual BOOL setHookshotCarryOffset(fpc_ProcID, const cXyz*) { return FALSE; }
|
|
virtual void setPlayerPosAndAngle(cXyz*, s16) {}
|
|
virtual void setPlayerPosAndAngle(cXyz*, csXyz*) {}
|
|
virtual void setPlayerPosAndAngle(MtxP) {}
|
|
virtual BOOL setThrowDamage(cXyz*, s16, f32, f32, int) { return FALSE; }
|
|
virtual void changeTextureAnime(u16, u16, int) {}
|
|
virtual void cancelChangeTextureAnime() {}
|
|
|
|
void changePlayer(fopAc_ac_c*);
|
|
void objWindHitCheck(dCcD_Cyl*);
|
|
void setDoButtonQuake();
|
|
void stopDoButtonQuake(BOOL);
|
|
}; // Size: 0x320
|
|
|
|
#endif /* D_A_PLAYER */
|