summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLagoLunatic <LagoLunatic@users.noreply.github.com>2024-05-08 19:11:20 -0400
committerLagoLunatic <LagoLunatic@users.noreply.github.com>2024-05-08 19:11:20 -0400
commitaf61ba5f0a7826ad3e8f8da16441188266b79cdb (patch)
tree9ec025440aa65151c91b26bdda3637d2ceec54cf /src
parent86465eb2d1bf704f2b345c23aeda1af6b43a7608 (diff)
d_a_player_tact work
Diffstat (limited to 'src')
-rw-r--r--src/d/actor/d_a_player_main.cpp2
-rw-r--r--src/d/actor/d_a_player_tact.inc170
-rw-r--r--src/d/d_com_inf_game.cpp4
-rw-r--r--src/d/d_gameover.cpp2
-rw-r--r--src/d/d_place_name.cpp2
-rw-r--r--src/d/d_save.cpp4
-rw-r--r--src/d/d_stage.cpp11
7 files changed, 173 insertions, 22 deletions
diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp
index 684fa1e9..410dcb9e 100644
--- a/src/d/actor/d_a_player_main.cpp
+++ b/src/d/actor/d_a_player_main.cpp
@@ -2260,7 +2260,7 @@ BOOL daPy_lk_c::procCall() {
current.angle.y = shape_angle.y;
}
- if (mFrameCtrlUnder[0].getRate() < 0.01f) {
+ if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) {
if (dComIfGp_getCb1Player()) {
daPy_py_c* partner = (daPy_py_c*)dComIfGp_getCb1Player();
partner->onNpcCallCommand();
diff --git a/src/d/actor/d_a_player_tact.inc b/src/d/actor/d_a_player_tact.inc
index 3b542a81..1f12cae1 100644
--- a/src/d/actor/d_a_player_tact.inc
+++ b/src/d/actor/d_a_player_tact.inc
@@ -60,7 +60,7 @@ BOOL daPy_lk_c::checkNpcStatus() {
}
/* 8014D8F4-8014D938 .text getTactPlayRightArmAnm__9daPy_lk_cFl */
-int daPy_lk_c::getTactPlayRightArmAnm(s32 r4) {
+u16 daPy_lk_c::getTactPlayRightArmAnm(s32 r4) {
if (r4 == 1)
return LKANM_BCK_ACTIONTAKTRUP;
else if (r4 == 3)
@@ -74,7 +74,7 @@ int daPy_lk_c::getTactPlayRightArmAnm(s32 r4) {
}
/* 8014D938-8014D97C .text getTactPlayLeftArmAnm__9daPy_lk_cFl */
-int daPy_lk_c::getTactPlayLeftArmAnm(s32 r4) {
+u16 daPy_lk_c::getTactPlayLeftArmAnm(s32 r4) {
if (r4 == 1)
return LKANM_BCK_WAITTAKTLHANDU;
else if (r4 == 3)
@@ -363,21 +363,177 @@ BOOL daPy_lk_c::procTactPlay() {
}
/* 8014EFD4-8014F210 .text procTactPlayEnd_init__9daPy_lk_cFi */
-BOOL daPy_lk_c::procTactPlayEnd_init(int) {
- /* Nonmatching */
+BOOL daPy_lk_c::procTactPlayEnd_init(int r30) {
+ int r28 = checkShipRideUseItem(0);
+ commonProcInit(daPyProc_TACT_PLAY_END_e);
+ dComIfGp_setPlayerStatus1(0, daPyStts1_WIND_WAKER_CONDUCT_e);
+ initShipRideUseItem(r28, 2);
+ m3570 = r30;
+ mVelocity = 0.0f;
+ setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC);
+
+ if (r30 == -1) {
+ dCam_getBody()->EndEventCamera(fopAcM_GetID(this));
+ fopAcM_orderChangeEvent(this, fopAcM_SearchByID(mTactZevPartnerPID), m3494, 0, -1);
+ mDemo.setDemoType(2);
+ } else if (r30 == 0) {
+ dCam_getBody()->EndEventCamera(fopAcM_GetID(this));
+ fopAcM_create(PROC_WBIRD, NULL, &current.pos, dComIfGp_roomControl_getStayNo());
+ } else if (r30 == 2) {
+ dCam_getBody()->EndEventCamera(fopAcM_GetID(this));
+ dComIfGp_event_setTalkPartner(dComIfGp_getCb1Player());
+ fopAcM_orderChangeEvent(this, dComIfGp_getCb1Player(), l_tact_event_label, 0, -1);
+ mDoAud_seStart(JA_SE_CTRL_LINK_TO_NPC, 0);
+ } else if (r30 == 5) {
+ dCam_getBody()->EndEventCamera(fopAcM_GetID(this));
+ fopAcM_orderChangeEvent(this, l_tact_night_event_label, 0, -1);
+ }
+
+ m3574 = 0;
+ m34D6 = shape_angle.y + 0x4000;
+
+ return TRUE;
}
/* 8014F210-8014F4DC .text procTactPlayEnd__9daPy_lk_cFv */
BOOL daPy_lk_c::procTactPlayEnd() {
- /* Nonmatching */
+ if (dComIfGp_checkPlayerStatus0(0, daPyStts1_UNK10000_e)) {
+ setShipRidePos(0);
+ if (m3570 == 0 && !dComIfGp_evmng_startCheck(l_tact_wind_change_event_label) && !dComIfGp_evmng_startCheck(l_tact_wind_change_event_label2)) {
+ cLib_addCalcAngleS(&shape_angle.y, m34D6, 5, 0x1000, 0x100);
+ }
+ }
+
+ if (m3570 == 0) {
+ dComIfGp_setAStatus(0x07);
+ } else if (m3570 == 5) {
+ if (dComIfGp_evmng_endCheck(l_tact_night_event_label) && !checkNoResetFlg0(daPyFlg0_UNK4000)) {
+ onNoResetFlg0(daPyFlg0_UNK4000);
+ fopAc_ac_c* ship;
+ BOOL hasShip;
+ if (dComIfGp_getShipActor() != NULL) {
+ ship = dComIfGp_getShipActor();
+ hasShip = TRUE;
+ } else {
+ ship = this; // Use Link's position and angle for the ship if it doesn't exist.
+ hasShip = FALSE;
+ }
+ dComIfGs_setTurnRestart(
+ current.pos, shape_angle.y, fopAcM_GetRoomNo(this), getDayNightParamData(),
+ ship->current.pos, ship->shape_angle.y, hasShip
+ );
+ if (dComIfG_getTimerMode() == 3 && dComIfG_getTimerPtr() != NULL) {
+ dComIfG_getTimerPtr()->deleteRequest();
+ }
+ dStage_turnRestart();
+ mDoAud_taktModeMuteOff();
+ }
+ } else if (m3570 == 2) {
+ if (dComIfGp_evmng_endCheck(l_tact_event_label)) {
+ dComIfGp_event_reset();
+ changePlayer(dComIfGp_getCb1Player());
+ endDemoMode();
+ }
+ } else if (m3570 == 1) {
+ if (m3574 == 0) {
+ if (dComIfGp_getMesgStatus() == 0) {
+ dComIfGp_fmapOpenOn();
+ m3574 = 1;
+ }
+ } else {
+ dCam_getBody()->EndEventCamera(fopAcM_GetID(this));
+ daShip_c* ship = (daShip_c*)dComIfGp_getShipActor();
+ if (ship == NULL || ship->getTactWarpPosNum() < 0) {
+ dComIfGp_event_reset();
+ endDemoMode();
+ if (ship != NULL) {
+ fopAcM_delete(ship->getTactWarpID());
+ ship->setTactWarpID(fpcM_ERROR_PROCESS_ID_e);
+ }
+ } else {
+ if (dComIfG_getTimerMode() == 3 && dComIfG_getTimerPtr() != NULL) {
+ dComIfG_getTimerPtr()->deleteRequest();
+ }
+ procShipPaddle_init();
+ ship->m034D = 0xE; // TODO inline
+ }
+ }
+ }
+
+ return TRUE;
}
/* 8014F4DC-8014F690 .text procTactPlayOriginal_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procTactPlayOriginal_init() {
- /* Nonmatching */
+ if (mCurProc == daPyProc_TACT_PLAY_ORIGINAL_e) {
+ return TRUE;
+ }
+ commonProcInit(daPyProc_TACT_PLAY_ORIGINAL_e);
+ dComIfGp_setPlayerStatus1(0, daPyStts1_WIND_WAKER_CONDUCT_e);
+ m34D0 = 0;
+ daPy_matAnm_c::offMabaFlg();
+ daPy_matAnm_c::setMabaTimer(1);
+ setSingleMoveAnime(ANM_WAITTAKT, daPy_HIO_tact_c0::m.field_0x0, 0.0f, -1, daPy_HIO_tact_c0::m.field_0x4);
+
+ m3570 = dComIfGp_event_getTactFreeMStick(m34D0);
+ setActAnimeUpper(getTactPlayRightArmAnm(m3570), UPPER_MOVE1_e, 0.0f, 0.0f, -1, -1.0f);
+ mAnmRatioUpper[UPPER_MOVE1_e].setRatio(0.0f);
+
+ m3574 = dComIfGp_event_getTactFreeCStick(m34D0);
+ setActAnimeUpper(getTactPlayLeftArmAnm(m3574), UPPER_MOVE2_e, 0.0f, 0.0f, -1, -1.0f);
+ mAnmRatioUpper[UPPER_MOVE2_e].setRatio(0.0f);
+
+ setTextureAnime(0, 0);
+ m3530 = 3;
+ mDoAud_tact_setStickPos(m3570, m3574);
+ mDoAud_tact_playArmSwing(m3570, m3574);
+ setTactModel();
+ m32E4.makeEmitter(0x51, mpHeldItemModel->getBaseTRMtx(), &current.pos, NULL);
+ m34D6 = 0xF;
+ m34DA = 0;
+ mDoAud_taktModeMute();
+
+ return TRUE;
}
/* 8014F690-8014F8A0 .text procTactPlayOriginal__9daPy_lk_cFv */
BOOL daPy_lk_c::procTactPlayOriginal() {
- /* Nonmatching */
+ mDoAud_seStart(JA_SE_LK_WTAKT_USING, 0);
+
+ if (m_old_fdata->getOldFrameRate() < 0.01f) {
+ if (m34D6 > 0) {
+ m34D6--;
+ if (m34D6 == 0) {
+ m34D0++;
+ }
+ } else if (m34D0 == 5) {
+ dComIfGp_evmng_cutEnd(mStaffIdx);
+ mDoAud_tact_stopArmSwing();
+ } else {
+ m34D6 = 0xF;
+
+ m3570 = dComIfGp_event_getTactFreeMStick(m34D0);
+ setActAnimeUpper(getTactPlayRightArmAnm(m3570), UPPER_MOVE1_e, daPy_HIO_tact_c0::m.field_0x8, 0.0f, -1, 5.0f);
+ mAnmRatioUpper[UPPER_MOVE1_e].setRatio(0.0f);
+ if (m3570 == 0 || m3570 == 2 || m3570 == 4) {
+ mFrameCtrlUpper[UPPER_MOVE1_e].setRate(daPy_HIO_tact_c0::m.field_0x0);
+ mFrameCtrlUpper[UPPER_MOVE1_e].setFrame(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame());
+ }
+
+ m3574 = dComIfGp_event_getTactFreeCStick(m34D0);
+ setActAnimeUpper(getTactPlayLeftArmAnm(m3574), UPPER_MOVE2_e, daPy_HIO_tact_c0::m.field_0x0, 0.0f, -1, 5.0f);
+ mAnmRatioUpper[UPPER_MOVE2_e].setRatio(0.0f);
+ mFrameCtrlUpper[UPPER_MOVE2_e].setFrame(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame());
+
+ mDoAud_tact_setStickPos(m3570, m3574);
+ mDoAud_tact_playArmSwing(m3570, m3574);
+ }
+ }
+
+ if (m34D6 != 0 && m34DA != 0) {
+ mDoAud_tact_play();
+ }
+ m34DA = 1;
+
+ return TRUE;
}
diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp
index 697650ea..94af619f 100644
--- a/src/d/d_com_inf_game.cpp
+++ b/src/d/d_com_inf_game.cpp
@@ -100,7 +100,7 @@ void dComIfG_play_c::itemInit() {
mRupyCountDisplay = 0;
field_0x4928 = 0;
field_0x4929 = 0;
- field_0x492a = 0;
+ mMesgStatus = 0;
mbCamOverrideFarPlane = 0;
field_0x492c = 0;
field_0x492d = 0;
@@ -142,7 +142,7 @@ void dComIfG_play_c::itemInit() {
}
mMelodyNum = 0;
- field_0x4951 = 0;
+ mFmapOpen = false;
field_0x4952 = 0;
field_0x4953 = 0;
field_0x4954 = 0;
diff --git a/src/d/d_gameover.cpp b/src/d/d_gameover.cpp
index 71a12078..5aa8ac2c 100644
--- a/src/d/d_gameover.cpp
+++ b/src/d/d_gameover.cpp
@@ -143,7 +143,7 @@ void dDlst_Gameover_CAPTURE_c::draw() {
/* 8018E4B4-8018E77C .text _create__11dGameover_cFv */
s32 dGameover_c::_create() {
s32 rt = dComIfG_resLoad(&mPhs, "Gover");
- if (dMenu_flag() || (dComIfGp_isHeapLockFlag() != 0 && dComIfGp_isHeapLockFlag() != 4) || g_dComIfG_gameInfo.play.field_0x492a != 0)
+ if (dMenu_flag() || (dComIfGp_isHeapLockFlag() != 0 && dComIfGp_isHeapLockFlag() != 4) || dComIfGp_getMesgStatus() != 0)
return cPhs_INIT_e;
if (rt == cPhs_COMPLEATE_e) {
diff --git a/src/d/d_place_name.cpp b/src/d/d_place_name.cpp
index 85589be5..59afc0c4 100644
--- a/src/d/d_place_name.cpp
+++ b/src/d/d_place_name.cpp
@@ -135,7 +135,7 @@ void dPlace_name_c::draw() {
s32 dPn_c::_create() {
s32 rt = dComIfG_resLoad(&mPhs, "PName");
- if (dMenu_flag() || (dComIfGp_isHeapLockFlag() != 0 && dComIfGp_isHeapLockFlag() != 10) || g_dComIfG_gameInfo.play.field_0x492a != 0)
+ if (dMenu_flag() || (dComIfGp_isHeapLockFlag() != 0 && dComIfGp_isHeapLockFlag() != 10) || dComIfGp_getMesgStatus() != 0)
return cPhs_INIT_e;
if (mState == 0) {
diff --git a/src/d/d_save.cpp b/src/d/d_save.cpp
index 8dbf5210..1cfe3efc 100644
--- a/src/d/d_save.cpp
+++ b/src/d/d_save.cpp
@@ -1328,7 +1328,7 @@ void dSv_restart_c::setRestartOption(s8 param_0, cXyz* i_pos, s16 i_angle, s8 i_
/* 8005D5B4-8005D604 .text set__17dSv_turnRestart_cFRC4cXyzsScUlRC4cXyzsi */
void dSv_turnRestart_c::set(const cXyz& i_pos, s16 i_angle, s8 i_roomNo, u32 i_param,
- const cXyz& i_shipPos, s16 i_shipAngle, int param_6) {
+ const cXyz& i_shipPos, s16 i_shipAngle, BOOL i_hasShip) {
mPosition = i_pos;
mAngleY = i_angle;
mRoomNo = i_roomNo;
@@ -1336,7 +1336,7 @@ void dSv_turnRestart_c::set(const cXyz& i_pos, s16 i_angle, s8 i_roomNo, u32 i_p
field_0x13 = 0;
mShipPos = i_shipPos;
mShipAngleY = i_shipAngle;
- field_0x34 = param_6;
+ mHasShip = i_hasShip;
}
/* 8005D604-8005D660 .text init__10dSv_info_cFv */
diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp
index f12cfda3..c7ccf936 100644
--- a/src/d/d_stage.cpp
+++ b/src/d/d_stage.cpp
@@ -1842,18 +1842,13 @@ bool dStage_setShipPos(int param_0, int i_roomNo) {
dComIfGp_setShipRoomId(0xFF);
}
- // g_dComIfG_gameInfo.save.getTurnRestart().field_0x34 probably an inline, idk which though
- dComIfG_inf_c& gameinfo = g_dComIfG_gameInfo; // fakematch
- if (dComIfGp_getStartStagePoint() == -3 &&
- g_dComIfG_gameInfo.save.getTurnRestart().field_0x34 != 0)
- {
+ if (dComIfGp_getStartStagePoint() == -3 && dComIfGs_getTurnRestartHasShip()) {
daShip_c* ship_p = (daShip_c*)fopAcM_SearchByName(PROC_SHIP);
if (ship_p != NULL) {
- ship_p->initStartPos(&gameinfo.save.getTurnRestart().getShipPos(),
- dComIfGs_getTurnRestartShipAngleY());
+ ship_p->initStartPos(&dComIfGs_getTurnRestartShipPos(), dComIfGs_getTurnRestartShipAngleY());
}
- g_dComIfG_gameInfo.save.getTurnRestart().field_0x34 = 0;
+ dComIfGs_setTurnRestartHasShip(FALSE);
}
if (param_0 != 0xFF) {