mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-05 01:19:11 -04:00
d_a_obj_hha 100% (#688)
* daObjHhaPart_c : progress on init_data, set_mdl_area, set_bgw, init_mtx * daObjHhaSplash_c::create_s match * daObjHhaYgush_c::create_area match * daObjHhaYgush_c::init_data match * daObjHhaYgush_c::init_mtx match * daObjHhaYgush_c::draw match * daObjHha_c class definition * exe_normal & draw_normal match * daObjHha_c::create_heap match * daObjHha_c::_create match * daObjHha_c::_delete almost match * daObjHha_c::check_sw * daObjHha_c::set_tex match * daObjHha_c::init_mtx match * daObjHha_c::get_water_h * daObjHha_c::set_splash_bottom_* & daObjHha_get_r match * daObjHha_c::set_splash_bottom_stop_r match * daObjHha_c::part_manager almost match * daObjHha_c::ygush_manager match * daObjHha_c::_execute almost match * daObjHha_c::_draw match * daObjHha_c::water_manager match * Mthd match * da_a_obj_hha object file match * Cleaning & adding variable names * Updating configure.py & cleaning * fixing d_a_obj_hha constants symbol name * Adding suggestions (zeldaret/tww/#688) * Fixing d_a_obj_hha Mthd (as suggested in PR zeldaret/tww/#688) * Reverting configure.py
This commit is contained in:
+147
-53
@@ -1,77 +1,171 @@
|
||||
#ifndef D_A_OBJ_HHA_H
|
||||
#define D_A_OBJ_HHA_H
|
||||
|
||||
#include "d/d_bg_w.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "d/d_particle.h"
|
||||
#include "f_op/f_op_actor.h"
|
||||
|
||||
class daObjHha_c;
|
||||
|
||||
class daObjHhaPart_c {
|
||||
public:
|
||||
typedef void(daObjHhaPart_c::*daObjHhaPartCallBack)(daObjHha_c*);
|
||||
public:
|
||||
void draw(daObjHha_c* arg) { if(cbDraw) (this->*cbDraw)(arg); }
|
||||
void execute(daObjHha_c* arg) { if(cbExec) (this->*cbExec)(arg); }
|
||||
void setExeProc(daObjHhaPartCallBack newCb) { cbExec = newCb; }
|
||||
void start_move() { setExeProc(&daObjHhaPart_c::exe_move);}
|
||||
|
||||
void init_data(float, float, u16, u8, u8);
|
||||
BOOL set_mdl_area(const char*, int);
|
||||
BOOL set_bgw(const char*, int);
|
||||
void init_mtx(cXyz, csXyz, cXyz);
|
||||
void exe_normal(daObjHha_c*);
|
||||
void exe_move(daObjHha_c*);
|
||||
void draw_normal(daObjHha_c*);
|
||||
public:
|
||||
/* 0x00 */ J3DModel* mpModel;
|
||||
/* 0x04 */ dBgW* mpBgw;
|
||||
/* 0x08 */ cXyz mPos; // Position offset from current.pos
|
||||
/* 0x14 */ cXyz mPosTarget;
|
||||
/* 0x20 */ cXyz mPosDeltaDir;
|
||||
/* 0x2C */ float mDeltaY;
|
||||
/* 0x30 */ u8 partIdx;
|
||||
/* 0x31 */ u8 bMid;
|
||||
/* 0x34 */ daObjHhaPartCallBack cbExec;
|
||||
/* 0x40 */ daObjHhaPartCallBack cbDraw;
|
||||
|
||||
}; // Size : 0x4C
|
||||
|
||||
class daObjHhaSplash_c {
|
||||
public:
|
||||
daObjHhaSplash_c() {}
|
||||
~daObjHhaSplash_c() {}
|
||||
cXyz get_base_pos() { return mBasePos; };
|
||||
cXyz get_pos() { return mPos; };
|
||||
|
||||
f32 get_pos_y() { return mPos.y; }
|
||||
void set_pos(cXyz& pos) { mPos.set(pos); }
|
||||
void set_pos_y(float y) { mPos.y = y; }
|
||||
bool chk_stop() { return bIsActive == false; }
|
||||
|
||||
void delete_s() {
|
||||
if(mEcallBack.getEmitter() != NULL){
|
||||
mEcallBack.end();
|
||||
bIsActive = false;
|
||||
}
|
||||
}
|
||||
|
||||
void play_particle() {
|
||||
JPABaseEmitter* pSplashEmitter = mEcallBack.getEmitter();
|
||||
if(pSplashEmitter != NULL){
|
||||
pSplashEmitter->clearStatus(1);
|
||||
bIsActive = true;
|
||||
}
|
||||
}
|
||||
|
||||
void stop_particle() {
|
||||
JPABaseEmitter* pSplashEmitter = mEcallBack.getEmitter();
|
||||
if(pSplashEmitter != NULL){
|
||||
pSplashEmitter->setStatus(1);
|
||||
bIsActive = false;
|
||||
}
|
||||
}
|
||||
|
||||
void create_s(unsigned short, cXyz*, float, float, csXyz*);
|
||||
|
||||
public:
|
||||
/* 0x00 */ dPa_followEcallBack mEcallBack;
|
||||
/* 0x14 */ cXyz mBasePos;
|
||||
/* 0x20 */ cXyz mPos;
|
||||
/* 0x2C */ csXyz mAngle;
|
||||
/* 0x32 */ bool bIsActive;
|
||||
|
||||
}; // Size : 0x34
|
||||
|
||||
class daObjHhaYgush_c {
|
||||
public:
|
||||
void anm_play(cXyz& pos) {
|
||||
set_pos(pos);
|
||||
mBtk.play();
|
||||
mBck.play();
|
||||
init_mtx();
|
||||
}
|
||||
bool check_draw() { return bVisible != false; }
|
||||
void disp_off() { bVisible = false; }
|
||||
void disp_on() { bVisible = true; }
|
||||
cXyz get_base_pos() { return mBasePos; }
|
||||
void set_pos(cXyz newpos) { mPos = newpos; }
|
||||
|
||||
BOOL create_area(const char*);
|
||||
void init_data(cXyz*, f32, csXyz*, cXyz*, dKy_tevstr_c*, u8);
|
||||
void init_mtx();
|
||||
void draw();
|
||||
|
||||
public:
|
||||
/* 0x000 */ J3DModel* mpModel;
|
||||
/* 0x004 */ mDoExt_btkAnm mBtk;
|
||||
/* 0x018 */ mDoExt_bckAnm mBck;
|
||||
/* 0x028 */ dKy_tevstr_c mTev;
|
||||
/* 0x0D8 */ cXyz mBasePos;
|
||||
/* 0x0E4 */ cXyz mPos;
|
||||
/* 0x0F0 */ cXyz mScale;
|
||||
/* 0x0FC */ csXyz mRot;
|
||||
/* 0x102 */ u8 bVisible;
|
||||
|
||||
}; // Size : 0x104
|
||||
|
||||
class daObjHha_c : public fopAc_ac_c {
|
||||
public:
|
||||
void check_sw(); // weak but not inline?
|
||||
|
||||
void solidHeapCB(fopAc_ac_c*);
|
||||
void create_heap();
|
||||
BOOL check_sw(); // weak but not inline?
|
||||
|
||||
static int solidHeapCB(fopAc_ac_c*);
|
||||
BOOL create_heap();
|
||||
s32 _create();
|
||||
BOOL _delete();
|
||||
bool _delete();
|
||||
void set_tex(float, float, int);
|
||||
void init_mtx();
|
||||
void init_co();
|
||||
void get_water_h();
|
||||
float get_water_h();
|
||||
void set_splash_bottom_h();
|
||||
void set_splash_bottom_r();
|
||||
void set_splash_bottom_stop_r();
|
||||
void water_manager();
|
||||
void part_manager();
|
||||
void ygush_manager();
|
||||
BOOL _execute();
|
||||
BOOL _draw();
|
||||
bool _execute();
|
||||
bool _draw();
|
||||
|
||||
public:
|
||||
/* Place member variables here */
|
||||
};
|
||||
static const dCcD_SrcCyl M_cyl_data;
|
||||
static const dCcD_SrcSph M_sph_data;
|
||||
static const char M_arcname[4];
|
||||
enum State_t {State_OPEN = 0, State_SWITCHING = 1, State_CLOSED = 2};
|
||||
|
||||
class daObjHhaPart_c {
|
||||
public:
|
||||
void draw(daObjHha_c*) {}
|
||||
void execute(daObjHha_c*) {}
|
||||
void setExeProc(void (daObjHhaPart_c::*)(daObjHha_c*)) {}
|
||||
void start_move() {}
|
||||
|
||||
void init_data(float, float, unsigned short, unsigned char, unsigned char);
|
||||
void set_mdl_area(const char*, int);
|
||||
void set_bgw(const char*, int);
|
||||
void init_mtx(cXyz, csXyz, cXyz);
|
||||
void exe_normal(daObjHha_c*);
|
||||
void exe_move(daObjHha_c*);
|
||||
void draw_normal(daObjHha_c*);
|
||||
};
|
||||
|
||||
class daObjHhaSplash_c {
|
||||
public:
|
||||
void chk_stop() {}
|
||||
void delete_s() {}
|
||||
void get_base_pos() {}
|
||||
void get_pos() {}
|
||||
void get_pos_y() {}
|
||||
void play_particle() {}
|
||||
void set_pos(cXyz*) {}
|
||||
void set_pos_y(float) {}
|
||||
void stop_particle() {}
|
||||
|
||||
void create_s(unsigned short, cXyz*, float, float, csXyz*);
|
||||
};
|
||||
|
||||
class daObjHhaYgush_c {
|
||||
public:
|
||||
void anm_play() {}
|
||||
void check_draw() {}
|
||||
void disp_off() {}
|
||||
void disp_on() {}
|
||||
void get_base_pos() {}
|
||||
void set_pos(cXyz) {}
|
||||
|
||||
void create_area(const char*);
|
||||
void init_data(cXyz*, float, csXyz*, cXyz*, dKy_tevstr_c*, unsigned char);
|
||||
void init_mtx();
|
||||
BOOL draw();
|
||||
/* 0x290 */ J3DModel* mpModel;
|
||||
/* 0x294 */ mDoExt_btkAnm mBtkA[2];
|
||||
/* 0x2BC */ request_of_phase_process_class mPhs;
|
||||
/* 0x2C4 */ dCcD_Stts mCylStts;
|
||||
/* 0x300 */ dCcD_Cyl mCyl;
|
||||
/* 0x430 */ bool mHitboxActive;
|
||||
/* 0x434 */ dCcD_Stts mSphStts;
|
||||
/* 0x470 */ dCcD_Sph mSph;
|
||||
/* 0x59C */ daObjHhaYgush_c mYgush;
|
||||
/* 0x6A0 */ daObjHhaPart_c mPartA[2];
|
||||
/* 0x738 */ daObjHhaSplash_c mSplashA[2];
|
||||
/* 0x7A0 */ cXyz mPosOffset;
|
||||
/* 0x7AC */ u32 mSwitchNo;
|
||||
/* 0x7B0 */ u8 mIsMiddle;
|
||||
/* 0x7B2 */ short mPartTimer;
|
||||
/* 0x7B4 */ float fWtrScale;
|
||||
/* 0x7B8 */ float fWtrScaleMin;
|
||||
/* 0x7BC */ u16 mWtrTimer;
|
||||
/* 0X7BE */ u8 mWtrState;
|
||||
/* 0x7C0 */ short mEventIdx;
|
||||
/* 0x7C2 */ u8 mState;
|
||||
/* 0x7C3 */ bool mWaterSound;
|
||||
};
|
||||
|
||||
#endif /* D_A_OBJ_HHA_H */
|
||||
|
||||
+570
-60
@@ -4,182 +4,692 @@
|
||||
//
|
||||
|
||||
#include "d/actor/d_a_obj_hha.h"
|
||||
#include "d/actor/d_a_tag_waterlevel.h"
|
||||
#include "d/d_bg_s_func.h"
|
||||
#include "d/d_bg_s_wtr_chk.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/res/res_hha.h"
|
||||
|
||||
const dCcD_SrcCyl daObjHha_c::M_cyl_data = {
|
||||
// dCcD_SrcGObjInf
|
||||
{
|
||||
/* Flags */ 0,
|
||||
/* SrcObjAt Type */ 0,
|
||||
/* SrcObjAt Atp */ 0,
|
||||
/* SrcObjAt SPrm */ 0,
|
||||
/* SrcObjTg Type */ 0,
|
||||
/* SrcObjTg SPrm */ 0,
|
||||
/* SrcObjCo SPrm */ cCcD_CoSPrm_Set_e | cCcD_CoSPrm_IsOther_e | cCcD_CoSPrm_VsEnemy_e | cCcD_CoSPrm_VsOther_e,
|
||||
/* SrcGObjAt Se */ 0,
|
||||
/* SrcGObjAt HitMark */ 0,
|
||||
/* SrcGObjAt Spl */ 0,
|
||||
/* SrcGObjAt Mtrl */ 0,
|
||||
/* SrcGObjAt SPrm */ 0,
|
||||
/* SrcGObjTg Se */ 0,
|
||||
/* SrcGObjTg HitMark */ 0,
|
||||
/* SrcGObjTg Spl */ 0,
|
||||
/* SrcGObjTg Mtrl */ 0,
|
||||
/* SrcGObjTg SPrm */ dCcG_TgSPrm_NoHitMark_e,
|
||||
/* SrcGObjCo SPrm */ 0,
|
||||
},
|
||||
// cM3dGCylS
|
||||
{
|
||||
/* Center */ 0.0f, 0.0f, 0.0f,
|
||||
/* Radius */ 570.0f,
|
||||
/* Height */ 100.0f,
|
||||
},
|
||||
};
|
||||
|
||||
const dCcD_SrcSph daObjHha_c::M_sph_data = {
|
||||
// dCcD_SrcGObjInf
|
||||
{
|
||||
/* Flags */ 0,
|
||||
/* SrcObjAt Type */ 0,
|
||||
/* SrcObjAt Atp */ 0,
|
||||
/* SrcObjAt SPrm */ 0,
|
||||
/* SrcObjTg Type */ 0,
|
||||
/* SrcObjTg SPrm */ 0,
|
||||
/* SrcObjCo SPrm */ cCcD_CoSPrm_Set_e | cCcD_CoSPrm_IsOther_e | cCcD_CoSPrm_VsEnemy_e,
|
||||
/* SrcGObjAt Se */ 0,
|
||||
/* SrcGObjAt HitMark */ 0,
|
||||
/* SrcGObjAt Spl */ 0,
|
||||
/* SrcGObjAt Mtrl */ 0,
|
||||
/* SrcGObjAt SPrm */ 0,
|
||||
/* SrcGObjTg Se */ 0,
|
||||
/* SrcGObjTg HitMark */ 0,
|
||||
/* SrcGObjTg Spl */ 0,
|
||||
/* SrcGObjTg Mtrl */ 0,
|
||||
/* SrcGObjTg SPrm */ dCcG_TgSPrm_NoHitMark_e,
|
||||
/* SrcGObjCo SPrm */ 0,
|
||||
},
|
||||
// cM3dGSphS
|
||||
{
|
||||
/* Center */ 0.0f, 0.0f, 0.0f,
|
||||
/* Radius */ 220.0f,
|
||||
},
|
||||
};
|
||||
|
||||
const HHA_RES_FILE_ID l_daObjHha_bdl_idx_table[2] = {HHA_BDL_HHA1, HHA_BDL_HHA2};
|
||||
const HHA_RES_FILE_ID l_daObjHha_dzb_idx_table[2] = {HHA_DZB_HHA1, HHA_DZB_HHA2};
|
||||
const HHA_RES_FILE_ID l_daObjHha_btk_idx_table[2] = {HHA_BTK_YSWTR00_01, HHA_BTK_YSWTR00_02};
|
||||
const J3DFrameCtrl::Attribute_e l_daObjHha_btk_mode_table[2] = {J3DFrameCtrl::LOOP_REPEAT_e, J3DFrameCtrl::LOOP_ONCE_e};
|
||||
const u16 l_daObjHha_splash_id_table[2] = {0x810D, 0x810E};
|
||||
|
||||
/* 00000078-00000170 .text init_data__14daObjHhaPart_cFffUsUcUc */
|
||||
void daObjHhaPart_c::init_data(float, float, unsigned short, unsigned char, unsigned char) {
|
||||
/* Nonmatching */
|
||||
void daObjHhaPart_c::init_data(float yPos, float yTar, u16 speed, u8 i, u8 IsMiddle) {
|
||||
mPos.set(0, yPos, 0);
|
||||
mPosTarget.set(0, yTar, 0);
|
||||
partIdx = i;
|
||||
mDeltaY = (yTar - yPos) / speed;
|
||||
mPosDeltaDir = mPosTarget - mPos;
|
||||
mPosDeltaDir.normalizeRS();
|
||||
setExeProc(&daObjHhaPart_c::exe_normal);
|
||||
cbDraw = &daObjHhaPart_c::draw_normal;
|
||||
bMid = IsMiddle;
|
||||
}
|
||||
|
||||
/* 00000170-00000224 .text set_mdl_area__14daObjHhaPart_cFPCci */
|
||||
void daObjHhaPart_c::set_mdl_area(const char*, int) {
|
||||
/* Nonmatching */
|
||||
BOOL daObjHhaPart_c::set_mdl_area(const char* arcname, int index) {
|
||||
BOOL ret = FALSE;
|
||||
J3DModelData* mdl_data = static_cast<J3DModelData*>(dComIfG_getObjectRes(arcname, index));
|
||||
JUT_ASSERT(0x1d9, mdl_data != NULL);
|
||||
if(mdl_data != NULL){
|
||||
mpModel = mDoExt_J3DModel__create(mdl_data, 0, 0x11020203);
|
||||
ret = TRUE;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 00000224-000002A4 .text set_bgw__14daObjHhaPart_cFPCci */
|
||||
void daObjHhaPart_c::set_bgw(const char*, int) {
|
||||
/* Nonmatching */
|
||||
BOOL daObjHhaPart_c::set_bgw(const char* arcname, int index) {
|
||||
BOOL ret = TRUE;
|
||||
mpBgw = dBgW_NewSet(
|
||||
static_cast<cBgD_t*>(dComIfG_getObjectRes(arcname, index)),
|
||||
1,
|
||||
&mpModel->getBaseTRMtx()
|
||||
);
|
||||
|
||||
if(mpBgw == NULL){
|
||||
ret = FALSE;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 000002A4-0000035C .text init_mtx__14daObjHhaPart_cF4cXyz5csXyz4cXyz */
|
||||
void daObjHhaPart_c::init_mtx(cXyz, csXyz, cXyz) {
|
||||
/* Nonmatching */
|
||||
void daObjHhaPart_c::init_mtx(cXyz currentPos, csXyz shapeAngle, cXyz scale) {
|
||||
mpModel->setBaseScale(scale);
|
||||
mDoMtx_stack_c::transS(currentPos);
|
||||
mDoMtx_stack_c::ZXYrotM(shapeAngle);
|
||||
mDoMtx_stack_c::transM(mPos);
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::now);
|
||||
mpModel->calc();
|
||||
}
|
||||
|
||||
/* 0000035C-0000040C .text exe_normal__14daObjHhaPart_cFP10daObjHha_c */
|
||||
void daObjHhaPart_c::exe_normal(daObjHha_c*) {
|
||||
/* Nonmatching */
|
||||
void daObjHhaPart_c::exe_normal(daObjHha_c* parent) {
|
||||
init_mtx(parent->current.pos, parent->shape_angle, parent->scale);
|
||||
|
||||
bool doMove;
|
||||
if(mpBgw != NULL){
|
||||
if(0 <= mpBgw->GetId() && mpBgw->GetId() < 0x100){
|
||||
doMove = true;
|
||||
}
|
||||
else {
|
||||
doMove = false;
|
||||
}
|
||||
|
||||
if(doMove){
|
||||
mpBgw->Move();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* 0000040C-00000524 .text exe_move__14daObjHhaPart_cFP10daObjHha_c */
|
||||
void daObjHhaPart_c::exe_move(daObjHha_c*) {
|
||||
/* Nonmatching */
|
||||
void daObjHhaPart_c::exe_move(daObjHha_c* parent) {
|
||||
mPos.y += mDeltaY;
|
||||
cXyz positionDelta = mPosTarget - mPos;
|
||||
if(mPosDeltaDir.getDotProduct(positionDelta) <= 0.0f){
|
||||
mPos = mPosTarget;
|
||||
setExeProc(&daObjHhaPart_c::exe_normal);
|
||||
if(bMid == 0 && partIdx == 0){
|
||||
dComIfGp_getVibration().StartShock(4, -0x21, cXyz(0.0,1.0,0.0));
|
||||
}
|
||||
}
|
||||
exe_normal(parent);
|
||||
}
|
||||
|
||||
/* 00000524-0000056C .text draw_normal__14daObjHhaPart_cFP10daObjHha_c */
|
||||
void daObjHhaPart_c::draw_normal(daObjHha_c*) {
|
||||
/* Nonmatching */
|
||||
void daObjHhaPart_c::draw_normal(daObjHha_c* parent) {
|
||||
dKy_getEnvlight().setLightTevColorType(mpModel, &parent->tevStr);
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
}
|
||||
|
||||
/* 0000056C-00000698 .text create_s__16daObjHhaSplash_cFUsP4cXyzffP5csXyz */
|
||||
void daObjHhaSplash_c::create_s(unsigned short, cXyz*, float, float, csXyz*) {
|
||||
/* Nonmatching */
|
||||
void daObjHhaSplash_c::create_s(unsigned short id, cXyz* pPos, float offsetY, float offsetZ, csXyz* pAngle) {
|
||||
cXyz calcVec;
|
||||
|
||||
mPos.set(pPos->x, pPos->y + offsetY, pPos->z);
|
||||
mDoMtx_stack_c::YrotS(pAngle->y);
|
||||
mDoMtx_stack_c::multVec(&cXyz::BaseZ, &calcVec);
|
||||
calcVec *= offsetZ;
|
||||
mPos += calcVec;
|
||||
mBasePos = mPos;
|
||||
mAngle = *pAngle;
|
||||
dComIfGp_particle_set(id, &mPos, &mAngle, NULL, 255, &mEcallBack);
|
||||
bIsActive = true;
|
||||
}
|
||||
|
||||
/* 00000698-000008AC .text create_area__15daObjHhaYgush_cFPCc */
|
||||
void daObjHhaYgush_c::create_area(const char*) {
|
||||
/* Nonmatching */
|
||||
BOOL daObjHhaYgush_c::create_area(const char* arcname) {
|
||||
BOOL ret = FALSE;
|
||||
|
||||
J3DModelData* mdl_data = static_cast<J3DModelData*>(dComIfG_getObjectRes(arcname, HHA_BDL_YGSTP00));
|
||||
JUT_ASSERT(0x280, mdl_data != NULL);
|
||||
|
||||
if(mdl_data != NULL){
|
||||
mpModel = mDoExt_J3DModel__create(mdl_data, 0x80000, 0x11000222);
|
||||
J3DModel* M_mdl = mpModel; // Renaming for assertion to match
|
||||
JUT_ASSERT(0x289, M_mdl != NULL);
|
||||
|
||||
if((mpModel != 0)){
|
||||
J3DAnmTextureSRTKey* btk_data = static_cast<J3DAnmTextureSRTKey*>(dComIfG_getObjectRes(arcname, HHA_BTK_YGSTP00));
|
||||
JUT_ASSERT(0x290, btk_data != NULL);
|
||||
|
||||
if(mBtk.init(mpModel->getModelData(), btk_data, true, J3DFrameCtrl::LOOP_REPEAT_e, 1.0, 0, -1, false, 0) != false){
|
||||
J3DAnmTransform* bck_data = static_cast<J3DAnmTransform*>(dComIfG_getObjectRes(arcname, HHA_BCK_YGSTP00));
|
||||
JUT_ASSERT(0x295, bck_data != NULL);
|
||||
|
||||
if(mBck.init(mpModel->getModelData(), bck_data, true, J3DFrameCtrl::LOOP_REPEAT_e, 1.0, 0, -1, false) != false){
|
||||
ret = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 000008AC-00000AD8 .text init_data__15daObjHhaYgush_cFP4cXyzfP5csXyzP4cXyzP12dKy_tevstr_cUc */
|
||||
void daObjHhaYgush_c::init_data(cXyz*, float, csXyz*, cXyz*, dKy_tevstr_c*, unsigned char) {
|
||||
/* Nonmatching */
|
||||
void daObjHhaYgush_c::init_data(cXyz* pPos, f32 zScale, csXyz* pAngle, cXyz* pScale, dKy_tevstr_c* tev, u8 isVisible) {
|
||||
cXyz calcVec;
|
||||
mDoMtx_stack_c::YrotS(pAngle->y);
|
||||
mDoMtx_stack_c::multVec(&cXyz::BaseZ, &calcVec);
|
||||
calcVec *= zScale;
|
||||
mBasePos = *pPos + calcVec;
|
||||
mPos = mBasePos;
|
||||
mRot = *pAngle;
|
||||
mScale = *pScale;
|
||||
mTev = *tev;
|
||||
bVisible = isVisible;
|
||||
}
|
||||
|
||||
/* 00000AD8-00000B88 .text init_mtx__15daObjHhaYgush_cFv */
|
||||
void daObjHhaYgush_c::init_mtx() {
|
||||
/* Nonmatching */
|
||||
J3DModel* pModel = mpModel;
|
||||
if(pModel != NULL){
|
||||
pModel->setBaseScale(mScale);
|
||||
mDoMtx_stack_c::transS(mPos);
|
||||
mDoMtx_stack_c::ZXYrotM(mRot);
|
||||
mDoMtx_stack_c::scaleM(13.0f, 1.0f, 11.0f);
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::now);
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000B88-00000C2C .text draw__15daObjHhaYgush_cFv */
|
||||
BOOL daObjHhaYgush_c::draw() {
|
||||
/* Nonmatching */
|
||||
void daObjHhaYgush_c::draw() {
|
||||
if(check_draw() && mpModel != NULL){
|
||||
dKy_getEnvlight().settingTevStruct(TEV_TYPE_BG1, &mPos, &mTev);
|
||||
dKy_getEnvlight().setLightTevColorType(mpModel, &mTev);
|
||||
mBtk.entry(mpModel->getModelData());
|
||||
mBck.entry(mpModel->getModelData());
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
}
|
||||
}
|
||||
|
||||
const char daObjHha_c::M_arcname[4] = "Hha";
|
||||
|
||||
/* 00000C2C-00000C4C .text solidHeapCB__10daObjHha_cFP10fopAc_ac_c */
|
||||
void daObjHha_c::solidHeapCB(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
int daObjHha_c::solidHeapCB(fopAc_ac_c* this_i) {
|
||||
return static_cast<daObjHha_c*>(this_i)->create_heap();
|
||||
}
|
||||
|
||||
/* 00000C4C-00000E48 .text create_heap__10daObjHha_cFv */
|
||||
void daObjHha_c::create_heap() {
|
||||
/* Nonmatching */
|
||||
BOOL daObjHha_c::create_heap() {
|
||||
int i;
|
||||
BOOL ret = TRUE;
|
||||
|
||||
for(i = 0; i < 2; i++){
|
||||
if( (mPartA[i].set_mdl_area(M_arcname, l_daObjHha_bdl_idx_table[i]) == FALSE) || (mPartA[i].set_bgw(M_arcname, l_daObjHha_dzb_idx_table[i]) == FALSE) ){
|
||||
ret = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(ret != FALSE){
|
||||
J3DModelData* mdl_data = static_cast<J3DModelData*>(dComIfG_getObjectRes(M_arcname, HHA_BDL_YSWTR00));
|
||||
JUT_ASSERT(0x324, mdl_data != NULL);
|
||||
if(mdl_data != 0){
|
||||
mpModel = mDoExt_J3DModel__create(mdl_data, 0x80000, 0x11000222);
|
||||
for(i = 0; i < 2; i++){
|
||||
J3DAnmTextureSRTKey* btk_data = static_cast<J3DAnmTextureSRTKey*>(dComIfG_getObjectRes(M_arcname, l_daObjHha_btk_idx_table[i]));
|
||||
JUT_ASSERT(0x32f, btk_data != NULL);
|
||||
if(mBtkA[i].init(mdl_data, btk_data, true, l_daObjHha_btk_mode_table[i], 1.0, 0, -1, false, 0) == FALSE){
|
||||
ret = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(ret != FALSE){
|
||||
ret = mYgush.create_area(M_arcname);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 00000E48-000011AC .text _create__10daObjHha_cFv */
|
||||
s32 daObjHha_c::_create() {
|
||||
/* Nonmatching */
|
||||
static const float pos_y[4] = {150.0f, -150.0f, 0.0f, 0.0f};
|
||||
static const float tar_y[4] = {0.0f, 0.0f, 150.0f, -150.0f};
|
||||
static const u16 move_frame[2] = {55, 30};
|
||||
static const float splash_y[2] = {-1400.0f, -1450.0f};
|
||||
static const float splash_z[2] = {0.0f, 100.0f};
|
||||
|
||||
|
||||
fopAcM_SetupActor(this, daObjHha_c);
|
||||
s32 ret = dComIfG_resLoad(&mPhs, M_arcname);
|
||||
if(ret == cPhs_COMPLEATE_e){
|
||||
ret = cPhs_ERROR_e;
|
||||
if(fopAcM_entrySolidHeap(this, &solidHeapCB, 0x3C80) != false){
|
||||
mSwitchNo = fpcM_GetParam(this) & 0xFF;
|
||||
mIsMiddle = fpcM_GetParam(this) >> 8;
|
||||
mEventIdx = dComIfGp_evmng_getEventIdx("hha_close");
|
||||
|
||||
if(mIsMiddle == 0xf)
|
||||
mIsMiddle = 0;
|
||||
|
||||
if(check_sw() != FALSE){
|
||||
mIsMiddle = (mIsMiddle + 1) & 1; // Negate and make sure that mIsMiddle is just 0 or 1
|
||||
mState = State_CLOSED;
|
||||
}
|
||||
mPartTimer = -1;
|
||||
|
||||
int posIdx = 2 * (mIsMiddle & 1);
|
||||
for(int i = 0; i < 2; i++){
|
||||
mPartA[i].init_data(pos_y[posIdx], tar_y[posIdx], move_frame[mIsMiddle], i, mIsMiddle);
|
||||
dComIfG_Bgsp()->Regist(mPartA[i].mpBgw, this);
|
||||
mPartA[i].init_mtx(current.pos, shape_angle, scale);
|
||||
posIdx++;
|
||||
}
|
||||
|
||||
mPosOffset.set(0.0f, -1400.0f, 50.0f);
|
||||
fWtrScale = 1.0f;
|
||||
|
||||
for(int i = 0; i < 2; i++){
|
||||
mSplashA[i].create_s(l_daObjHha_splash_id_table[i], ¤t.pos, splash_y[i], splash_z[i], ¤t.angle);
|
||||
}
|
||||
|
||||
if(mIsMiddle == 0){
|
||||
set_tex(36.0f, 0.0f, 1);
|
||||
mHitboxActive = true;
|
||||
mYgush.init_data(¤t.pos, 600.0f, ¤t.angle, &scale, &tevStr, true);
|
||||
mWaterSound = true;
|
||||
}
|
||||
else {
|
||||
set_tex(0.0f, 0.0f, 1);
|
||||
mSplashA[0].stop_particle();
|
||||
mSplashA[1].stop_particle();
|
||||
mYgush.init_data(¤t.pos, 600.0f, ¤t.angle, &scale, &tevStr, false);
|
||||
mWaterSound = false;
|
||||
}
|
||||
mYgush.init_mtx();
|
||||
init_mtx();
|
||||
init_co();
|
||||
fopAcM_SetMtx(this, mPartA[0].mpModel->getBaseTRMtx());
|
||||
fopAcM_setCullSizeBox(this, -700.0f, -1600.0f, -400.0f, 700.0f, 120.0f, 1000.0f);
|
||||
ret = cPhs_COMPLEATE_e;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 000018EC-000019EC .text _delete__10daObjHha_cFv */
|
||||
BOOL daObjHha_c::_delete() {
|
||||
/* Nonmatching */
|
||||
bool daObjHha_c::_delete() {
|
||||
int i;
|
||||
if(heap != NULL){
|
||||
for(i = 0; i < 2; i++){
|
||||
cBgW* bgw = mPartA[i].mpBgw;
|
||||
if(bgw != NULL){
|
||||
bool toErase;
|
||||
if(bgw->GetId() >= 0 && bgw->GetId() < 0x100){
|
||||
toErase = true;
|
||||
}
|
||||
else {
|
||||
toErase = false;
|
||||
}
|
||||
|
||||
if(toErase){
|
||||
dComIfG_Bgsp()->Release(bgw);
|
||||
mPartA[i].mpBgw = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(i = 0; i < 2; i++){
|
||||
mSplashA[i].delete_s();
|
||||
}
|
||||
|
||||
dComIfG_resDelete(&mPhs, M_arcname);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 000019EC-00001A24 .text check_sw__10daObjHha_cFv */
|
||||
void daObjHha_c::check_sw() {
|
||||
/* Nonmatching */
|
||||
inline BOOL daObjHha_c::check_sw() {
|
||||
return fopAcM_isSwitch(this, mSwitchNo);
|
||||
}
|
||||
|
||||
/* 00001A24-00001A40 .text set_tex__10daObjHha_cFffi */
|
||||
void daObjHha_c::set_tex(float, float, int) {
|
||||
/* Nonmatching */
|
||||
void daObjHha_c::set_tex(float frame, float speed, int idx) {
|
||||
mBtkA[idx].setFrame(frame);
|
||||
mBtkA[idx].setPlaySpeed(speed);
|
||||
}
|
||||
|
||||
/* 00001A40-00001B00 .text init_mtx__10daObjHha_cFv */
|
||||
void daObjHha_c::init_mtx() {
|
||||
/* Nonmatching */
|
||||
mpModel->setBaseScale(scale);
|
||||
mDoMtx_stack_c::transS( current.pos);
|
||||
mDoMtx_stack_c::ZXYrotM(shape_angle);
|
||||
mDoMtx_stack_c::transM(mPosOffset);
|
||||
mDoMtx_stack_c::scaleM(1.0, 1.0, fWtrScale);
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::now);
|
||||
mpModel->calc();
|
||||
}
|
||||
|
||||
/* 00001B00-00001C64 .text init_co__10daObjHha_cFv */
|
||||
void daObjHha_c::init_co() {
|
||||
/* Nonmatching */
|
||||
const float yOffset = -400.0f, zOffset = -110.0f;
|
||||
cXyz center;
|
||||
|
||||
mDoMtx_stack_c::YrotS(current.angle.y);
|
||||
mDoMtx_stack_c::multVec(&cXyz::BaseZ, ¢er);
|
||||
center *= 460.0f;
|
||||
center.y = get_water_h();
|
||||
center += current.pos;
|
||||
|
||||
mCylStts.Init(0xff, 0xff, this);
|
||||
mCyl.SetStts(&mCylStts);
|
||||
mCyl.Set(M_cyl_data);
|
||||
mCyl.SetC(center);
|
||||
|
||||
bool doSphInit = false;
|
||||
if(!check_sw() && mIsMiddle == 0){
|
||||
doSphInit = true;
|
||||
}
|
||||
|
||||
if(doSphInit){
|
||||
mSphStts.Init(0xff, 0xff, this);
|
||||
mSph.SetStts(&mSphStts);
|
||||
mSph.Set(M_sph_data);
|
||||
center.set(current.pos.x, current.pos.y + yOffset, current.pos.z + zOffset);
|
||||
mSph.SetC(center);
|
||||
mSph.SetR(220.0f);
|
||||
}
|
||||
}
|
||||
|
||||
/* 00001C64-00001E14 .text get_water_h__10daObjHha_cFv */
|
||||
void daObjHha_c::get_water_h() {
|
||||
/* Nonmatching */
|
||||
float daObjHha_c::get_water_h() {
|
||||
dBgS_WtrChk waterChk;
|
||||
cXyz chkPos = current.pos;
|
||||
float ret = current.pos.y;
|
||||
|
||||
cXyz offVec = cXyz::BaseZ;
|
||||
mDoMtx_stack_c::YrotS(current.angle.y);
|
||||
mDoMtx_stack_c::multVec(&cXyz::BaseZ, &offVec);
|
||||
offVec *= 400.0f;
|
||||
chkPos += offVec;
|
||||
if((dBgS_SplGrpChk_In_ObjGnd(chkPos, &waterChk, 1.0) & 0xff) != false){
|
||||
ret = waterChk.GetHeight();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 00001F38-00001F68 .text set_splash_bottom_h__10daObjHha_cFv */
|
||||
void daObjHha_c::set_splash_bottom_h() {
|
||||
/* Nonmatching */
|
||||
mSplashA[0].set_pos_y(get_water_h());
|
||||
}
|
||||
|
||||
/* 00001F68-0000201C .text daObjHha_get_r__Fs */
|
||||
void daObjHha_get_r(short) {
|
||||
/* Nonmatching */
|
||||
cXyz daObjHha_get_r(short yAngle) {
|
||||
cXyz calcVec = cXyz::BaseZ;
|
||||
float waterLevel = daTagWaterlevel::Act_c::get_now() * -190.0f;
|
||||
mDoMtx_stack_c::YrotS(yAngle);
|
||||
mDoMtx_stack_c::multVec(&cXyz::BaseZ, &calcVec);
|
||||
calcVec *= waterLevel;
|
||||
return calcVec;
|
||||
}
|
||||
|
||||
/* 0000201C-000020C0 .text set_splash_bottom_r__10daObjHha_cFv */
|
||||
void daObjHha_c::set_splash_bottom_r() {
|
||||
/* Nonmatching */
|
||||
cXyz pos = cXyz::BaseZ;
|
||||
pos = daObjHha_get_r(current.angle.y);
|
||||
pos += mSplashA[0].get_base_pos();
|
||||
pos.y = mSplashA[0].get_pos_y();
|
||||
mSplashA[0].set_pos(pos);
|
||||
}
|
||||
|
||||
/* 000020C0-000021CC .text set_splash_bottom_stop_r__10daObjHha_cFv */
|
||||
void daObjHha_c::set_splash_bottom_stop_r() {
|
||||
/* Nonmatching */
|
||||
cXyz calcVec = cXyz::BaseZ;
|
||||
float scaling = (1.0f - (mWtrTimer - 15) / 75.0f) * -300.0f;
|
||||
mDoMtx_stack_c::YrotS(current.angle.y);
|
||||
mDoMtx_stack_c::multVec(&cXyz::BaseZ, &calcVec);
|
||||
calcVec *= scaling;
|
||||
calcVec += mSplashA[0].get_pos();
|
||||
calcVec.y = mSplashA[0].get_pos_y();
|
||||
mSplashA[0].set_pos(calcVec);
|
||||
}
|
||||
|
||||
/* 000021CC-00002470 .text water_manager__10daObjHha_cFv */
|
||||
void daObjHha_c::water_manager() {
|
||||
/* Nonmatching */
|
||||
set_splash_bottom_h();
|
||||
set_splash_bottom_r();
|
||||
switch(mWtrState){
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case 1:
|
||||
fWtrScale -= 11.0f/1800;
|
||||
if(fWtrScale < fWtrScaleMin){
|
||||
fWtrScale = fWtrScaleMin;
|
||||
}
|
||||
if(mWtrTimer == 34){
|
||||
set_tex(37.0f,1.0f,1);
|
||||
}
|
||||
if(mWtrTimer == 15){
|
||||
mSplashA[1].stop_particle();
|
||||
mSplashA[1].delete_s();
|
||||
}
|
||||
else if(mWtrTimer > 15){
|
||||
set_splash_bottom_stop_r();
|
||||
}
|
||||
mWtrTimer--;
|
||||
if(mWtrTimer == 0){
|
||||
mWtrState = 0;
|
||||
mSplashA[0].stop_particle();
|
||||
mSplashA[0].delete_s();
|
||||
mHitboxActive = false;
|
||||
mYgush.disp_off();
|
||||
mWaterSound = false;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if(mWtrTimer == 35){
|
||||
mSplashA[1].play_particle();
|
||||
set_tex(0.0f,1.0f,1);
|
||||
}
|
||||
mWtrTimer--;
|
||||
if( mSplashA[0].chk_stop() && mWtrTimer <= daTagWaterlevel::Act_c::get_now() * 5.0f + 10.0f){
|
||||
mSplashA[0].play_particle();
|
||||
mYgush.disp_on();
|
||||
mWaterSound = true;
|
||||
}
|
||||
if(mWtrTimer == 0){
|
||||
set_tex(36.0, 0.0, 1);
|
||||
mWtrState = 0;
|
||||
mHitboxActive = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
for(int i = 0; i < 2; i++){
|
||||
mBtkA[i].play();
|
||||
}
|
||||
init_mtx();
|
||||
}
|
||||
|
||||
/* 00002470-0000259C .text part_manager__10daObjHha_cFv */
|
||||
void daObjHha_c::part_manager() {
|
||||
/* Nonmatching */
|
||||
if(mPartTimer == 0){
|
||||
mPartA[0].start_move();
|
||||
mPartA[1].start_move();
|
||||
mPartTimer = -1;
|
||||
if(mIsMiddle == 0){
|
||||
fopAcM_seStartCurrent(this, JA_SE_OBJ_F_WATERGATE_CL, 0);
|
||||
}
|
||||
}
|
||||
else if(mPartTimer > 0)
|
||||
mPartTimer -= 1;
|
||||
|
||||
for(int i = 0; i < 2; i++){
|
||||
mPartA[i].execute(this);
|
||||
}
|
||||
}
|
||||
|
||||
/* 0000259C-00002658 .text ygush_manager__10daObjHha_cFv */
|
||||
void daObjHha_c::ygush_manager() {
|
||||
/* Nonmatching */
|
||||
cXyz ygushPos;
|
||||
// Weird to cast "bVisible" here, but i can't get things to match otherwise
|
||||
if( static_cast<BOOL>(mYgush.bVisible) != FALSE ){
|
||||
ygushPos = daObjHha_get_r(current.angle.y);
|
||||
ygushPos += mYgush.get_base_pos();
|
||||
ygushPos.y = get_water_h();
|
||||
mYgush.anm_play(ygushPos);
|
||||
}
|
||||
}
|
||||
|
||||
/* 00002658-000028E4 .text _execute__10daObjHha_cFv */
|
||||
BOOL daObjHha_c::_execute() {
|
||||
/* Nonmatching */
|
||||
bool daObjHha_c::_execute() {
|
||||
switch(mState){
|
||||
case State_OPEN: if(check_sw()){
|
||||
if(mIsMiddle == 0){
|
||||
if(eventInfo.mCommand != dEvtCmd_INDEMO_e){
|
||||
fopAcM_orderOtherEventId(this, mEventIdx);
|
||||
eventInfo.onCondition(2);
|
||||
}
|
||||
else {
|
||||
mDoAud_seStart(JA_SE_READ_RIDDLE_1);
|
||||
mWtrState = 1;
|
||||
mWtrTimer = 90;
|
||||
mPartTimer = 65;
|
||||
mState = State_SWITCHING;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(dComIfGp_evmng_startCheck(mEventIdx) != FALSE){
|
||||
mWtrState = 2;
|
||||
mWtrTimer = 35;
|
||||
mPartTimer = 0;
|
||||
mState = State_CLOSED;
|
||||
}
|
||||
}
|
||||
} break;
|
||||
|
||||
|
||||
case State_SWITCHING: if(dComIfGp_evmng_endCheck(mEventIdx)){
|
||||
dComIfGp_event_reset();
|
||||
mState = State_CLOSED;
|
||||
}
|
||||
break;
|
||||
|
||||
case State_CLOSED:
|
||||
break;
|
||||
}
|
||||
|
||||
part_manager();
|
||||
water_manager();
|
||||
ygush_manager();
|
||||
|
||||
if(mWaterSound != false)
|
||||
fopAcM_seStartCurrent(this, JA_SE_ATM_WATER_GATE,0);
|
||||
|
||||
if(mHitboxActive != false){
|
||||
cXyz calcVec = mCyl.GetC();
|
||||
calcVec.y = get_water_h();
|
||||
mCyl.SetC(calcVec);
|
||||
dComIfG_Ccsp()->Set(&mCyl);
|
||||
bool isSphActive = (!check_sw() && mIsMiddle == 0);
|
||||
if(isSphActive){
|
||||
dComIfG_Ccsp()->Set(&mSph);
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 000028E4-000029F4 .text _draw__10daObjHha_cFv */
|
||||
BOOL daObjHha_c::_draw() {
|
||||
/* Nonmatching */
|
||||
bool daObjHha_c::_draw() {
|
||||
int i;
|
||||
|
||||
dKy_getEnvlight().settingTevStruct(TEV_TYPE_BG0, ¤t.pos, &tevStr);
|
||||
for(i = 0; i < 2; i++){
|
||||
mPartA[i].draw(this);
|
||||
}
|
||||
|
||||
if(mpModel != NULL){
|
||||
dKy_getEnvlight().settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &tevStr);
|
||||
dKy_getEnvlight().setLightTevColorType(mpModel, &tevStr);
|
||||
for(i = 0; i < 2; i++){
|
||||
mBtkA[i].entry(mpModel->getModelData());
|
||||
}
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
}
|
||||
mYgush.draw();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
namespace {
|
||||
/* 000029F4-00002A14 .text Mthd_Create__25@unnamed@d_a_obj_hha_cpp@FPv */
|
||||
void Mthd_Create(void*) {
|
||||
/* Nonmatching */
|
||||
s32 Mthd_Create(void* this_i) {
|
||||
return static_cast<daObjHha_c*>(this_i)->_create();
|
||||
}
|
||||
|
||||
/* 00002A14-00002A38 .text Mthd_Delete__25@unnamed@d_a_obj_hha_cpp@FPv */
|
||||
void Mthd_Delete(void*) {
|
||||
/* Nonmatching */
|
||||
BOOL Mthd_Delete(void* this_i) {
|
||||
return static_cast<daObjHha_c*>(this_i)->_delete();
|
||||
}
|
||||
|
||||
/* 00002A38-00002A5C .text Mthd_Execute__25@unnamed@d_a_obj_hha_cpp@FPv */
|
||||
void Mthd_Execute(void*) {
|
||||
/* Nonmatching */
|
||||
BOOL Mthd_Execute(void* this_i) {
|
||||
return static_cast<daObjHha_c*>(this_i)->_execute();
|
||||
}
|
||||
|
||||
/* 00002A5C-00002A80 .text Mthd_Draw__25@unnamed@d_a_obj_hha_cpp@FPv */
|
||||
void Mthd_Draw(void*) {
|
||||
/* Nonmatching */
|
||||
BOOL Mthd_Draw(void* this_i) {
|
||||
return static_cast<daObjHha_c*>(this_i)->_draw();
|
||||
}
|
||||
|
||||
/* 00002A80-00002A88 .text Mthd_IsDelete__25@unnamed@d_a_obj_hha_cpp@FPv */
|
||||
void Mthd_IsDelete(void*) {
|
||||
/* Nonmatching */
|
||||
BOOL Mthd_IsDelete(void*) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static actor_method_class Hha_Mthd_Table = {
|
||||
|
||||
Reference in New Issue
Block a user