mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-18 05:08:57 -04:00
906 lines
22 KiB
C++
906 lines
22 KiB
C++
//
|
|
// Generated by dtk
|
|
// Translation Unit: d_a_door10.cpp
|
|
//
|
|
|
|
#include "d/dolzel_rel.h" // IWYU pragma: keep
|
|
#include "d/actor/d_a_door10.h"
|
|
#include "f_op/f_op_actor_mng.h"
|
|
#include "d/d_com_inf_game.h"
|
|
#include "res/Object/DoorBs.h"
|
|
|
|
/* 00000078-000000C8 .text chkMakeKey__10daDoor10_cFv */
|
|
s32 daDoor10_c::chkMakeKey() {
|
|
u8 cVar1 = getType();
|
|
|
|
if (cVar1 == 4 || cVar1 == 5) {
|
|
return 1;
|
|
}
|
|
|
|
if (cVar1 == 1) {
|
|
return 2;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* 000000C8-000001A8 .text setKey__10daDoor10_cFv */
|
|
void daDoor10_c::setKey() {
|
|
if (chkMakeKey() == 1) {
|
|
/* Normal Locked Door */
|
|
if (!dComIfGs_isSwitch(getSwbit(), -1)) {
|
|
mKeyLock.keyOn();
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (chkMakeKey() == 2) {
|
|
/* Boss Door */
|
|
if (getSwbit() == 0xFF) {
|
|
mKeyLock.keyOff();
|
|
return;
|
|
}
|
|
|
|
if (getSwbit() >= 0x80 || !dComIfGs_isSwitch(getSwbit(), -1)) {
|
|
mKeyLock.keyOn();
|
|
return;
|
|
}
|
|
}
|
|
|
|
mKeyLock.keyOff();
|
|
}
|
|
|
|
/* 000001A8-00000218 .text chkMakeStop__10daDoor10_cFv */
|
|
BOOL daDoor10_c::chkMakeStop() {
|
|
u8 cVar3 = getSwbit2();
|
|
if (cVar3 != 0xFF) {
|
|
return TRUE;
|
|
}
|
|
|
|
if (!chkMakeKey() && getSwbit() != 0xFF) {
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
/* 00000218-000002E4 .text chkStopF__10daDoor10_cFv */
|
|
s32 daDoor10_c::chkStopF() {
|
|
u8 bVar3 = getType();
|
|
u8 uVar1 = getSwbit();
|
|
u8 uVar2 = getFRoomNo();
|
|
|
|
if (uVar1 == 0xFF) {
|
|
return 0;
|
|
}
|
|
|
|
switch (bVar3) {
|
|
case 0:
|
|
case 2:
|
|
case 3:
|
|
if (dComIfGp_roomControl_checkStatusFlag(uVar2, 0x1) == FALSE) {
|
|
return -1;
|
|
}
|
|
return !dComIfGs_isSwitch(uVar1, uVar2);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 000002E4-00000374 .text chkStopB__10daDoor10_cFv */
|
|
s32 daDoor10_c::chkStopB() {
|
|
s32 ret;
|
|
u8 uVar1 = getSwbit2();
|
|
u8 uVar2 = getBRoomNo();
|
|
if (uVar1 == 0xFF) {
|
|
ret = 0;
|
|
} else if (dComIfGp_roomControl_checkStatusFlag(uVar2, 0x1) == FALSE) {
|
|
ret = -1;
|
|
} else {
|
|
ret = !dComIfGs_isSwitch(uVar1, uVar2);
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
/* 00000374-00000408 .text setStop__10daDoor10_cFv */
|
|
void daDoor10_c::setStop() {
|
|
if (chkMakeStop() && mStopBars.mpModel != NULL) {
|
|
mStopBars.mFrontCheck = mFrontCheck;
|
|
if (mFrontCheck == 0) {
|
|
mStopBars.m8 = chkStopF();
|
|
mStopBars.mA = chkStopB();
|
|
} else {
|
|
mStopBars.m8 = chkStopB();
|
|
mStopBars.mA =chkStopF();
|
|
}
|
|
mStopBars.mOffsY = 0.0f;
|
|
}
|
|
}
|
|
|
|
/* 00000408-00000598 .text chkStopOpen__10daDoor10_cFv */
|
|
BOOL daDoor10_c::chkStopOpen() {
|
|
u8 cVar3 = getType();
|
|
u8 swbit;
|
|
u8 roomNo;
|
|
|
|
if (mFrontCheck == 0) {
|
|
swbit = getSwbit();
|
|
roomNo = getFRoomNo();
|
|
} else {
|
|
swbit = getSwbit2();
|
|
roomNo = getBRoomNo();
|
|
}
|
|
|
|
if ((mFrontCheck == 0 && cVar3 == 2) || (mFrontCheck == 1 && cVar3 == 5)) {
|
|
if (
|
|
dComIfGp_event_runCheck() == FALSE
|
|
#if VERSION > VERSION_DEMO
|
|
|| m2A1 == 0
|
|
#endif
|
|
) {
|
|
if (dComIfGp_roomControl_checkRoomDisp(roomNo)) {
|
|
if (fopAcM_myRoomSearchEnemy(roomNo) == NULL) {
|
|
if (m2A1 != 0) {
|
|
m2A1--;
|
|
return FALSE;
|
|
}
|
|
|
|
if (swbit != 0xFF) {
|
|
dComIfGs_onSwitch(swbit, roomNo);
|
|
}
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
#if VERSION > VERSION_DEMO
|
|
if (getArg1() == 15) {
|
|
m2A1 = 0;
|
|
} else {
|
|
m2A1 = 0x41;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
#if VERSION == VERSION_DEMO
|
|
if (getArg1() == 15) {
|
|
m2A1 = 0;
|
|
} else {
|
|
m2A1 = 0x41;
|
|
}
|
|
#endif
|
|
} else if (swbit != 0xFF && dComIfGs_isSwitch(swbit, roomNo)) {
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
/* 00000598-000005BC .text setStopDemo__10daDoor10_cFv */
|
|
void daDoor10_c::setStopDemo() {
|
|
if (mFrontCheck == 0) {
|
|
m2C6 = 0;
|
|
} else {
|
|
m2C6 = 1;
|
|
}
|
|
}
|
|
|
|
/* 000005BC-000006A4 .text chkStopClose__10daDoor10_cFv */
|
|
BOOL daDoor10_c::chkStopClose() {
|
|
u8 cVar3 = getType();
|
|
u8 uVar1;
|
|
u8 uVar2;
|
|
|
|
if (mStopBars.mpModel == NULL) {
|
|
return false;
|
|
}
|
|
|
|
if (cVar3 == 1) {
|
|
return false;
|
|
}
|
|
|
|
if (mFrontCheck == 0) {
|
|
if (cVar3 == 2) {
|
|
return false;
|
|
}
|
|
uVar1 = getSwbit();
|
|
uVar2 = getFRoomNo();
|
|
} else {
|
|
if (cVar3 == 5) {
|
|
return false;
|
|
}
|
|
uVar1 = getSwbit2();
|
|
uVar2 = getBRoomNo();
|
|
}
|
|
|
|
if (uVar1 == 0xFF) {
|
|
return false;
|
|
}
|
|
|
|
if (dComIfGs_isSwitch(uVar1, uVar2)) {
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
/* 000006A4-00000714 .text getBdlName__10daDoor10_cFv */
|
|
const char* daDoor10_c::getBdlName() {
|
|
switch (getType()) {
|
|
case 1: return "door20.bdl";
|
|
case 2: break;
|
|
case 3: return "door11.bdl";
|
|
}
|
|
return "door10.bdl";
|
|
}
|
|
|
|
/* 00000714-00000788 .text getDzbName__10daDoor10_cFv */
|
|
const char* daDoor10_c::getDzbName() {
|
|
switch (getType()) {
|
|
case 1: return "door20.dzb";
|
|
case 2: break;
|
|
case 3: return "door11.dzb";
|
|
}
|
|
return "door10.dzb";
|
|
}
|
|
|
|
/* 00000788-000007CC .text getSize2X__10daDoor10_cFv */
|
|
f32 daDoor10_c::getSize2X() {
|
|
switch (getType()) {
|
|
case 3:
|
|
return SQUARE(15.0f);
|
|
}
|
|
return SQUARE(110.0f);
|
|
}
|
|
|
|
const char daDoor10_c::M_arcname[] = "door10";
|
|
|
|
/* 000007CC-000007EC .text CheckCreateHeap__FP10fopAc_ac_c */
|
|
static BOOL CheckCreateHeap(fopAc_ac_c* a_this) {
|
|
return ((daDoor10_c*)a_this)->CreateHeap();
|
|
}
|
|
|
|
/* 000007EC-00000AEC .text CreateHeap__10daDoor10_cFv */
|
|
BOOL daDoor10_c::CreateHeap() {
|
|
J3DModelData* modelData;
|
|
|
|
if (m364 != 0) {
|
|
modelData = (J3DModelData*)dComIfG_getObjectRes("DoorBs", m364);
|
|
} else {
|
|
modelData = (J3DModelData*)dComIfG_getStageRes("Stage", getBdlName());
|
|
}
|
|
|
|
JUT_ASSERT(DEMO_SELECT(354, 356), modelData);
|
|
|
|
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000022);
|
|
if (mpModel == NULL) {
|
|
return FALSE;
|
|
}
|
|
|
|
switch (chkMakeKey()) {
|
|
case 1:
|
|
if (!mKeyLock.keyCreate(0)) {
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
if (!mKeyLock.keyCreate(1)) {
|
|
return FALSE;
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (mHkyo.chkUse() && !mHkyo.create()) {
|
|
return FALSE;
|
|
}
|
|
|
|
if (chkMakeStop() && !mStopBars.create()) {
|
|
return FALSE;
|
|
}
|
|
|
|
mpBgW = new dBgW();
|
|
if (mpBgW == NULL) {
|
|
return FALSE;
|
|
}
|
|
|
|
cBgD_t* cBgD;
|
|
if (m364 != 0) {
|
|
if (m364 == 4) {
|
|
cBgD = (cBgD_t*)dComIfG_getObjectRes("DoorBs", dRes_INDEX_DOORBS_DZB_DOOR20_D_e);
|
|
} else {
|
|
cBgD = (cBgD_t*)dComIfG_getObjectRes("DoorBs", dRes_INDEX_DOORBS_DZB_DOOR20_K_e);
|
|
}
|
|
} else {
|
|
cBgD = (cBgD_t*)dComIfG_getStageRes("Stage", getDzbName());
|
|
|
|
}
|
|
|
|
if (cBgD == NULL) {
|
|
return FALSE;
|
|
}
|
|
|
|
calcMtx();
|
|
mKeyLock.calcMtx(this);
|
|
mStopBars.calcMtx(this);
|
|
if (mHkyo.chkUse()) {
|
|
mHkyo.calcMtx(this, 0.0f);
|
|
}
|
|
|
|
if (mpBgW->Set(cBgD, cBgW::MOVE_BG_e, &mpModel->getBaseTRMtx()) == 1) {
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00000AEC-00000C8C .text setEventPrm__10daDoor10_cFv */
|
|
void daDoor10_c::setEventPrm() {
|
|
if (mFrontCheck == 0) {
|
|
m2C6 = 2;
|
|
if (mStopBars.mA == 0xff) {
|
|
mStopBars.mA = chkStopB();
|
|
}
|
|
} else {
|
|
m2C6 = 3;
|
|
if (getType() == 1 && getArg1() != 16) {
|
|
return;
|
|
}
|
|
|
|
if (mStopBars.mA == 0xff) {
|
|
mStopBars.mA = chkStopF();
|
|
}
|
|
}
|
|
|
|
if (mStopBars.m8 != 0) {
|
|
return;
|
|
}
|
|
|
|
if (getType() == 1 && getArg1() != 16) {
|
|
m2C6 = 6;
|
|
} else if (mStopBars.mA == 1) {
|
|
m2C6 += 2;
|
|
}
|
|
|
|
if (mKeyLock.mbEnabled != 0) {
|
|
switch (getType()) {
|
|
case 1:
|
|
if (dComIfGs_isDungeonItemBossKey() == 0) {
|
|
return;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
if (dComIfGs_getKeyNum() == 0) {
|
|
return;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (checkArea(getSize2X(), SQUARE(110.0f), SQUARE(250.0f))) {
|
|
eventInfo.setEventId(mEventIdx[m2C6]);
|
|
eventInfo.setToolId(mToolId[m2C6]);
|
|
eventInfo.onCondition(dEvtCnd_CANDOOR_e);
|
|
}
|
|
}
|
|
|
|
/* 00000C8C-00000D38 .text openInit__10daDoor10_cFv */
|
|
void daDoor10_c::openInit() {
|
|
openInitCom(1);
|
|
onFlag(1);
|
|
dComIfG_Bgsp()->Release(mpBgW);
|
|
m358 = 0.0f;
|
|
speedF = 0.0f;
|
|
fopAcM_seStart(this, JA_SE_OBJ_STN_DOOR_MOVE_U, 0);
|
|
}
|
|
|
|
/* 00000D38-00000DC8 .text openProc__10daDoor10_cFv */
|
|
BOOL daDoor10_c::openProc() {
|
|
BOOL ret = FALSE;
|
|
cLib_chaseF(&speedF, 30.0f, 4.0f);
|
|
if (cLib_chaseF(&m358, 300.0f, speedF) != 0) {
|
|
ret = TRUE;
|
|
}
|
|
calcMtx();
|
|
if (mHkyo.chkUse()) {
|
|
mHkyo.calcMtx(this, m358);
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
/* 00000DC8-00000E5C .text openEnd__10daDoor10_cFv */
|
|
void daDoor10_c::openEnd() {
|
|
fopAcM_seStart(this, JA_SE_OBJ_STN_DOOR_STOP_U, 0);
|
|
offFlag(1);
|
|
m358 = 300.0;
|
|
speedF = 0.0f;
|
|
}
|
|
|
|
/* 00000E5C-00000F3C .text closeInit__10daDoor10_cFv */
|
|
void daDoor10_c::closeInit() {
|
|
onFlag(2);
|
|
bool rt = dComIfG_Bgsp()->Regist(mpBgW, this);
|
|
JUT_ASSERT(DEMO_SELECT(539, 541), !rt);
|
|
dComIfGp_map_clrAGBMapSendStopFlg();
|
|
fopAcM_seStart(this, JA_SE_OBJ_STN_DOOR_MOVE_D, 0);
|
|
}
|
|
|
|
/* 00000F3C-00000FCC .text closeProc__10daDoor10_cFv */
|
|
BOOL daDoor10_c::closeProc() {
|
|
BOOL ret = FALSE;
|
|
cLib_chaseF(&speedF, 60.0f, 6.0f);
|
|
if (cLib_chaseF(&m358, 0.0f, speedF) != 0) {
|
|
ret = TRUE;
|
|
}
|
|
calcMtx();
|
|
if (mHkyo.chkUse()) {
|
|
mHkyo.calcMtx(this, m358);
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
/* 00000FCC-00001084 .text closeEnd__10daDoor10_cFv */
|
|
void daDoor10_c::closeEnd() {
|
|
offFlag(2);
|
|
closeEndCom();
|
|
dComIfGp_getVibration().StartShock(4, -0x21, cXyz(0.0f, 1.0f, 0.0f));
|
|
fopAcM_seStart(this, JA_SE_OBJ_STN_DOOR_STOP_D, 0);
|
|
}
|
|
|
|
/* 00001084-000010FC .text calcMtx__10daDoor10_cFv */
|
|
void daDoor10_c::calcMtx() {
|
|
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
|
|
mDoMtx_stack_c::YrotM(home.angle.y);
|
|
mDoMtx_stack_c::transM(0.0f, m358, 0.0f);
|
|
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
|
}
|
|
|
|
/* 000010FC-0000125C .text CreateInit__10daDoor10_cFv */
|
|
BOOL daDoor10_c::CreateInit() {
|
|
if (dComIfG_Bgsp()->Regist(mpBgW, this)) {
|
|
JUT_ASSERT(DEMO_SELECT(605, 607), NULL);
|
|
}
|
|
|
|
tevStr.mRoomNo = current.roomNo;
|
|
m358 = 0.0f;
|
|
setAction(0);
|
|
if (getType() == 1) {
|
|
attention_info.position.y += 250.0f;
|
|
eyePos.y += 250.0f;
|
|
} else {
|
|
attention_info.position.y += 150.0f;
|
|
eyePos.y += 150.0f;
|
|
}
|
|
attention_info.flags = fopAc_Attn_ACTION_DOOR_e;
|
|
calcMtx();
|
|
mpBgW->Move();
|
|
mpBgW->SetRoomId(getFRoomNo());
|
|
initProc(1);
|
|
if (mHkyo.chkUse()) {
|
|
mHkyo.init();
|
|
mHkyo.calcMtx(this, 0.0f);
|
|
}
|
|
#if VERSION > VERSION_DEMO
|
|
m2A1 = 0x41;
|
|
#endif
|
|
return TRUE;
|
|
}
|
|
|
|
/* 0000125C-000013A8 .text create__10daDoor10_cFv */
|
|
cPhs_State daDoor10_c::create() {
|
|
switch (getArg1()) {
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
mHkyo.onUse(getArg1());
|
|
break;
|
|
|
|
default:
|
|
mHkyo.offUse();
|
|
break;
|
|
}
|
|
|
|
switch (getArg1()) {
|
|
case 13:
|
|
m364 = 4;
|
|
break;
|
|
|
|
case 14:
|
|
m364 = 5;
|
|
break;
|
|
|
|
default:
|
|
m364 = 0;
|
|
break;
|
|
}
|
|
|
|
cPhs_State ret;
|
|
if (m364 != 0) {
|
|
ret = dComIfG_resLoad(&mPhase, "DoorBs");
|
|
if (ret != cPhs_COMPLEATE_e) {
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
if (chkMakeKey()) {
|
|
ret = mKeyLock.keyResLoad();
|
|
if (ret != cPhs_COMPLEATE_e) {
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
if (mHkyo.chkUse()) {
|
|
ret = mHkyo.resLoad();
|
|
if (ret != cPhs_COMPLEATE_e) {
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
fopAcM_SetRoomNo(this, getFRoomNo());
|
|
if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, 0x3800)) {
|
|
return cPhs_ERROR_e;
|
|
}
|
|
|
|
CreateInit();
|
|
return cPhs_COMPLEATE_e;
|
|
}
|
|
|
|
/* 000013A8-000016B0 .text demoProc__10daDoor10_cFv */
|
|
void daDoor10_c::demoProc() {
|
|
s32 iVar1 = getDemoAction();
|
|
if (dComIfGp_evmng_getIsAddvance(mStaffId)) {
|
|
switch(iVar1) {
|
|
case 3:
|
|
openInit();
|
|
break;
|
|
|
|
case 4:
|
|
closeInit();
|
|
break;
|
|
|
|
case 7:
|
|
setGoal();
|
|
break;
|
|
|
|
case 5:
|
|
m2D0.smokeInit(this);
|
|
break;
|
|
|
|
case 6:
|
|
m2D0.smokeEnd();
|
|
break;
|
|
|
|
case 8:
|
|
mKeyLock.keyInit(this);
|
|
break;
|
|
|
|
case 2:
|
|
setStop();
|
|
if (mStopBars.m8 != 0) {
|
|
mStopBars.closeInit(this);
|
|
}
|
|
break;
|
|
|
|
case 1:
|
|
if (mHkyo.chkUse() && mHkyo.chkFirst()) {
|
|
mHkyo.onFirst();
|
|
} else {
|
|
mStopBars.openInit(this);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
switch(iVar1) {
|
|
case 3:
|
|
if (checkFlag(1)) {
|
|
if (openProc()) {
|
|
openEnd();
|
|
dComIfGp_evmng_cutEnd(mStaffId);
|
|
}
|
|
} else {
|
|
dComIfGp_evmng_cutEnd(mStaffId);
|
|
}
|
|
break;
|
|
|
|
case 4:
|
|
if (checkFlag(2)) {
|
|
if (closeProc()) {
|
|
closeEnd();
|
|
dComIfGp_evmng_cutEnd(mStaffId);
|
|
}
|
|
} else {
|
|
dComIfGp_evmng_cutEnd(mStaffId);
|
|
}
|
|
break;
|
|
|
|
case 5:
|
|
m2D0.smokeProc(this);
|
|
dComIfGp_evmng_cutEnd(mStaffId);
|
|
break;
|
|
|
|
case 8:
|
|
if (mKeyLock.keyProc()) {
|
|
dComIfGp_evmng_cutEnd(mStaffId);
|
|
}
|
|
mKeyLock.calcMtx(this);
|
|
break;
|
|
|
|
case 2:
|
|
if (mStopBars.closeProc(this)) {
|
|
dComIfGp_evmng_cutEnd(mStaffId);
|
|
}
|
|
mStopBars.calcMtx(this);
|
|
break;
|
|
|
|
case 1:
|
|
if (mHkyo.chkUse() && mHkyo.chkFirst()) {
|
|
dComIfGp_evmng_cutEnd(mStaffId);
|
|
} else if (mStopBars.openProc(this)) {
|
|
dComIfGp_evmng_cutEnd(mStaffId);
|
|
}
|
|
mStopBars.calcMtx(this);
|
|
break;
|
|
|
|
case 19:
|
|
if (dComIfGp_event_chkEventFlag(dEvtFlag_NOPARTNER_e)) {
|
|
setAction(1);
|
|
dComIfGp_event_reset();
|
|
shape_angle.y = current.angle.y;
|
|
dComIfGp_event_offEventFlag(dEvtFlag_NOPARTNER_e);
|
|
if (dComIfGp_evmng_checkStartDemo()) {
|
|
dComIfGp_evmng_cancelStartDemo();
|
|
}
|
|
}
|
|
dComIfGp_evmng_cutEnd(mStaffId);
|
|
break;
|
|
|
|
default:
|
|
dComIfGp_evmng_cutEnd(mStaffId);
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* 000016B0-00001850 .text daDoor10_actionWait__FP10daDoor10_c */
|
|
BOOL daDoor10_actionWait(daDoor10_c* i_this) {
|
|
if (i_this->eventInfo.checkCommandDoor()) {
|
|
i_this->initOpenDemo(1);
|
|
i_this->setAction(3);
|
|
i_this->demoProc();
|
|
} else {
|
|
if (i_this->mStopBars.m8 != 0) {
|
|
if (i_this->eventInfo.checkCommandDemoAccrpt()) {
|
|
i_this->mStaffId = dComIfGp_evmng_getMyStaffId("SHUTTER_DOOR");
|
|
i_this->shape_angle.y = i_this->current.angle.y;
|
|
if (i_this->mFrontCheck == 1) {
|
|
i_this->shape_angle.y += 0x7FFF;
|
|
}
|
|
i_this->setAction(3);
|
|
i_this->demoProc();
|
|
return TRUE;
|
|
}
|
|
|
|
if (i_this->chkStopOpen()) {
|
|
i_this->setStopDemo();
|
|
fopAcM_orderOtherEventId(i_this, i_this->mEventIdx[i_this->m2C6], i_this->mToolId[i_this->m2C6]);
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
if (i_this->mStopBars.m8 == 0 && i_this->chkStopClose()) {
|
|
i_this->mStopBars.m8 = 1;
|
|
i_this->mStopBars.closeInit(i_this);
|
|
i_this->mStopBars.calcMtx(i_this);
|
|
i_this->setAction(2);
|
|
return TRUE;
|
|
}
|
|
|
|
if (i_this->mHkyo.chkUse() && i_this->mHkyo.chkFirst()) {
|
|
i_this->setAction(4);
|
|
return TRUE;
|
|
}
|
|
|
|
if (i_this->mStopBars.m8 == 0) {
|
|
i_this->setEventPrm();
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00001850-000018A4 .text daDoor10_actionStopClose__FP10daDoor10_c */
|
|
BOOL daDoor10_actionStopClose(daDoor10_c* i_this) {
|
|
if (i_this->mStopBars.closeProc(i_this)) {
|
|
i_this->setAction(1);
|
|
}
|
|
|
|
i_this->mStopBars.calcMtx(i_this);
|
|
return TRUE;
|
|
}
|
|
|
|
/* 000018A4-00001928 .text daDoor10_actionDemo__FP10daDoor10_c */
|
|
BOOL daDoor10_actionDemo(daDoor10_c* i_this) {
|
|
if (dComIfGp_evmng_endCheck(i_this->mEventIdx[i_this->m2C6])) {
|
|
i_this->setAction(1);
|
|
dComIfGp_event_reset();
|
|
i_this->shape_angle.y = i_this->current.angle.y;
|
|
} else {
|
|
i_this->demoProc();
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00001928-00001A00 .text daDoor10_actionHkyo__FP10daDoor10_c */
|
|
BOOL daDoor10_actionHkyo(daDoor10_c* i_this) {
|
|
if (!i_this->mHkyo.chkUse()) {
|
|
i_this->setAction(1);
|
|
return TRUE;
|
|
}
|
|
|
|
if (i_this->eventInfo.checkCommandDemoAccrpt()) {
|
|
i_this->mStaffId = dComIfGp_evmng_getMyStaffId("SHUTTER_DOOR");
|
|
i_this->setAction(3);
|
|
i_this->demoProc();
|
|
} else if (i_this->mHkyo.chkStart()) {
|
|
i_this->m2C6 = 10;
|
|
fopAcM_orderOtherEventId(i_this, i_this->mEventIdx[i_this->m2C6], i_this->mToolId[i_this->m2C6]);
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00001A00-00001A80 .text daDoor10_actionInit__FP10daDoor10_c */
|
|
BOOL daDoor10_actionInit(daDoor10_c* i_this) {
|
|
i_this->setKey();
|
|
i_this->mKeyLock.calcMtx(i_this);
|
|
i_this->setStop();
|
|
i_this->mStopBars.calcMtx(i_this);
|
|
if (i_this->mHkyo.chkUse()) {
|
|
i_this->mHkyo.calcMtx(i_this, 0.0f);
|
|
}
|
|
daDoor10_actionWait(i_this);
|
|
i_this->setAction(1);
|
|
return 1;
|
|
}
|
|
|
|
/* 00001A80-00001BAC .text draw__10daDoor10_cFv */
|
|
BOOL daDoor10_c::draw() {
|
|
if (!drawCheck(getType() == 1)) {
|
|
return TRUE;
|
|
}
|
|
|
|
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &tevStr);
|
|
g_env_light.setLightTevColorType(mpModel, &tevStr);
|
|
|
|
dComIfGd_setListBG();
|
|
mDoExt_modelUpdateDL(mpModel);
|
|
dComIfGd_setList();
|
|
|
|
if (mKeyLock.mbEnabled) {
|
|
mKeyLock.draw(this);
|
|
}
|
|
|
|
if (mStopBars.m8 != 0 && mStopBars.mpModel != NULL) {
|
|
g_env_light.setLightTevColorType(mStopBars.mpModel, &tevStr);
|
|
mDoExt_modelUpdateDL(mStopBars.mpModel);
|
|
}
|
|
|
|
if (mHkyo.chkUse()) {
|
|
mHkyo.draw(this);
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00001BAC-00001BCC .text daDoor10_Draw__FP10daDoor10_c */
|
|
static BOOL daDoor10_Draw(daDoor10_c* i_this) {
|
|
return ((daDoor10_c*)i_this)->draw();
|
|
}
|
|
|
|
BOOL daDoor10_c::execute() {
|
|
typedef BOOL (*action)(daDoor10_c*);
|
|
static action l_action[] = {
|
|
daDoor10_actionInit,
|
|
daDoor10_actionWait,
|
|
daDoor10_actionStopClose,
|
|
daDoor10_actionDemo,
|
|
daDoor10_actionHkyo,
|
|
};
|
|
|
|
s32 iVar1 = checkExecute();
|
|
|
|
if (mHkyo.chkUse()) {
|
|
mHkyo.proc(this);
|
|
}
|
|
|
|
switch (iVar1) {
|
|
case 0:
|
|
setAction(0);
|
|
break;
|
|
|
|
case 2:
|
|
l_action[m354](this);
|
|
break;
|
|
|
|
case 1:
|
|
startDemoProc();
|
|
demoProc();
|
|
break;
|
|
|
|
default:
|
|
JUT_ASSERT(DEMO_SELECT(1028, 1032), NULL);
|
|
break;
|
|
}
|
|
|
|
mRoomNo2 = dComIfGp_roomControl_getStayNo();
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
/* 00001BCC-00001CCC .text daDoor10_Execute__FP10daDoor10_c */
|
|
static BOOL daDoor10_Execute(daDoor10_c* i_this) {
|
|
return i_this->execute();
|
|
|
|
}
|
|
|
|
/* 00001CCC-00001CD4 .text daDoor10_IsDelete__FP10daDoor10_c */
|
|
static BOOL daDoor10_IsDelete(daDoor10_c*) {
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00001CD4-00001E18 .text daDoor10_Delete__FP10daDoor10_c */
|
|
static BOOL daDoor10_Delete(daDoor10_c* i_this) {
|
|
fopAcM_RegisterDeleteID(i_this);
|
|
|
|
#if VERSION > VERSION_DEMO
|
|
if (i_this->heap != NULL)
|
|
#endif
|
|
{
|
|
dComIfG_Bgsp()->Release(i_this->mpBgW);
|
|
}
|
|
|
|
if (i_this->m364 != 0) {
|
|
dComIfG_resDelete(&i_this->mPhase, "DoorBs");
|
|
}
|
|
|
|
if (i_this->chkMakeKey()) {
|
|
i_this->mKeyLock.keyResDelete();
|
|
}
|
|
|
|
if (i_this->mHkyo.chkUse()) {
|
|
i_this->mHkyo.resDelete();
|
|
}
|
|
|
|
#if VERSION > VERSION_DEMO
|
|
i_this->m2D0.smokeEnd();
|
|
#endif
|
|
i_this->~daDoor10_c();
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00001E18-00001EA8 .text daDoor10_Create__FP10fopAc_ac_c */
|
|
static cPhs_State daDoor10_Create(fopAc_ac_c* a_this) {
|
|
fopAcM_RegisterCreateID(a_this);
|
|
fopAcM_ct(a_this, daDoor10_c);
|
|
return ((daDoor10_c*)a_this)->create();
|
|
}
|
|
|
|
static actor_method_class l_daDoor10_Method = {
|
|
(process_method_func)daDoor10_Create,
|
|
(process_method_func)daDoor10_Delete,
|
|
(process_method_func)daDoor10_Execute,
|
|
(process_method_func)daDoor10_IsDelete,
|
|
(process_method_func)daDoor10_Draw,
|
|
};
|
|
|
|
actor_process_profile_definition g_profile_DOOR10 = {
|
|
/* Layer ID */ fpcLy_CURRENT_e,
|
|
/* List ID */ 0x0007,
|
|
/* List Prio */ fpcPi_CURRENT_e,
|
|
/* Proc Name */ fpcNm_DOOR10_e,
|
|
/* Proc SubMtd */ &g_fpcLf_Method.base,
|
|
/* Size */ sizeof(daDoor10_c),
|
|
/* Size Other */ 0,
|
|
/* Parameters */ 0,
|
|
/* Leaf SubMtd */ &g_fopAc_Method.base,
|
|
/* Draw Prio */ fpcDwPi_DOOR10_e,
|
|
/* Actor SubMtd */ &l_daDoor10_Method,
|
|
/* Status */ fopAcStts_UNK4000_e | fopAcStts_UNK40000_e,
|
|
/* Group */ fopAc_ACTOR_e,
|
|
/* Cull Type */ fopAc_CULLBOX_6_e,
|
|
};
|