e_sm2 equivalent (#2553)

* e_sm2 equivalent

* fix
This commit is contained in:
TakaRikka 2025-07-24 12:45:36 -07:00 committed by GitHub
parent aae19575bf
commit 53d9f65e0d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 1673 additions and 1814 deletions

View File

@ -1709,7 +1709,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01"), "d_a_e_sg"),
ActorRel(NonMatching, "d_a_e_sh"),
ActorRel(NonMatching, "d_a_e_sm"),
ActorRel(NonMatching, "d_a_e_sm2"),
ActorRel(Equivalent, "d_a_e_sm2"), # weak func order
ActorRel(NonMatching, "d_a_e_st"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_st_line"),
ActorRel(NonMatching, "d_a_e_sw"),

View File

@ -7,6 +7,28 @@
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
enum daE_SM2_TYPE {
TYPE_GREEN,
TYPE_RED,
TYPE_BLUE,
TYPE_YELLOW,
TYPE_PURPLE,
TYPE_RARE,
TYPE_BLACK,
TYPE_RANDOM,
};
enum daE_SM2_ACTION {
ACTION_NORMAL_MOVE,
ACTION_ATTACK,
ACTION_COMBINE,
ACTION_ROOF = 10,
ACTION_WATER,
ACTION_FAIL = 20,
};
/**
* @ingroup actors-enemies
* @class e_sm2_class
@ -15,90 +37,91 @@
* @details
*
*/
class e_sm2_class : public fopEn_enemy_c {
class e_sm2_class {
public:
bool checkYellow() { return field_0x5b7 == 3; }
bool checkYellow() { return type == TYPE_YELLOW; }
private:
/* 0x5AC */ request_of_phase_process_class mPhase;
/* 0x000 */ fopEn_enemy_c enemy;
/* 0x5AC */ request_of_phase_process_class phase;
/* 0x5B4 */ u8 field_0x5b4;
/* 0x5B5 */ u8 field_0x5B5[0x5B7 - 0x5B5];
/* 0x5B7 */ u8 field_0x5b7;
/* 0x5B5 */ u8 field_0x5b5;
/* 0x5B6 */ u8 field_0x5b6;
/* 0x5B7 */ u8 type;
/* 0x5B8 */ int field_0x5b8;
/* 0x5BC */ mDoExt_McaMorfSO* mpMorf;
/* 0x5C0 */ mDoExt_invisibleModel field_0x5c0;
/* 0x5C8 */ mDoExt_btkAnm* field_0x5c8;
/* 0x5CC */ mDoExt_McaMorfSO* field_0x5cc;
/* 0x5D0 */ mDoExt_invisibleModel field_0x5d0;
/* 0x5D8 */ u8 field_0x5d8;
/* 0x5D9 */ u8 field_0x5D9[0x5DC - 0x5D9];
/* 0x5DC */ Z2CreatureEnemy mSound;
/* 0x680 */ s16 field_0x680;
/* 0x682 */ s16 mAction;
/* 0x684 */ s16 mMode;
/* 0x686 */ s16 field_0x686;
/* 0x688 */ s16 field_0x688;
/* 0x68A */ u8 field_0x68A[0x68C - 0x68A];
/* 0x68C */ s16 field_0x68c;
/* 0x68E */ s16 field_0x68e;
/* 0x690 */ s16 mAngleToPlayer;
/* 0x692 */ u8 field_0x692[0x694 - 0x692];
/* 0x694 */ f32 mDistToPlayer;
/* 0x5BC */ mDoExt_McaMorfSO* modelMorf;
/* 0x5C0 */ mDoExt_invisibleModel invisModel;
/* 0x5C8 */ mDoExt_btkAnm* pbtk;
/* 0x5CC */ mDoExt_McaMorfSO* pieceModelMorf;
/* 0x5D0 */ mDoExt_invisibleModel pieceInvisModel;
/* 0x5D8 */ s8 isPiece;
/* 0x5DC */ Z2CreatureEnemy sound;
/* 0x680 */ s16 counter;
/* 0x682 */ s16 action;
/* 0x684 */ s16 mode;
/* 0x686 */ s16 timers[3];
/* 0x68C */ s16 invulernabilityTimer;
/* 0x68E */ s16 combine_off_timer;
/* 0x690 */ s16 angle_to_pl;
/* 0x694 */ f32 dist_to_pl;
/* 0x698 */ u8 field_0x698[0x6A4 - 0x698];
/* 0x6A4 */ s16 field_0x6a4;
/* 0x6A6 */ s16 field_0x6a6;
/* 0x6A8 */ u8 field_0x6a8;
/* 0x6A8 */ s8 field_0x6a8;
/* 0x6A9 */ u8 field_0x6a9;
/* 0x6AA */ u8 field_0x6aa;
/* 0x6AB */ u8 field_0x6AB[0x6AC - 0x6AB];
/* 0x6AC */ f32 field_0x6ac;
/* 0x6B0 */ f32 field_0x6b0;
/* 0x6B4 */ u32 field_0x6b4;
/* 0x6B8 */ f32 field_0x6b8;
/* 0x6BC */ f32 field_0x6bc;
/* 0x6C0 */ f32 field_0x6c0;
/* 0x6C4 */ f32 field_0x6c4;
/* 0x6C8 */ f32 field_0x6c8;
/* 0x6CC */ u8 field_0x6CC[0x6E8 - 0x6CC];
/* 0x6E8 */ f32 field_0x6e8;
/* 0x6EC */ u8 field_0x6EC[0x708 - 0x6EC];
/* 0x6B4 */ u32 shadowId;
/* 0x6B8 */ f32 color_R;
/* 0x6BC */ f32 color_G;
/* 0x6C0 */ f32 color_B;
/* 0x6C4 */ f32 color_alpha;
/* 0x6C8 */ f32 field_0x6c8[8];
/* 0x6E8 */ f32 field_0x6e8[8];
/* 0x708 */ cXyz field_0x708[8];
/* 0x768 */ csXyz field_0x768[8];
/* 0x798 */ cXyz field_0x798[8];
/* 0x798 */ cXyz jnt_pos[8];
/* 0x7F8 */ csXyz field_0x7f8[8];
/* 0x828 */ s16 field_0x828;
/* 0x82A */ u8 field_0x82A[0x82C - 0x82A];
/* 0x82C */ f32 field_0x82c;
/* 0x830 */ f32 field_0x830;
/* 0x834 */ f32 mSize;
/* 0x834 */ f32 size;
/* 0x838 */ f32 field_0x838;
/* 0x83C */ u8 field_0x83c;
/* 0x83D */ u8 field_0x83d;
/* 0x83C */ u8 sizetype;
/* 0x83D */ u8 is_roof;
/* 0x83E */ u8 field_0x83e;
/* 0x83F */ u8 field_0x83f;
/* 0x83F */ s8 field_0x83f;
/* 0x840 */ cXyz field_0x840;
/* 0x84C */ csXyz field_0x84c;
/* 0x852 */ u8 field_0x852[0x854 - 0x852];
/* 0x854 */ dBgS_AcchCir mAcchCir;
/* 0x894 */ dBgS_ObjAcch mAcch;
/* 0xA6C */ dCcD_Stts mColliderStatus;
/* 0xAA8 */ dCcD_Sph field_0xaa8[4];
/* 0xF88 */ u8 field_0xf88;
/* 0xF89 */ u8 field_0xF89[0xF8C - 0xF89];
/* 0xF8C */ dCcU_AtInfo mAtInfo;
/* 0xFB0 */ u8 field_0xFB0[0xFD0 - 0xFB0];
/* 0xFD0 */ int field_0xfd0;
/* 0xFD4 */ u8 field_0xfd4;
/* 0xFD5 */ u8 field_0xFD5[0xFD8 - 0xFD5];
/* 0x854 */ dBgS_AcchCir acchcir;
/* 0x894 */ dBgS_ObjAcch acch;
/* 0xA6C */ dCcD_Stts ccStts;
/* 0xAA8 */ dCcD_Sph ccSph[4];
/* 0xF88 */ s8 field_0xf88;
/* 0xF8C */ dCcU_AtInfo atInfo;
/* 0xFB0 */ u32 field_0xfb0[4][2];
/* 0xFD0 */ fpc_ProcID combine_actor_pid;
/* 0xFD4 */ s8 field_0xfd4;
/* 0xFD8 */ u32 field_0xfd8;
/* 0xFDC */ u8 field_0xfdc[0xFF0 - 0xFDC];
};
STATIC_ASSERT(sizeof(e_sm2_class) == 0xff0);
class daE_SM2_HIO_c {
class daE_SM2_HIO_c : public fOpAcm_HIO_entry_c {
public:
/* 80798B4C */ daE_SM2_HIO_c();
/* 8079CE94 */ ~daE_SM2_HIO_c();
/* 8079CE94 */ virtual ~daE_SM2_HIO_c() {}
void genMessage(JORMContext*);
/* 0x04 */ s16 unk_0x4;
/* 0x06 */ u8 merge_OFF;
/* 0x07 */ u8 unk_0x7;
/* 0x08 */ u8 color_debug_ON;
/* 0x0A */ s16 color_debug_R;
/* 0x0C */ s16 color_debug_G;
/* 0x0E */ s16 color_debug_B;
};

View File

@ -379,9 +379,8 @@ int daAlink_c::procKandelaarSwingInit() {
BOOL is_sm2 = name == PROC_E_SM2;
if (name == PROC_OBJ_OILTUBO ||
(name == PROC_TAG_SSDRINK &&
static_cast<daTag_SSDrink_c*>(catch_target_p)->checkShopOil()) ||
(is_sm2 && static_cast<e_sm2_class*>(catch_target_p)->checkYellow()))
(name == PROC_TAG_SSDRINK && ((daTag_SSDrink_c*)catch_target_p)->checkShopOil()) ||
(is_sm2 && ((e_sm2_class*)catch_target_p)->checkYellow()))
{
return procBottleSwingInit(catch_target_p, is_sm2);
}

File diff suppressed because it is too large Load Diff