diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2024-10-10 07:29:58 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-10 08:29:58 -0600 |
| commit | 12eb254d769d84743b5cc6cd5424057c57eaf0ad (patch) | |
| tree | 4509be332b2ccfc6fe939f47740d68f7746eca3e /src/Z2AudioLib/Z2StatusMgr.cpp | |
| parent | 2fd702c0ac170a789af879b8b92a82d4dcc9080c (diff) | |
switch to dtk setup (#2203)
* switch to dtk setup
* some cleanup / fixes
* cleanup d_a_alink literals
* Restore doxygen, update CI & README.md (#1)
* Fix build image ref (#2)
---------
Co-authored-by: Luke Street <luke@street.dev>
Diffstat (limited to 'src/Z2AudioLib/Z2StatusMgr.cpp')
| -rw-r--r-- | src/Z2AudioLib/Z2StatusMgr.cpp | 339 |
1 files changed, 339 insertions, 0 deletions
diff --git a/src/Z2AudioLib/Z2StatusMgr.cpp b/src/Z2AudioLib/Z2StatusMgr.cpp new file mode 100644 index 0000000000..c5fe617970 --- /dev/null +++ b/src/Z2AudioLib/Z2StatusMgr.cpp @@ -0,0 +1,339 @@ +// +// Z2StatusMgr +// + +#include "Z2AudioLib/Z2StatusMgr.h" +#include "Z2AudioLib/Z2Creature.h" +#include "Z2AudioLib/Z2Param.h" +#include "d/d_com_inf_game.h" +#include "d/d_s_play.h" +#include "dol2asm.h" + +/* 802B5F1C-802B5F70 2B085C 0054+00 0/0 1/1 0/0 .text __ct__11Z2StatusMgrFv */ +Z2StatusMgr::Z2StatusMgr() : JASGlobalInstance(this) { + mHour = 0; + mMinute = 0; + mWeekday = 0; + field_0x03 = 0; + mTime = 3072; + mEventBit = NULL; + mIsMenuIn = false; + mCameraMapInfo = 0; + + mPolygonPosition.x = 10000000.0f; + mPolygonPosition.y = 10000000.0f; + mPolygonPosition.z = 10000000.0f; + + mUnderwaterDepth = 0.0f; + mCameraInWaterDepthRatio = 0.0f; + + mDemoStatus = 0; + mHeartGaugeOn = 0; +} + +/* 802B5F70-802B5F7C 2B08B0 000C+00 0/0 1/1 0/0 .text heartGaugeOn__11Z2StatusMgrFv */ +void Z2StatusMgr::heartGaugeOn() { + mHeartGaugeOn = 2; +} + +/* 802B5F7C-802B60CC 2B08BC 0150+00 0/0 1/1 0/0 .text processHeartGaugeSound__11Z2StatusMgrFv */ +void Z2StatusMgr::processHeartGaugeSound() { + if (!dComIfGp_event_runCheck() && mHeartGaugeOn != 0) { + if (dScnPly_c::isPause()) { + mHeartGaugeOn--; + } + + if (Z2GetLink() == NULL) { + return; + } + u32 linkHp = Z2GetLink()->getLinkHp(); + if (linkHp == 0) { + return; + } + if (Z2GetSeqMgr()->isItemGetDemo()) { + return; + } + if (linkHp <= 2) { + Z2GetSeMgr()->seStartLevel(Z2SE_ALMOST_DIE_ALERM_3, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } else if (linkHp <= 4) { + Z2GetSeMgr()->seStartLevel(Z2SE_ALMOST_DIE_ALERM_2, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } else if (linkHp <= 6) { + Z2GetSeMgr()->seStartLevel(Z2SE_ALMOST_DIE_ALERM_1, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + } +} + +/* 802B60CC-802B6104 2B0A0C 0038+00 0/0 1/1 0/0 .text talkIn__11Z2StatusMgrFv */ +void Z2StatusMgr::talkIn() { + if (!isMovieDemo()) { + Z2GetSeqMgr()->talkInBgm(); + Z2GetSeMgr()->talkInSe(); + } +} + +/* 802B6104-802B613C 2B0A44 0038+00 0/0 1/1 0/0 .text talkOut__11Z2StatusMgrFv */ +void Z2StatusMgr::talkOut() { + if (!isMovieDemo()) { + Z2GetSeqMgr()->talkOutBgm(); + Z2GetSeMgr()->talkOutSe(); + } +} + +/* 802B613C-802B617C 2B0A7C 0040+00 0/0 1/1 0/0 .text menuIn__11Z2StatusMgrFv */ +void Z2StatusMgr::menuIn() { + Z2GetSeqMgr()->menuInBgm(); + Z2GetSeMgr()->menuInSe(); + + mIsMenuIn = true; +} + +/* 802B617C-802B61BC 2B0ABC 0040+00 0/0 3/3 0/0 .text menuOut__11Z2StatusMgrFv */ +void Z2StatusMgr::menuOut() { + Z2GetSeqMgr()->menuOutBgm(); + Z2GetSeMgr()->talkOutSe(); + + mIsMenuIn = false; +} + +/* 802B61BC-802B61E8 2B0AFC 002C+00 2/2 1/1 0/0 .text isMovieDemo__11Z2StatusMgrFv */ +bool Z2StatusMgr::isMovieDemo() { + return mDemoStatus == 2 || mDemoStatus == 8 || mDemoStatus == 9; +} + +static void dummyStrings() { + DEAD_STRING("F_SP00"); + DEAD_STRING("F_SP103"); + DEAD_STRING("R_SP01"); + DEAD_STRING("F_SP104"); + DEAD_STRING("R_SP107"); + DEAD_STRING("F_SP108"); + DEAD_STRING("R_SP108"); + DEAD_STRING("F_SP117"); + DEAD_STRING("F_SP109"); + DEAD_STRING("R_SP109"); + DEAD_STRING("R_SP209"); + DEAD_STRING("F_SP110"); + DEAD_STRING("R_SP110"); + DEAD_STRING("F_SP111"); + DEAD_STRING("F_SP128"); + DEAD_STRING("R_SP128"); + DEAD_STRING("F_SP115"); + DEAD_STRING("F_SP112"); + DEAD_STRING("F_SP126"); + DEAD_STRING("F_SP127"); + DEAD_STRING("R_SP127"); + DEAD_STRING("F_SP113"); + DEAD_STRING("F_SP116"); + DEAD_STRING("R_SP116"); + DEAD_STRING("R_SP160"); + DEAD_STRING("R_SP161"); + DEAD_STRING("F_SP114"); + DEAD_STRING("F_SP118"); + DEAD_STRING("F_SP124"); + DEAD_STRING("F_SP125"); + DEAD_STRING("F_SP121"); + DEAD_STRING("F_SP122"); + DEAD_STRING("F_SP123"); + DEAD_STRING("F_SP200"); + DEAD_STRING("F_SP102"); + DEAD_STRING(""); + DEAD_STRING("R_SP300"); + DEAD_STRING("R_SP301"); + DEAD_STRING("T_ENEMY"); + DEAD_STRING("D_MN54"); + DEAD_STRING("D_MN05"); + DEAD_STRING("D_MN05B"); + DEAD_STRING("D_MN05A"); + DEAD_STRING("D_MN04"); + DEAD_STRING("D_MN04B"); + DEAD_STRING("D_MN04A"); + DEAD_STRING("D_MN01"); + DEAD_STRING("D_MN01B"); + DEAD_STRING("D_MN01A"); + DEAD_STRING("D_MN10"); + DEAD_STRING("D_MN10B"); + DEAD_STRING("D_MN10A"); + DEAD_STRING("D_MN11"); + DEAD_STRING("D_MN11B"); + DEAD_STRING("D_MN11A"); + DEAD_STRING("D_MN06"); + DEAD_STRING("D_MN06B"); + DEAD_STRING("D_MN06A"); + DEAD_STRING("D_MN07"); + DEAD_STRING("D_MN07B"); + DEAD_STRING("D_MN07A"); + DEAD_STRING("D_MN08"); + DEAD_STRING("D_MN08B"); + DEAD_STRING("D_MN08C"); + DEAD_STRING("D_MN08A"); + DEAD_STRING("D_MN08D"); + DEAD_STRING("D_MN09"); + DEAD_STRING("D_MN09A"); + DEAD_STRING("D_MN09B"); + DEAD_STRING("D_MN09C"); + DEAD_STRING("D_SB00"); + DEAD_STRING("D_SB01"); + DEAD_STRING("D_SB02"); + DEAD_STRING("D_SB03"); + DEAD_STRING("D_SB04"); + DEAD_STRING("D_SB05"); + DEAD_STRING("D_SB06"); + DEAD_STRING("D_SB07"); + DEAD_STRING("D_SB08"); + DEAD_STRING("D_SB09"); + DEAD_STRING("D_SB10"); +} + +/* 802B61E8-802B671C 2B0B28 0534+00 1/0 7/7 11/11 .text setDemoName__11Z2StatusMgrFPc */ +void Z2StatusMgr::setDemoName(char* demoName) { + if (mDemoStatus == 11) { + mDemoStatus = 0; + if (Z2GetSceneMgr()->isInGame()) { + Z2GetSceneMgr()->sceneBgmStart(); + } + } + if (demoName == NULL) { + if (mDemoStatus == 3) { + Z2GetSeqMgr()->setBattleBgmOff(false); + } else if (mDemoStatus == 4) { + Z2GetSeqMgr()->i_unMuteSceneBgm(struct_80450861); + } else if (mDemoStatus == 5) { + Z2GetSeqMgr()->subBgmStop(); + } else if (mDemoStatus == 9) { + Z2GetSeqMgr()->bgmStreamStop(0x3c); + } + if (mDemoStatus != 8) { + mDemoStatus = 0; + } + } else { + bool bVar1 = false; + if (mDemoStatus == 8) { + if (strcmp(demoName, "force_end") == 0) { + mDemoStatus = 0; + } + } else if (strcmp(demoName, "SAVEREQ") == 0 || strcmp(demoName, "SAVEGID") == 0) { + mDemoStatus = 11; + } else if (strcmp(demoName, "demo36_01") == 0 || strcmp(demoName, "demo36_02") == 0) { + mDemoStatus = 4; + Z2GetSeqMgr()->i_muteSceneBgm(0x1e, 0.0f); + } else if (strcmp(demoName, "demo37_01") == 0) { + mDemoStatus = 12; + Z2GetSoundMgr()->getSeMgr()->getCategory(9)->getParams()->moveVolume(0.0f, 0); + } else if (strncmp(demoName, "demo31", 6) == 0) { + mDemoStatus = 13; + Z2GetSeMgr()->seMoveVolumeAll(0.0f, 0); + } else if (strncmp(demoName, "demo", 4) == 0) { + mDemoStatus = 2; + } else if (strcmp(demoName, "force_start") == 0) { + mDemoStatus = 8; + } else if (strcmp(demoName, "force_end") == 0) { + mDemoStatus = 0; + } else if (strcmp(demoName, "KAGO_HIKARI") == 0) { + mDemoStatus = 6; + } else if (strcmp(demoName, "KAGO_YAMI") == 0) { + mDemoStatus = 7; + } else if (strcmp(demoName, "HYRULEOP") == 0) { + mDemoStatus = 10; + } else { + switch (Z2GetSceneMgr()->getCurrentSceneNum()) { + case 0xe: + if (strcmp(demoName, "R00_start") == 0) { + mDemoStatus = 5; + Z2GetSeqMgr()->subBgmStart(Z2BGM_HIDDEN_VIL_D1); + } + break; + case 5: + if (strcmp(demoName, "B_W_START") == 0) { + Z2GetSeqMgr()->bgmStreamPrepare(0x200005f); + Z2GetSeqMgr()->bgmStreamPlay(); + mDemoStatus = 9; + } + break; + case 4: + if (strcmp(demoName, "L0_rampart01") == 0) { + bVar1 = true; + } + break; + case 0x28: + if (strcmp(demoName, "R22-opening") == 0) { + bVar1 = true; + } + break; + case 0x2b: + if (strcmp(demoName, "R01-start") == 0) { + bVar1 = true; + } + break; + case 0x2e: + if (strcmp(demoName, "LV3R00OP") == 0) { + bVar1 = true; + } + break; + case 0x31: + if (strcmp(demoName, "R00_start") == 0) { + bVar1 = true; + } + break; + } + if (bVar1) { + Z2GetSeqMgr()->setBattleBgmOff(true); + mDemoStatus = 3; + } else if (mDemoStatus == 0) { + mDemoStatus = 1; + } + } + } +} + +/* 802B671C-802B6734 2B105C 0018+00 0/0 1/1 0/0 .text processTime__11Z2StatusMgrFv */ +void Z2StatusMgr::processTime() { + u16 processed_hour = mHour * 256; + mTime = processed_hour + mMinute; +} + +/* 802B6734-802B6758 2B1074 0024+00 0/0 5/5 0/0 .text checkDayTime__11Z2StatusMgrFv */ +bool Z2StatusMgr::checkDayTime() { + if (mHour >= 6 && mHour < 19) { + return true; + } + + return false; +} + +/* 802B6758-802B6760 -00001 0008+00 0/0 0/0 0/0 .text setEventBit__11Z2StatusMgrFPv */ +void Z2StatusMgr::setEventBit(void* i_eventBit) { + mEventBit = i_eventBit; +} + +/* 802B6760-802B6784 2B10A0 0024+00 0/0 1/1 0/0 .text setCameraPolygonPos__11Z2StatusMgrFP3Vec */ +void Z2StatusMgr::setCameraPolygonPos(Vec* i_polygonPos) { + if (i_polygonPos != NULL) { + mPolygonPosition = *i_polygonPos; + } +} + +/* 802B6784-802B6788 2B10C4 0004+00 0/0 1/1 0/0 .text setCameraGroupInfo__11Z2StatusMgrFUc */ +void Z2StatusMgr::setCameraGroupInfo(u8) {} + +/* 802B6788-802B6840 2B10C8 00B8+00 0/0 2/2 0/0 .text setCameraInWaterDepth__11Z2StatusMgrFf */ +void Z2StatusMgr::setCameraInWaterDepth(f32 depth) { + if (0.0f == depth) { + mCameraInWaterDepthRatio = 0.0f; + Z2GetFxLineMgr()->setUnderWaterFx(false); + } else { + if (Z2GetLink() != NULL) { + if (Z2GetLink()->isInWater()) { + if (depth >= 2000.0f) { + mCameraInWaterDepthRatio = 1.0f; + } else { + mCameraInWaterDepthRatio = + Z2Calc::getParamByExp(depth, 0.0f, 2000.0f, 0.2f, 0.0f, 1.0f, Z2Calc::CURVE_SIGN_0); + } + Z2GetFxLineMgr()->setUnderWaterFx(true); + } + } + } + mUnderwaterDepth = depth; +} + +/* 8039BC88-8039BC88 0282E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
\ No newline at end of file |
