mirror of https://github.com/zeldaret/tp.git
d_a_e_tk2 Matching (#2399)
* d_a_e_tk2 first pass * d_a_e_tk2 matching * d_a_e_tk, d_a_e_tk2 cleanup
This commit is contained in:
parent
0ab8dc2519
commit
c5f9d8dd9f
|
|
@ -1675,7 +1675,7 @@ config.libs = [
|
|||
ActorRel(Equivalent, "d_a_e_th"), # weak func order
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_e_th_ball"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_e_tk"),
|
||||
ActorRel(NonMatching, "d_a_e_tk2"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_e_tk2"),
|
||||
ActorRel(NonMatching, "d_a_e_tk_ball"),
|
||||
ActorRel(NonMatching, "d_a_e_tt"),
|
||||
ActorRel(NonMatching, "d_a_e_vt"),
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public:
|
|||
/* 0x6A1 */ s8 mTKBallSpawned;
|
||||
/* 0x6A4 */ u32 mHamonSet;
|
||||
/* 0x6A8 */ u8 field_0x6a8[4];
|
||||
/* 0x6AC */ fpc_ProcID mpBallID;
|
||||
/* 0x6AC */ fpc_ProcID mBallID;
|
||||
/* 0x6B0 */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x6F0 */ dBgS_ObjAcch mAcch;
|
||||
/* 0x8C8 */ dCcD_Stts mStts;
|
||||
|
|
|
|||
|
|
@ -1,26 +1,72 @@
|
|||
#ifndef D_A_E_TK2_H
|
||||
#define D_A_E_TK2_H
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
#include "d/d_bg_s_acch.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "d/d_cc_uty.h"
|
||||
#include "f_op/f_op_actor.h"
|
||||
|
||||
/**
|
||||
* @ingroup actors-enemies
|
||||
* @class e_tk2_class
|
||||
* @brief Fire Toadpoli
|
||||
*
|
||||
* @details
|
||||
*
|
||||
*
|
||||
* @details Fire Toadpoli in the Goron Mines Entrance.
|
||||
* Armored, two-legged frogs that spit Fireballs at Link.
|
||||
* They cannot swim, but will dive under the lava if Link
|
||||
* gets too close. They share most of the code with the
|
||||
* Water Toadpoli e_tk.
|
||||
*/
|
||||
|
||||
class e_tk2_class : public fopEn_enemy_c {
|
||||
private:
|
||||
/* 0x5ac */ u8 field_0x5ac[0xa50 - 0x5ac];
|
||||
public:
|
||||
/* 0x5AC */ request_of_phase_process_class mPhaseReq;
|
||||
/* 0x5B4 */ u8 mArg0;
|
||||
/* 0x5B5 */ u8 mArg1;
|
||||
/* 0x5B6 */ u8 mArg2;
|
||||
/* 0x5B7 */ u8 mArg3; /* Unused */
|
||||
/* 0x5B8 */ mDoExt_McaMorfSO* mpMorf;
|
||||
/* 0x5BC */ int mAnim;
|
||||
/* 0x5C0 */ Z2CreatureEnemy mSound;
|
||||
/* 0x664 */ f32 mAnimSpeed;
|
||||
/* 0x668 */ s16 mLifetime;
|
||||
/* 0x66A */ s16 mAction;
|
||||
/* 0x66C */ s16 mMode;
|
||||
/* 0x670 */ cXyz mPos;
|
||||
/* 0x67C */ s16 mSomeAngle;
|
||||
/* 0x67E */ u8 field18_0x67e[2];
|
||||
/* 0x680 */ s16 mPlayerAngleY;
|
||||
/* 0x684 */ f32 mPlayerDistanceLimit;
|
||||
/* 0x688 */ u8 field24_0x688[2];
|
||||
/* 0x68A */ s16 mActionTimer[3];
|
||||
/* 0x690 */ s16 mExecuteState;
|
||||
/* 0x692 */ s16 mInvincibilityTimer;
|
||||
/* 0x694 */ s8 mAttentionOFF;
|
||||
/* 0x695 */ s8 mTKBallSpawned;
|
||||
/* 0x698 */ fpc_ProcID mBallID;
|
||||
/* 0x69C */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x6DC */ dBgS_ObjAcch mAcch;
|
||||
/* 0x8B4 */ dCcD_Stts mStts;
|
||||
/* 0x8F0 */ dCcD_Sph mSph;
|
||||
/* 0xA28 */ dCcU_AtInfo mAtInfo;
|
||||
/* 0xA4C */ bool mInitHIO;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(e_tk2_class) == 0xa50);
|
||||
STATIC_ASSERT(sizeof(e_tk2_class) == 0xA50);
|
||||
|
||||
class daE_TK2_HIO_c {
|
||||
public:
|
||||
/* 807BA56C */ daE_TK2_HIO_c();
|
||||
/* 807BBD00 */ ~daE_TK2_HIO_c();
|
||||
/* 807BBD00 */ virtual ~daE_TK2_HIO_c() {};
|
||||
|
||||
/* 0x04 */ s8 field_0x04;
|
||||
/* 0x08 */ f32 mRadiusScale;
|
||||
/* 0x0C */ f32 mPlayerRange1;
|
||||
/* 0x10 */ f32 mPlayerRange2;
|
||||
/* 0x14 */ f32 mSpeedModifier1; /* Unused */
|
||||
/* 0x18 */ f32 mSpeedModifier2; /* Unused */
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daE_TK2_HIO_c) == 0x1C);
|
||||
|
||||
#endif /* D_A_E_TK2_H */
|
||||
|
|
|
|||
|
|
@ -347,7 +347,7 @@ static void e_tk_attack(e_tk_class* i_this) {
|
|||
case MODE_TK_APPEAR:
|
||||
if (pl_y_check(i_this)) {
|
||||
if ((int)i_this->mpMorf->getFrame() == 24) {
|
||||
i_this->mpBallID =
|
||||
i_this->mBallID =
|
||||
fopAcM_createChild(PROC_E_TK_BALL, fopAcM_GetID(i_this), 0, &i_this->eyePos,
|
||||
fopAcM_GetRoomNo(i_this), &i_this->shape_angle, 0, -1, 0);
|
||||
}
|
||||
|
|
@ -627,7 +627,7 @@ static int daE_TK_Execute(e_tk_class* i_this) {
|
|||
|
||||
if (i_this->mTKBallSpawned) {
|
||||
e_tk_ball_class* ball_actor =
|
||||
static_cast<e_tk_ball_class*>(fopAcM_SearchByID(i_this->mpBallID));
|
||||
static_cast<e_tk_ball_class*>(fopAcM_SearchByID(i_this->mBallID));
|
||||
if (ball_actor != NULL) {
|
||||
ball_actor->current.pos = i_this->eyePos;
|
||||
ball_actor->field_0x5ac[0x31C] = 0x0;
|
||||
|
|
@ -667,7 +667,6 @@ static int daE_TK_IsDelete(e_tk_class* i_this) {
|
|||
|
||||
/* 807B9C58-807B9CC0 001B58 0068+00 1/0 0/0 0/0 .text daE_TK_Delete__FP10e_tk_class */
|
||||
static int daE_TK_Delete(e_tk_class* i_this) {
|
||||
// fopAcM_GetID(i_this);
|
||||
dComIfG_resDelete(&i_this->mPhaseReq, "E_tk");
|
||||
if (i_this->mInitHIO) {
|
||||
hioInit = false;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue