mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-09 04:29:46 -04:00
236 lines
6.5 KiB
C++
236 lines
6.5 KiB
C++
//
|
|
// Generated by dtk
|
|
// Translation Unit: d_a_warpfout.cpp
|
|
//
|
|
|
|
#include "d/dolzel_rel.h" // IWYU pragma: keep
|
|
#include "d/actor/d_a_warpfout.h"
|
|
#include "d/d_camera.h"
|
|
#include "d/d_com_inf_game.h"
|
|
#include "d/d_procname.h"
|
|
#include "d/d_priority.h"
|
|
|
|
static daWarpfout_c::EventActionInitFunc event_init_tbl[] = {
|
|
&daWarpfout_c::initWarp1, &daWarpfout_c::initWarp2, &daWarpfout_c::initWarp3,
|
|
&daWarpfout_c::initWarp4, &daWarpfout_c::initEnd,
|
|
};
|
|
|
|
static daWarpfout_c::EventActionFunc event_action_tbl[] = {
|
|
&daWarpfout_c::actWarp1, &daWarpfout_c::actWarp2, &daWarpfout_c::actWarp3,
|
|
&daWarpfout_c::actWarp4, &daWarpfout_c::actEnd,
|
|
};
|
|
|
|
static char* action_table[] = {
|
|
"WARP1", "WARP2", "WARP3", "WARP4", "END",
|
|
};
|
|
|
|
/* 00000078-00000080 .text _delete__12daWarpfout_cFv */
|
|
bool daWarpfout_c::_delete() {
|
|
return true;
|
|
}
|
|
|
|
/* 00000080-0000008C .text CreateInit__12daWarpfout_cFv */
|
|
void daWarpfout_c::CreateInit() {
|
|
unknownInitFlag = -0x1;
|
|
}
|
|
|
|
/* 0000008C-000000E4 .text _create__12daWarpfout_cFv */
|
|
cPhs_State daWarpfout_c::_create() {
|
|
fopAcM_SetupActor(this, daWarpfout_c);
|
|
CreateInit();
|
|
|
|
return cPhs_COMPLEATE_e;
|
|
}
|
|
|
|
/* 000000E4-00000124 .text _execute__12daWarpfout_cFv */
|
|
bool daWarpfout_c::_execute() {
|
|
checkOrder();
|
|
demo_proc();
|
|
eventOrder();
|
|
return true;
|
|
}
|
|
|
|
/* 00000124-00000128 .text checkOrder__12daWarpfout_cFv */
|
|
void daWarpfout_c::checkOrder() {}
|
|
|
|
/* 00000128-0000012C .text eventOrder__12daWarpfout_cFv */
|
|
void daWarpfout_c::eventOrder() {}
|
|
|
|
/* 0000012C-00000248 .text demo_proc__12daWarpfout_cFv */
|
|
void daWarpfout_c::demo_proc() {
|
|
mStaffId = dComIfGp_evmng_getMyStaffId("Warpfo");
|
|
|
|
if (dComIfGp_event_runCheck() && !eventInfo.checkCommandTalk() && mStaffId != -1) {
|
|
int actIdx =
|
|
dComIfGp_evmng_getMyActIdx(mStaffId, action_table, ARRAY_SIZE(action_table), FALSE, 0);
|
|
|
|
if (actIdx == -1) {
|
|
dComIfGp_evmng_cutEnd(mStaffId);
|
|
return;
|
|
}
|
|
|
|
if (dComIfGp_evmng_getIsAddvance(mStaffId)) {
|
|
(this->*event_init_tbl[actIdx])(mStaffId);
|
|
}
|
|
if ((this->*event_action_tbl[actIdx])(mStaffId)) {
|
|
dComIfGp_evmng_cutEnd(mStaffId);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 00000248-000002A8 .text initWarp1__12daWarpfout_cFi */
|
|
void daWarpfout_c::initWarp1(int) {
|
|
mTimer = 5;
|
|
mDoAud_seStart(JA_SE_LK_BOSS_WARP_EFF_ED);
|
|
}
|
|
|
|
/* 000002A8-00000344 .text actWarp1__12daWarpfout_cFi */
|
|
BOOL daWarpfout_c::actWarp1(int) {
|
|
if (mTimer == 4) {
|
|
cXyz effectPos = dComIfGp_getLinkPlayer()->current.pos;
|
|
effectPos.y += 40.0f;
|
|
|
|
set_effect_wind01(effectPos, 0);
|
|
}
|
|
|
|
if (cLib_calcTimer(&mTimer) == 0) {
|
|
return TRUE;
|
|
} else {
|
|
return FALSE;
|
|
};
|
|
}
|
|
|
|
/* 00000344-000003C0 .text initWarp2__12daWarpfout_cFi */
|
|
void daWarpfout_c::initWarp2(int) {
|
|
cXyz effectPos = dComIfGp_getLinkPlayer()->current.pos;
|
|
effectPos.y += 60.0f;
|
|
|
|
set_effect_wind01(effectPos, 0x38e);
|
|
mTimer = 5;
|
|
}
|
|
|
|
/* 000003C0-000003EC .text actWarp2__12daWarpfout_cFi */
|
|
BOOL daWarpfout_c::actWarp2(int) {
|
|
if (cLib_calcTimer(&mTimer) == 0) {
|
|
return TRUE;
|
|
} else {
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
/* 000003EC-00000468 .text initWarp3__12daWarpfout_cFi */
|
|
void daWarpfout_c::initWarp3(int) {
|
|
cXyz effectPos = dComIfGp_getLinkPlayer()->current.pos;
|
|
effectPos.y += 80.0f;
|
|
|
|
set_effect_wind01(effectPos, 0x71c);
|
|
mTimer = 5;
|
|
}
|
|
|
|
/* 00000468-00000494 .text actWarp3__12daWarpfout_cFi */
|
|
BOOL daWarpfout_c::actWarp3(int) {
|
|
if (cLib_calcTimer(&mTimer) == 0) {
|
|
return TRUE;
|
|
} else {
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
/* 00000494-0000051C .text initWarp4__12daWarpfout_cFi */
|
|
void daWarpfout_c::initWarp4(int) {
|
|
fopAc_ac_c* link = dComIfGp_getLinkPlayer();
|
|
|
|
for (int i = 0; i < 6; i++) {
|
|
dComIfGp_particle_set(dPa_name::ID_AK_SN_DEMOWARPWIND00, &link->current.pos);
|
|
}
|
|
}
|
|
|
|
/* 0000051C-00000524 .text actWarp4__12daWarpfout_cFi */
|
|
BOOL daWarpfout_c::actWarp4(int) {
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00000524-00000528 .text initEnd__12daWarpfout_cFi */
|
|
void daWarpfout_c::initEnd(int) {}
|
|
|
|
/* 00000528-0000054C .text actEnd__12daWarpfout_cFi */
|
|
BOOL daWarpfout_c::actEnd(int) {
|
|
fopAcM_delete(this);
|
|
return TRUE;
|
|
}
|
|
|
|
/* 0000054C-000005F4 .text set_effect_wind01__12daWarpfout_cF4cXyzs */
|
|
void daWarpfout_c::set_effect_wind01(cXyz effectPos, s16 effectAngleZOffset) {
|
|
csXyz effectAngle = get_effect_angle();
|
|
effectAngle.z += effectAngleZOffset;
|
|
|
|
dComIfGp_particle_set(dPa_name::ID_AK_SN_DEMOWARPWIND01, &effectPos, &effectAngle);
|
|
}
|
|
|
|
/* 000005F4-00000670 .text get_effect_angle__12daWarpfout_cFv */
|
|
csXyz daWarpfout_c::get_effect_angle() {
|
|
csXyz angle = current.angle;
|
|
|
|
angle.x = dCam_getAngleX(dComIfGp_getCamera(0));
|
|
angle.y = dCam_getAngleY(dComIfGp_getCamera(0)) + 0x8000;
|
|
angle.z = 0;
|
|
|
|
return angle;
|
|
}
|
|
|
|
/* 00000670-00000690 .text daWarpfout_Create__FPv */
|
|
static cPhs_State daWarpfout_Create(void* i) {
|
|
daWarpfout_c* i_this = static_cast<daWarpfout_c*>(i);
|
|
|
|
return i_this->_create();
|
|
}
|
|
|
|
/* 00000690-000006B4 .text daWarpfout_Delete__FPv */
|
|
static BOOL daWarpfout_Delete(void* i) {
|
|
daWarpfout_c* i_this = static_cast<daWarpfout_c*>(i);
|
|
|
|
return i_this->_delete();
|
|
}
|
|
|
|
/* 000006B4-000006BC .text daWarpfout_Draw__FPv */
|
|
static BOOL daWarpfout_Draw(void*) {
|
|
return TRUE;
|
|
}
|
|
|
|
/* 000006BC-000006E0 .text daWarpfout_Execute__FPv */
|
|
static BOOL daWarpfout_Execute(void* i) {
|
|
daWarpfout_c* i_this = static_cast<daWarpfout_c*>(i);
|
|
|
|
return i_this->_execute();
|
|
}
|
|
|
|
/* 000006E0-000006E8 .text daWarpfout_IsDelete__FPv */
|
|
static BOOL daWarpfout_IsDelete(void*) {
|
|
return TRUE;
|
|
}
|
|
|
|
static actor_method_class daWarpfoutMethodTable = {
|
|
(process_method_func)daWarpfout_Create,
|
|
(process_method_func)daWarpfout_Delete,
|
|
(process_method_func)daWarpfout_Execute,
|
|
(process_method_func)daWarpfout_IsDelete,
|
|
(process_method_func)daWarpfout_Draw,
|
|
};
|
|
|
|
actor_process_profile_definition g_profile_WARPFOUT = {
|
|
/* LayerID */ fpcLy_CURRENT_e,
|
|
/* ListID */ 0x0003,
|
|
/* ListPrio */ fpcPi_CURRENT_e,
|
|
/* ProcName */ PROC_WARPFOUT,
|
|
/* Proc SubMtd */ &g_fpcLf_Method.base,
|
|
/* Size */ sizeof(daWarpfout_c),
|
|
/* SizeOther */ 0,
|
|
/* Parameters */ 0,
|
|
/* Leaf SubMtd */ &g_fopAc_Method.base,
|
|
/* Priority */ PRIO_WARPFOUT,
|
|
/* Actor SubMtd */ &daWarpfoutMethodTable,
|
|
/* Status */ fopAcStts_CULL_e | fopAcStts_UNK40000_e,
|
|
/* Group */ fopAc_ACTOR_e,
|
|
/* CullType */ fopAc_CULLBOX_CUSTOM_e,
|
|
};
|