mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-26 15:24:30 -04:00
e8c70fb18f
* Remove NDEBUG_DEFINED fakematch, clean up getName temps * Fix ifdef * Fix bad JSystem pch ifdef breaking decomp.me * Remove Acch Chk fakematches * Private Acch fields * Fix some clangd errors in headers * Add UNUSED macro for matching debug parameters * Enable clangd unused-parameter warning * Remove extern from initializers Probably added by dol2asm? * Fix process profile definitions * Remove leftover dol2asm address comments * Remove some unnecessary double casts * Enable some more clangd warnings * Fix missing usages of fopAcM_ct * Fix wrong enum usage * Fix more fakematches
733 lines
18 KiB
C++
733 lines
18 KiB
C++
/**
|
|
* @file d_a_obj_swpush2.cpp
|
|
*
|
|
*/
|
|
|
|
#include "d/dolzel_rel.h" // IWYU pragma: keep
|
|
|
|
#include "d/actor/d_a_obj_swpush2.h"
|
|
#include "d/actor/d_a_player.h"
|
|
|
|
#if DEBUG
|
|
daObjSwpush2::Hio_c daObjSwpush2::Act_c::M_hio;
|
|
#endif
|
|
|
|
const char* daObjSwpush2::Act_c::getArcName() {
|
|
return "K_swmn00";
|
|
}
|
|
|
|
const char* daObjSwpush2::Act_c::getBmdName() {
|
|
return "K_hum_isw00.bmd";
|
|
}
|
|
|
|
const char* daObjSwpush2::Act_c::getDzbName() {
|
|
return "K_hum_isw00.dzb";
|
|
}
|
|
|
|
const char* daObjSwpush2::Act_c::getNmlBtkName() {
|
|
return "K_isw_nml.btk";
|
|
}
|
|
|
|
const char* daObjSwpush2::Act_c::getNmlBrkName() {
|
|
return "K_isw_nml.brk";
|
|
}
|
|
|
|
const char* daObjSwpush2::Act_c::getOnBtkName() {
|
|
return "K_isw_on.btk";
|
|
}
|
|
|
|
const char* daObjSwpush2::Act_c::getRunBpkName() {
|
|
return "K_isw_run.bpk";
|
|
}
|
|
|
|
const char* daObjSwpush2::Act_c::getRunBrkName() {
|
|
return "K_isw_run.brk";
|
|
}
|
|
|
|
const char* daObjSwpush2::Act_c::getRunBtkName() {
|
|
return "K_isw_run.btk";
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::prmZ_init() {
|
|
if (!mPrmInit) {
|
|
mPrmZ = home.angle.z;
|
|
mPrmInit = true;
|
|
home.angle.z = 0;
|
|
current.angle.z = 0;
|
|
shape_angle.z = 0;
|
|
}
|
|
}
|
|
|
|
bool daObjSwpush2::Act_c::is_switch2() const {
|
|
int swbit = prmZ_get_swSave2();
|
|
if (swbit == 0xFF) {
|
|
return 0;
|
|
}
|
|
|
|
return fopAcM_isSwitch(this, swbit);
|
|
}
|
|
|
|
int daObjSwpush2::Act_c::solidHeapCB(fopAc_ac_c* i_this) {
|
|
return ((daObjSwpush2::Act_c*)i_this)->create_heap();
|
|
}
|
|
|
|
const char daObjSwpush2::Act_c::M_arcname[9] = "K_swmn00";
|
|
|
|
const daObjSwpush2::Attr_c daObjSwpush2::Act_c::M_attr[4] = {
|
|
{
|
|
0x2000,
|
|
daObjSwpush2::AttrFlag_e(AttrFlag_UNK_0x1_e | AttrFlag_UNK_0x2_e),
|
|
1.0f,
|
|
M_arcname,
|
|
0.90f,
|
|
0.6f,
|
|
0.0f,
|
|
-0.3f,
|
|
1,
|
|
6,
|
|
6,
|
|
13,
|
|
1.0f,
|
|
2.5f,
|
|
6,
|
|
300.0f,
|
|
},
|
|
{
|
|
0x2000,
|
|
daObjSwpush2::AttrFlag_e(AttrFlag_UNK_0x20_e),
|
|
1.0f,
|
|
M_arcname,
|
|
0.90f,
|
|
0.6f,
|
|
0.0f,
|
|
-0.3f,
|
|
1,
|
|
6,
|
|
6,
|
|
13,
|
|
1.0f,
|
|
2.5f,
|
|
6,
|
|
300.0f,
|
|
},
|
|
{
|
|
0x2000,
|
|
daObjSwpush2::AttrFlag_e(AttrFlag_UNK_0x10_e | AttrFlag_UNK_0x1_e | AttrFlag_UNK_0x2_e),
|
|
1.0f,
|
|
M_arcname,
|
|
0.90f,
|
|
0.6f,
|
|
0.0f,
|
|
-0.3f,
|
|
1,
|
|
6,
|
|
6,
|
|
13,
|
|
1.0f,
|
|
2.5f,
|
|
6,
|
|
300.0f,
|
|
},
|
|
{
|
|
0x8000,
|
|
daObjSwpush2::AttrFlag_e(AttrFlag_HEAVY_e | AttrFlag_UNK_0x1_e | AttrFlag_UNK_0x2_e),
|
|
1.5f,
|
|
M_arcname,
|
|
0.93f,
|
|
0.42f,
|
|
0.0f,
|
|
0.0f,
|
|
4,
|
|
4,
|
|
15,
|
|
4,
|
|
1.0f,
|
|
2.5f,
|
|
6,
|
|
300.0f,
|
|
},
|
|
};
|
|
|
|
bool daObjSwpush2::Act_c::create_heap() {
|
|
void* model_data = dComIfG_getObjectRes(getArcName(), getBmdName());
|
|
JUT_ASSERT(436, model_data != NULL);
|
|
|
|
mpModel = mDoExt_J3DModel__create((J3DModelData*)model_data, 0x80000, 0x11000285);
|
|
if (mpModel == NULL) {
|
|
return 0;
|
|
}
|
|
|
|
{
|
|
J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(getArcName(), getNmlBrkName());
|
|
JUT_ASSERT(452, pbrk != NULL);
|
|
mpNmlBrk = new mDoExt_brkAnm();
|
|
if (mpNmlBrk == NULL || !mpNmlBrk->init((J3DModelData*)model_data, pbrk, 1, 2, 1.0f, 0, -1)) {
|
|
return 0;
|
|
}
|
|
|
|
mpNmlBrk->setPlaySpeed(1.0f);
|
|
}
|
|
|
|
{
|
|
J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(getArcName(), getNmlBtkName());
|
|
JUT_ASSERT(465, pbtk != NULL);
|
|
|
|
mpNmlBtk = new mDoExt_btkAnm();
|
|
if (mpNmlBtk == NULL || !mpNmlBtk->init((J3DModelData*)model_data, pbtk, 1, 2, 1.0f, 0, -1)) {
|
|
return 0;
|
|
}
|
|
|
|
mpNmlBtk->setPlaySpeed(1.0f);
|
|
}
|
|
|
|
{
|
|
J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(getArcName(), getOnBtkName());
|
|
JUT_ASSERT(478, pbtk != NULL);
|
|
mpOnBtk = new mDoExt_btkAnm();
|
|
if (mpOnBtk == NULL || !mpOnBtk->init((J3DModelData*)model_data, pbtk, 1, 0, 1.0f, 0, -1)) {
|
|
return 0;
|
|
}
|
|
|
|
mpOnBtk->setPlaySpeed(0.0f);
|
|
}
|
|
|
|
{
|
|
J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(getArcName(), getRunBtkName());
|
|
JUT_ASSERT(491, pbtk != NULL);
|
|
mpRunBtk = new mDoExt_btkAnm();
|
|
if (mpRunBtk == NULL || !mpRunBtk->init((J3DModelData*)model_data, pbtk, 1, 0, 1.0f, 0, -1)) {
|
|
return 0;
|
|
}
|
|
|
|
mpRunBtk->setPlaySpeed(0.0f);
|
|
}
|
|
|
|
{
|
|
J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(getArcName(), getRunBrkName());
|
|
JUT_ASSERT(504, pbrk != NULL);
|
|
mpRunBrk = new mDoExt_brkAnm();
|
|
if (mpRunBrk == NULL || !mpRunBrk->init((J3DModelData*)model_data, pbrk, 1, 0, 1.0f, 0, -1)) {
|
|
return 0;
|
|
}
|
|
|
|
mpRunBrk->setPlaySpeed(0.0f);
|
|
}
|
|
|
|
{
|
|
J3DAnmColor* pbpk = (J3DAnmColor*)dComIfG_getObjectRes(getArcName(), getRunBpkName());
|
|
JUT_ASSERT(517, pbpk != NULL);
|
|
mpRunBpk = new mDoExt_bpkAnm();
|
|
if (mpRunBpk == NULL || !mpRunBpk->init((J3DModelData*)model_data, pbpk, 1, 0, 1.0f, 0, -1)) {
|
|
return 0;
|
|
}
|
|
|
|
mpRunBpk->setPlaySpeed(0.0f);
|
|
}
|
|
|
|
mpBgw = dBgW_NewSet((cBgD_t*)dComIfG_getObjectRes(getArcName(), getDzbName()), 1, &mBgMtx);
|
|
if (mpBgw == NULL) {
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
bool daObjSwpush2::Act_c::create_init() {
|
|
bool rt = true;
|
|
|
|
mDoMtx_stack_c::transS(current.pos);
|
|
mDoMtx_stack_c::ZXYrotM(shape_angle);
|
|
mDoMtx_stack_c::scaleM(scale);
|
|
cMtx_copy(mDoMtx_stack_c::get(), mBgMtx);
|
|
mpBgw->SetRideCallback(rideCB);
|
|
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
|
|
init_mtx();
|
|
|
|
fopAcM_setCullSizeBox(this, -150.0f * attr().size, 0.0f, -150.0f * attr().size, 150.0f * attr().size, 60.0f, 150.0f * attr().size);
|
|
|
|
mShockTimer = 0;
|
|
mRideType = 0;
|
|
mPrevRideType = 0;
|
|
mRideTimer = 0;
|
|
mPushFlag = false;
|
|
mIsPlayerRideHeavy = false;
|
|
mPrevPlayerRideHeavy = false;
|
|
mHeavyRideTimer = 0;
|
|
mHeavyPushFlag = false;
|
|
|
|
u8 temp_r26 = cLib_checkBit<AttrFlag_e>(attr().flags, AttrFlag_REV_SW_e) != 0;
|
|
u8 temp_r28 = cLib_checkBit<AttrFlag_e>(attr().flags, AttrFlag_UNK_0x10_e) != 0;
|
|
u8 temp_r25 = cLib_checkBit<AttrFlag_e>(attr().flags, AttrFlag_UNK_0x20_e) != 0;
|
|
|
|
bool is_sw = is_switch();
|
|
bool is_sw2 = is_switch2();
|
|
if ((temp_r26 || (!is_sw && !temp_r28) || (is_sw && temp_r28)) && (!temp_r25 || !is_sw2)) {
|
|
field_0x5e8 = 1.0f;
|
|
mode_upper_init();
|
|
} else {
|
|
field_0x5e8 = -1.0f;
|
|
mode_lower_init();
|
|
}
|
|
|
|
mEventIdx = dComIfGp_getEventManager().getEventIdx(this, prm_get_evId());
|
|
if (dComIfG_Bgsp().Regist(mpBgw, this)) {
|
|
rt = false;
|
|
}
|
|
|
|
return rt;
|
|
}
|
|
|
|
int daObjSwpush2::Act_c::create_res_load() {
|
|
int phase_state;
|
|
if (attr().arcname != NULL) {
|
|
phase_state = dComIfG_resLoad(&mPhase, attr().arcname);
|
|
} else {
|
|
phase_state = cPhs_COMPLEATE_e;
|
|
}
|
|
|
|
if (phase_state != cPhs_COMPLEATE_e) {
|
|
return phase_state;
|
|
}
|
|
|
|
return cPhs_COMPLEATE_e;
|
|
}
|
|
|
|
int daObjSwpush2::Act_c::Mthd_Create() {
|
|
fopAcM_ct(this, daObjSwpush2::Act_c);
|
|
|
|
prmZ_init();
|
|
mType = prm_get_type();
|
|
|
|
int phase_state = create_res_load();
|
|
if (phase_state == cPhs_COMPLEATE_e) {
|
|
scale.x *= attr().size;
|
|
scale.z *= attr().size;
|
|
|
|
if (!fopAcM_entrySolidHeap(this, solidHeapCB, attr().heap_size)) {
|
|
return cPhs_ERROR_e;
|
|
}
|
|
|
|
if (!create_init()) {
|
|
return cPhs_ERROR_e;
|
|
}
|
|
|
|
demo_non_init();
|
|
|
|
#if DEBUG
|
|
M_hio.ct();
|
|
#endif
|
|
}
|
|
|
|
return phase_state;
|
|
}
|
|
|
|
int daObjSwpush2::Act_c::Mthd_Delete() {
|
|
if (mpBgw != NULL && mpBgw->ChkUsed()) {
|
|
if (dComIfG_Bgsp().Release(mpBgw)) {
|
|
OS_REPORT_ERROR("Release Error(%s %d)\n", __FILE__, 683);
|
|
}
|
|
}
|
|
|
|
dComIfG_resDelete(&mPhase, attr().arcname);
|
|
|
|
#if DEBUG
|
|
M_hio.dt();
|
|
#endif
|
|
return 1;
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::set_mtx() {
|
|
mDoMtx_stack_c::transS(current.pos.x, mTopPos + (-10.0f + current.pos.y), current.pos.z);
|
|
mDoMtx_stack_c::ZXYrotM(shape_angle);
|
|
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
|
|
|
mDoMtx_stack_c::scaleM(scale);
|
|
cMtx_copy(mDoMtx_stack_c::get(), mBgMtx);
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::init_mtx() {
|
|
mpModel->setBaseScale(scale);
|
|
set_mtx();
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::rideCB(dBgW* i_bgw, fopAc_ac_c* i_this, fopAc_ac_c* i_rideActor) {
|
|
UNUSED(i_bgw);
|
|
daObjSwpush2::Act_c* a_this = (daObjSwpush2::Act_c*)i_this;
|
|
|
|
if (fopAcM_CheckStatus(i_rideActor, 0x400)) {
|
|
if (fopAcM_CheckCarryType(i_rideActor, fopAcM_CARRY_TYPE_1)) {
|
|
a_this->mRideType = 2;
|
|
} else {
|
|
a_this->mRideType = 1;
|
|
}
|
|
|
|
bool is_player_ride = fopAcM_GetProfName(i_rideActor) == PROC_ALINK;
|
|
if (is_player_ride) {
|
|
a_this->mShockTimer = 4;
|
|
}
|
|
|
|
if (is_player_ride && ((daPy_py_c*)i_rideActor)->checkEquipHeavyBoots()) {
|
|
a_this->mIsPlayerRideHeavy = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::calc_top_pos() {
|
|
cLib_addCalc(&field_0x5e8, field_0x5ec, 0.05f, 0.02f, 0.01f);
|
|
mTopPos = -50.0f * (1.0f - field_0x5e8);
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::set_push_flag() {
|
|
if (mShockTimer != 0) {
|
|
mShockTimer--;
|
|
}
|
|
|
|
if (mPushFlag) {
|
|
if (mRideType != 0) {
|
|
if (mRideType == 2) {
|
|
mRideTimer = attr().field_0x26;
|
|
} else {
|
|
mRideTimer = attr().ride_time;
|
|
}
|
|
} else {
|
|
if (--mRideTimer <= 0) {
|
|
mPushFlag = false;
|
|
}
|
|
}
|
|
} else if (mRideType != 0) {
|
|
if (++mRideTimer >= attr().ride_time) {
|
|
mPushFlag = true;
|
|
}
|
|
} else {
|
|
mRideTimer = 0;
|
|
}
|
|
|
|
if (mHeavyPushFlag) {
|
|
if (mIsPlayerRideHeavy) {
|
|
mHeavyRideTimer = attr().heavy_ride_time;
|
|
} else if (--mHeavyRideTimer <= 0) {
|
|
mHeavyPushFlag = false;
|
|
}
|
|
} else if (mIsPlayerRideHeavy) {
|
|
if (++mHeavyRideTimer >= attr().heavy_ride_time) {
|
|
mHeavyPushFlag = true;
|
|
}
|
|
} else {
|
|
mHeavyRideTimer = 0;
|
|
}
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::mode_upper_init() {
|
|
mModeProc = 0;
|
|
field_0x5df = 0;
|
|
mPauseDemoTimer = 0;
|
|
field_0x5ec = 1.0f;
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::mode_upper() {
|
|
bool do_pause_demo = false;
|
|
bool do_sw_demo = false;
|
|
bool is_push_flag = false;
|
|
f32 var_f31 = 1.0f;
|
|
|
|
if (mPushFlag) {
|
|
if (cLib_checkBit<AttrFlag_e>(attr().flags, AttrFlag_HEAVY_e)) {
|
|
if (mHeavyPushFlag) {
|
|
is_push_flag = true;
|
|
}
|
|
} else {
|
|
is_push_flag = true;
|
|
}
|
|
}
|
|
|
|
if (mRideType != 0 && mPrevRideType == 0 && mPauseDemoTimer <= 0) {
|
|
mPauseDemoTimer = 30;
|
|
do_pause_demo = true;
|
|
} else if (mPauseDemoTimer > 0) {
|
|
mPauseDemoTimer--;
|
|
}
|
|
|
|
bool is_sw = is_switch();
|
|
bool temp_r26 = cLib_checkBit<AttrFlag_e>(attr().flags, AttrFlag_UNK_0x10_e);
|
|
if (is_push_flag || (cLib_checkBit<AttrFlag_e>(attr().flags, AttrFlag_UNK_0x1_e) && ((is_sw && !temp_r26) || (!is_sw && temp_r26)))) {
|
|
if (is_push_flag) {
|
|
field_0x5df = 1;
|
|
}
|
|
do_sw_demo = true;
|
|
mode_u_l_init();
|
|
}
|
|
|
|
if (do_sw_demo) {
|
|
demo_reqSw_init();
|
|
} else if (do_pause_demo) {
|
|
demo_reqPause_init();
|
|
}
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::mode_u_l_init() {
|
|
mModeProc = 1;
|
|
field_0x5f0 = 12;
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::mode_u_l() {
|
|
if (field_0x5f0 != 0) {
|
|
field_0x5f0--;
|
|
if (field_0x5f0 == 0) {
|
|
mpRunBpk->setPlaySpeed(1.0f);
|
|
mpRunBtk->setPlaySpeed(1.0f);
|
|
mpRunBrk->setPlaySpeed(1.0f);
|
|
field_0x5ec = -1.0f;
|
|
}
|
|
}
|
|
|
|
if (field_0x5e8 <= -1.0f) {
|
|
if (field_0x5df != 0) {
|
|
if (cLib_checkBit<AttrFlag_e>(attr().flags, AttrFlag_REV_SW_e)) {
|
|
rev_switch();
|
|
} else if (cLib_checkBit<AttrFlag_e>(attr().flags, AttrFlag_UNK_0x10_e)) {
|
|
off_switch();
|
|
} else {
|
|
on_switch();
|
|
}
|
|
|
|
if (mShockTimer != 0) {
|
|
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER4, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
|
|
}
|
|
}
|
|
|
|
fopAcM_seStart(this, JA_SE_OBJ_FOOT_SW_ON, 0);
|
|
mode_lower_init();
|
|
}
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::mode_lower_init() {
|
|
mModeProc = 2;
|
|
field_0x5df = 0;
|
|
field_0x5ec = -1.0f;
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::mode_lower() {}
|
|
|
|
void daObjSwpush2::Act_c::mode_l_u() {
|
|
if (field_0x5e8 >= 1.0f) {
|
|
if (field_0x5df != 0) {
|
|
if (cLib_checkBit<AttrFlag_e>(attr().flags, AttrFlag_UNK_0x10_e)) {
|
|
on_switch();
|
|
} else {
|
|
off_switch();
|
|
}
|
|
}
|
|
mode_upper_init();
|
|
}
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::demo_non_init() {
|
|
mDemoProc = 0;
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::demo_non() {}
|
|
|
|
void daObjSwpush2::Act_c::demo_reqPause_init() {
|
|
if (mDemoProc == 0) {
|
|
mDemoProc = 1;
|
|
fopAcM_orderPotentialEvent(this, 2, 0, 0);
|
|
eventInfo.onCondition(dEvtCnd_CANDEMO_e);
|
|
}
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::demo_reqPause() {
|
|
if (eventInfo.checkCommandDemoAccrpt()) {
|
|
demo_runPause_init(TRUE);
|
|
} else {
|
|
demo_non_init();
|
|
}
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::demo_runPause_init(BOOL i_setRunTime) {
|
|
mDemoProc = 2;
|
|
if (i_setRunTime) {
|
|
mDemoRunTime = attr().demo_run_time;
|
|
}
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::demo_runPause() {
|
|
mDemoRunTime--;
|
|
if (mDemoRunTime <= 0) {
|
|
dComIfGp_event_reset();
|
|
demo_non_init();
|
|
}
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::demo_stop_puase() {
|
|
if (mDemoProc == 1) {
|
|
demo_reqPause();
|
|
}
|
|
|
|
if (mDemoProc == 2) {
|
|
dComIfGp_event_reset();
|
|
}
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::demo_reqSw_init() {
|
|
if (dComIfGp_evmng_existence(mEventIdx)) {
|
|
if (mDemoProc == 0 || mDemoProc == 1 || mDemoProc == 2) {
|
|
demo_stop_puase();
|
|
mDemoProc = 3;
|
|
fopAcM_orderOtherEventId(this, mEventIdx, prm_get_evId(), 0xFFFF, 0, 1);
|
|
eventInfo.onCondition(dEvtCnd_CANDEMO_e);
|
|
}
|
|
} else {
|
|
mDemoRunTime = 100;
|
|
demo_runPause_init(FALSE);
|
|
}
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::demo_reqSw() {
|
|
if (eventInfo.checkCommandDemoAccrpt()) {
|
|
demo_runSw_init();
|
|
} else {
|
|
fopAcM_orderOtherEventId(this, mEventIdx, prm_get_evId(), 0xFFFF, 0, 1);
|
|
eventInfo.onCondition(dEvtCnd_CANDEMO_e);
|
|
}
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::demo_runSw_init() {
|
|
mDemoProc = 4;
|
|
}
|
|
|
|
void daObjSwpush2::Act_c::demo_runSw() {
|
|
if (dComIfGp_evmng_endCheck(mEventIdx)) {
|
|
dComIfGp_event_reset();
|
|
demo_non_init();
|
|
}
|
|
}
|
|
|
|
int daObjSwpush2::Act_c::Mthd_Execute() {
|
|
static void (daObjSwpush2::Act_c::*demo_proc[])() = {
|
|
&daObjSwpush2::Act_c::demo_non,
|
|
&daObjSwpush2::Act_c::demo_reqPause,
|
|
&daObjSwpush2::Act_c::demo_runPause,
|
|
&daObjSwpush2::Act_c::demo_reqSw,
|
|
&daObjSwpush2::Act_c::demo_runSw,
|
|
};
|
|
|
|
(this->*demo_proc[mDemoProc])();
|
|
set_push_flag();
|
|
|
|
static void (daObjSwpush2::Act_c::*mode_proc[])() = {
|
|
&daObjSwpush2::Act_c::mode_upper,
|
|
&daObjSwpush2::Act_c::mode_u_l,
|
|
&daObjSwpush2::Act_c::mode_lower,
|
|
&daObjSwpush2::Act_c::mode_l_u,
|
|
};
|
|
|
|
(this->*mode_proc[mModeProc])();
|
|
calc_top_pos();
|
|
|
|
mpNmlBrk->play();
|
|
mpNmlBtk->play();
|
|
mpOnBtk->play();
|
|
mpRunBpk->play();
|
|
mpRunBrk->play();
|
|
mpRunBtk->play();
|
|
|
|
if (!is_switch()) {
|
|
if (daPy_getPlayerActorClass()->current.pos.abs(current.pos) < attr().effect_distance) {
|
|
mpOnBtk->setPlaySpeed(1.0f);
|
|
} else {
|
|
mpOnBtk->setPlaySpeed(-1.0f);
|
|
}
|
|
}
|
|
|
|
mPrevRideType = mRideType != 0;
|
|
mPrevPlayerRideHeavy = mIsPlayerRideHeavy;
|
|
mRideType = 0;
|
|
mIsPlayerRideHeavy = false;
|
|
|
|
set_mtx();
|
|
mpBgw->Move();
|
|
|
|
eyePos.x = current.pos.x;
|
|
eyePos.y = (current.pos.y + mTopPos) - -10.0f;
|
|
eyePos.z = current.pos.z;
|
|
return 1;
|
|
}
|
|
|
|
int daObjSwpush2::Act_c::Mthd_Draw() {
|
|
g_env_light.settingTevStruct(16, ¤t.pos, &tevStr);
|
|
g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
|
|
|
|
mpNmlBrk->entry(mpModel->getModelData());
|
|
mpNmlBtk->entry(mpModel->getModelData());
|
|
|
|
if (mpOnBtk->isStop() && mpOnBtk->getFrame() != 0.0f) {
|
|
mpRunBtk->entry(mpModel->getModelData());
|
|
mpRunBpk->entry(mpModel->getModelData());
|
|
mpRunBrk->entry(mpModel->getModelData());
|
|
} else {
|
|
mpOnBtk->entry(mpModel->getModelData());
|
|
}
|
|
|
|
dComIfGd_setListBG();
|
|
mDoExt_modelUpdateDL(mpModel);
|
|
dComIfGd_setList();
|
|
|
|
mpNmlBrk->remove(mpModel->getModelData());
|
|
mpNmlBtk->remove(mpModel->getModelData());
|
|
|
|
if (mpOnBtk->isStop() && mpOnBtk->getFrame() != 0.0f) {
|
|
mpRunBtk->remove(mpModel->getModelData());
|
|
mpRunBpk->remove(mpModel->getModelData());
|
|
mpRunBrk->remove(mpModel->getModelData());
|
|
} else {
|
|
mpOnBtk->remove(mpModel->getModelData());
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
namespace daObjSwpush2 {
|
|
namespace {
|
|
int Mthd_Create(void* i_this) {
|
|
return ((Act_c*)i_this)->Mthd_Create();
|
|
}
|
|
|
|
int Mthd_Delete(void* i_this) {
|
|
return ((Act_c*)i_this)->Mthd_Delete();
|
|
}
|
|
|
|
int Mthd_Execute(void* i_this) {
|
|
return ((Act_c*)i_this)->Mthd_Execute();
|
|
}
|
|
|
|
int Mthd_Draw(void* i_this) {
|
|
return ((Act_c*)i_this)->Mthd_Draw();
|
|
}
|
|
|
|
actor_method_class Mthd_Table = {
|
|
(process_method_func)Mthd_Create,
|
|
(process_method_func)Mthd_Delete,
|
|
(process_method_func)Mthd_Execute,
|
|
NULL,
|
|
(process_method_func)Mthd_Draw,
|
|
};
|
|
}
|
|
}
|
|
|
|
actor_process_profile_definition g_profile_Obj_Swpush2 = {
|
|
fpcLy_CURRENT_e, // mLayerID
|
|
2, // mListID
|
|
fpcPi_CURRENT_e, // mListPrio
|
|
PROC_Obj_Swpush2, // mProcName
|
|
&g_fpcLf_Method.base, // sub_method
|
|
sizeof(daObjSwpush2::Act_c), // mSize
|
|
0, // mSizeOther
|
|
0, // mParameters
|
|
&g_fopAc_Method.base, // sub_method
|
|
12, // mPriority
|
|
&daObjSwpush2::Mthd_Table, // sub_method
|
|
0x00040100, // mStatus
|
|
fopAc_ACTOR_e, // mActorType
|
|
fopAc_CULLBOX_CUSTOM_e, // cullType
|
|
};
|