d_lyt_bird_gauge OK (#131)

This commit is contained in:
robojumper
2025-03-14 03:09:58 +01:00
committed by GitHub
parent 455642a81a
commit d60d45eb6e
35 changed files with 6953 additions and 145 deletions
+4 -6
View File
@@ -7,6 +7,7 @@
#include "d/col/c/c_cc_d.h"
#include "d/col/cc/d_cc_s.h"
#include "d/flag/sceneflag_manager.h"
#include "toBeSorted/small_sound_mgr.h"
SPECIAL_ACTOR_PROFILE(TAG_REACTION, dTgReaction_c, fProfile::TAG_REACTION, 0x0151, 0, 0);
@@ -158,9 +159,6 @@ void dTgReaction_c::executeState_Wait() {
}
void dTgReaction_c::finalizeState_Wait() {}
extern "C" void *SOUND_EFFECT_SOUND_MGR;
extern "C" void SmallSoundManager__playSound(void *, u16);
void dTgReaction_c::checkForBonkItem() {
if (dAcPy_c::LINK != nullptr && dAcPy_c::LINK->checkFlags0x350(0x2000)) {
mVec3_c diff = position - dAcPy_c::LINK->position;
@@ -181,7 +179,7 @@ void dTgReaction_c::checkForBonkItem() {
if (dAcObjBase_c::create(fProfile::ITEM, roomid, newItemParms, &c2, nullptr, nullptr, 0xFFFFFFFF)) {
field_0x4DD = 1;
onDelete();
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x13AD); // TODO (Sound ID)
SmallSoundManager::GetInstance()->playSound(SE_S_READ_RIDDLE_A);
}
}
} else {
@@ -203,7 +201,7 @@ void dTgReaction_c::checkForBonkItem() {
pos.y += field_0x4E4;
if (fn_578_DB0(pos, uVar3)) {
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x13AE); // TODO (Sound ID)
SmallSoundManager::GetInstance()->playSound(SE_S_READ_RIDDLE_B);
}
SceneflagManager::sInstance->setFlag(roomid, getSceneFlag());
onDelete();
@@ -237,7 +235,7 @@ void dTgReaction_c::checkForSlingBellowsItem() {
mVec3_c spawnPos = position;
spawnPos.y += field_0x4E4;
if (fn_578_DB0(spawnPos, uVar3)) {
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x13AE); // TODO (Sound ID)
SmallSoundManager::GetInstance()->playSound(SE_S_READ_RIDDLE_B);
}
SceneflagManager::sInstance->setFlag(roomid, getSceneFlag());
onDelete();
+2 -3
View File
@@ -33,6 +33,7 @@
#include "toBeSorted/counters/goddess_chest_counter.h"
#include "toBeSorted/dowsing_target.h"
#include "toBeSorted/event_manager.h"
#include "toBeSorted/small_sound_mgr.h"
SPECIAL_ACTOR_PROFILE(TBOX, dAcTbox_c, fProfile::TBOX, 0x018D, 0, 6);
@@ -1753,8 +1754,6 @@ void dAcTbox_c::initializeState_DemoAppear() {
field_0x11C0.set(0.0f, 0.0f, 0.0f);
field_0x11CC.set(0.0f, 0.0f, 0.0f);
}
extern "C" void SmallSoundManager__playSound(void *, u32);
extern "C" void *SOUND_EFFECT_SOUND_MGR;
void dAcTbox_c::executeState_DemoAppear() {
int val = field_0x11F8++;
if (field_0x11F8 < 11) {
@@ -1787,7 +1786,7 @@ void dAcTbox_c::executeState_DemoAppear() {
if (isStop && mAnmMatClr1.isStop(0) && field_0x11F8 > 0x5A) {
mEvent.advanceNext();
mStateMgr.changeState(StateID_WaitOpen);
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x13AD);
SmallSoundManager::GetInstance()->playSound(SE_S_READ_RIDDLE_A);
}
}
}
+2 -3
View File
@@ -5,6 +5,7 @@
#include "d/lyt/d_structd.h"
#include "f/f_base.h"
#include "toBeSorted/arc_managers/layout_arc_manager.h"
#include "toBeSorted/small_sound_mgr.h"
SPECIAL_BASE_PROFILE(C_GAME, dCsGame_c, fProfile::C_GAME, 0x2BF, 0x06F9);
@@ -401,14 +402,12 @@ void dCsGame_c::lytItemCursor_c::lytBowCsr_c::initializeState_Charge() {
mAnm[MAIN_ANIM_ARROW_EFFECT].setAnimEnable(true);
mAnm[MAIN_ANIM_ARROW_EFFECT].setFrame(0.0f);
}
extern "C" void *SOUND_EFFECT_SOUND_MGR;
extern "C" void SmallSoundManager__playSound(void *, s32);
void dCsGame_c::lytItemCursor_c::lytBowCsr_c::executeState_Charge() {
if (field_0x54 >= 1.0f) {
if (!mAnm[MAIN_ANIM_ARROW_PEAK].isFlag2()) {
mAnm[MAIN_ANIM_ARROW_PEAK].setAnimEnable(true);
mAnm[MAIN_ANIM_ARROW_PEAK].setFrame(0.0f);
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x148D);
SmallSoundManager::GetInstance()->playSound(SE_S_BW_ALIGN_SIGHT);
}
mAnm[MAIN_ANIM_ARROW_KEEP].setAnimEnable(false);
} else {
+280
View File
@@ -1,5 +1,8 @@
#include "d/lyt/d_lyt_bird_gauge.h"
#include "common.h"
#include "toBeSorted/small_sound_mgr.h"
STATE_DEFINE(dLytBirdGaugeMain_c, ModeNone);
STATE_DEFINE(dLytBirdGaugeMain_c, ModeIn);
STATE_DEFINE(dLytBirdGaugeMain_c, ModeDash);
@@ -11,3 +14,280 @@ STATE_DEFINE(dLytBirdGauge_c, None);
STATE_DEFINE(dLytBirdGauge_c, Dash);
STATE_DEFINE(dLytBirdGauge_c, Recovery);
STATE_DEFINE(dLytBirdGauge_c, Out);
dLytBirdGauge_c *dLytBirdGauge_c::sInstance;
static const d2d::LytBrlanMapping brlanMap[] = {
{ "birdGauge_00_in.brlan", "G_inOut_00"},
{ "birdGauge_00_dash.brlan", "G_wing_00"},
{ "birdGauge_00_dash.brlan", "G_wing_01"},
{ "birdGauge_00_dash.brlan", "G_wing_02"},
{"birdGauge_00_recovery.brlan", "G_wing_00"},
{"birdGauge_00_recovery.brlan", "G_wing_01"},
{"birdGauge_00_recovery.brlan", "G_wing_02"},
{ "birdGauge_00_out.brlan", "G_inOut_00"},
};
#define LYT_SKY_GAUGE_MAIN_ANIM_IN 0
#define LYT_SKY_GAUGE_MAIN_ANIM_DASH 1
#define LYT_SKY_GAUGE_MAIN_ANIM_RECOVERY 4
#define LYT_SKY_GAUGE_MAIN_ANIM_OUT 7
#define LYT_SKY_GAUGE_MAIN_NUM_WINGS 3
#define LYT_SKY_GAUGE_MAIN_NUM_ANIMS 8
void dLytBirdGaugeMain_c::initializeState_ModeNone() {}
void dLytBirdGaugeMain_c::executeState_ModeNone() {
mIsAnimating = true;
}
void dLytBirdGaugeMain_c::finalizeState_ModeNone() {}
void dLytBirdGaugeMain_c::initializeState_ModeIn() {}
void dLytBirdGaugeMain_c::executeState_ModeIn() {
if (mIsAnimating) {
return;
}
if (mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_IN].isEndReached()) {
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_IN].setAnimEnable(false);
mIsAnimating = true;
}
}
void dLytBirdGaugeMain_c::finalizeState_ModeIn() {}
void dLytBirdGaugeMain_c::initializeState_ModeDash() {}
void dLytBirdGaugeMain_c::executeState_ModeDash() {
if (mIsAnimating) {
return;
}
if (mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_DASH + mNumDisplayedDashes].isEndReached()) {
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_DASH + mNumDisplayedDashes].setAnimEnable(false);
mIsAnimating = true;
}
}
void dLytBirdGaugeMain_c::finalizeState_ModeDash() {}
void dLytBirdGaugeMain_c::initializeState_ModeRecovery() {}
void dLytBirdGaugeMain_c::executeState_ModeRecovery() {
if (mIsAnimating) {
return;
}
if (mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_RECOVERY + mNumDisplayedDashes - 1].isEndReached()) {
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_RECOVERY + mNumDisplayedDashes - 1].setAnimEnable(false);
mIsAnimating = true;
}
}
void dLytBirdGaugeMain_c::finalizeState_ModeRecovery() {}
void dLytBirdGaugeMain_c::initializeState_ModeOut() {}
void dLytBirdGaugeMain_c::executeState_ModeOut() {
if (mIsAnimating) {
return;
}
if (mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_OUT].isEndReached()) {
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_OUT].setAnimEnable(false);
mIsAnimating = true;
}
}
void dLytBirdGaugeMain_c::finalizeState_ModeOut() {}
dLytBirdGaugeMain_c::dLytBirdGaugeMain_c() : mStateMgr(*this) {}
bool dLytBirdGaugeMain_c::build(d2d::ResAccIf_c *resAcc) {
mLyt.setResAcc(resAcc);
mLyt.build("birdGauge_00.brlyt", nullptr);
mLyt.setPriority(0x8A);
for (int i = 0; i < LYT_SKY_GAUGE_MAIN_NUM_ANIMS; i++) {
mAnmGroups[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName);
mAnmGroups[i].setDirection(false);
mAnmGroups[i].setAnimEnable(false);
}
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_IN].setAnimEnable(true);
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_IN].setFrame(0.0f);
for (int i = 0; i < LYT_SKY_GAUGE_MAIN_NUM_WINGS; i++) {
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_DASH + i].setAnimEnable(true);
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_DASH + i].setFrame(0.0f);
}
mLyt.calc();
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_IN].setAnimEnable(false);
for (int i = 0; i < LYT_SKY_GAUGE_MAIN_NUM_WINGS; i++) {
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_DASH + i].setAnimEnable(false);
}
mNumDisplayedDashes = LYT_SKY_GAUGE_MAIN_NUM_WINGS;
cancelAnimation();
return true;
}
bool dLytBirdGaugeMain_c::execute() {
mStateMgr.executeState();
for (int i = 0; i < LYT_SKY_GAUGE_MAIN_NUM_ANIMS; i++) {
if (mAnmGroups[i].isFlag2()) {
mAnmGroups[i].play();
}
}
mLyt.calc();
return true;
}
bool dLytBirdGaugeMain_c::remove() {
mLyt.unbindAnims();
for (int i = 0; i < LYT_SKY_GAUGE_MAIN_NUM_ANIMS; i++) {
mAnmGroups[i].afterUnbind();
}
return true;
}
void dLytBirdGaugeMain_c::cancelAnimation() {
mStateMgr.changeState(StateID_ModeNone);
mIsAnimating = false;
}
void dLytBirdGaugeMain_c::changeToIn() {
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_IN].setAnimEnable(true);
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_IN].setFrame(0.0f);
mLyt.calc();
mStateMgr.changeState(StateID_ModeIn);
mIsAnimating = false;
}
void dLytBirdGaugeMain_c::changeToDash() {
mNumDisplayedDashes--;
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_RECOVERY + mNumDisplayedDashes].setAnimEnable(false);
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_DASH + mNumDisplayedDashes].setAnimEnable(true);
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_DASH + mNumDisplayedDashes].setFrame(0.0f);
mLyt.calc();
mStateMgr.changeState(StateID_ModeDash);
mIsAnimating = false;
}
void dLytBirdGaugeMain_c::changeToRecovery() {
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_DASH + mNumDisplayedDashes].setAnimEnable(false);
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_RECOVERY + mNumDisplayedDashes].setAnimEnable(true);
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_RECOVERY + mNumDisplayedDashes].setFrame(0.0f);
mLyt.calc();
SmallSoundManager::GetInstance()->playSound(SE_S_BIRD_RECOVER);
mStateMgr.changeState(StateID_ModeRecovery);
mIsAnimating = false;
mNumDisplayedDashes++;
}
void dLytBirdGaugeMain_c::changeToOut() {
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_OUT].setAnimEnable(true);
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_OUT].setFrame(0.0f);
mLyt.calc();
mStateMgr.changeState(StateID_ModeOut);
mIsAnimating = false;
}
void dLytBirdGauge_c::initializeState_In() {}
void dLytBirdGauge_c::executeState_In() {
if (mMain.isAnimating()) {
mMain.cancelAnimation();
mStateMgr.changeState(StateID_None);
field_0x692 = true;
}
}
void dLytBirdGauge_c::finalizeState_In() {}
void dLytBirdGauge_c::initializeState_None() {}
void dLytBirdGauge_c::executeState_None() {
s32 displayedDashes = mMain.getDisplayedDashes();
if (field_0x690) {
mMain.changeToIn();
mStateMgr.changeState(StateID_In);
field_0x690 = false;
field_0x692 = false;
field_0x693 = false;
} else if (displayedDashes != 0 && mGameStateDashes < displayedDashes) {
mMain.changeToDash();
mStateMgr.changeState(StateID_Dash);
} else if (displayedDashes < 3 && mGameStateDashes > displayedDashes) {
mMain.changeToRecovery();
mStateMgr.changeState(StateID_Recovery);
}
}
void dLytBirdGauge_c::finalizeState_None() {}
void dLytBirdGauge_c::initializeState_Dash() {}
void dLytBirdGauge_c::executeState_Dash() {
if (mMain.isAnimating()) {
mMain.cancelAnimation();
mStateMgr.changeState(StateID_None);
}
}
void dLytBirdGauge_c::finalizeState_Dash() {}
void dLytBirdGauge_c::initializeState_Recovery() {}
void dLytBirdGauge_c::executeState_Recovery() {
if (mMain.isAnimating()) {
mMain.cancelAnimation();
mStateMgr.changeState(StateID_None);
}
}
void dLytBirdGauge_c::finalizeState_Recovery() {}
void dLytBirdGauge_c::initializeState_Out() {}
void dLytBirdGauge_c::executeState_Out() {
if (mMain.isAnimating()) {
field_0x693 = true;
mMain.cancelAnimation();
mStateMgr.changeState(StateID_None);
}
}
void dLytBirdGauge_c::finalizeState_Out() {}
void dLytBirdGauge_c::hide() {
mMain.changeToOut();
mStateMgr.changeState(StateID_Out);
field_0x692 = false;
field_0x693 = false;
}
bool dLytBirdGauge_c::build(d2d::ResAccIf_c *resAcc) {
sInstance = this;
mMain.build(resAcc);
field_0x690 = false;
field_0x691 = false;
field_0x692 = false;
field_0x693 = true;
mGameStateDashes = LYT_SKY_GAUGE_MAIN_NUM_WINGS;
mStateMgr.changeState(StateID_None);
return true;
}
bool dLytBirdGauge_c::execute() {
mMain.execute();
mStateMgr.executeState();
return true;
}
bool dLytBirdGauge_c::remove() {
mMain.remove();
return true;
}
+5 -7
View File
@@ -4,6 +4,7 @@
#include "d/lyt/d_structd.h"
#include "rvl/MTX/mtx.h"
#include "toBeSorted/arc_managers/layout_arc_manager.h"
#include "toBeSorted/small_sound_mgr.h"
STATE_DEFINE(dLytCommonArrow_c, None);
STATE_DEFINE(dLytCommonArrow_c, In);
@@ -227,9 +228,6 @@ void dLytCommonArrow_c::initializeState_Wait() {
mTimer = 0;
}
extern "C" void SmallSoundManager__playSound(void *, u32);
extern "C" void *SOUND_EFFECT_SOUND_MGR;
void dLytCommonArrow_c::executeState_Wait() {
if (mOutRequested == 1) {
mStateMgr.changeState(StateID_Out);
@@ -262,9 +260,9 @@ void dLytCommonArrow_c::executeState_Wait() {
if (field_0x6C0 != 2) {
displayElement(field_0x6C0 + ANIM_DECIDE_OFFSET, 0.0f);
if (field_0x6C0 == 0) {
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x142D);
SmallSoundManager::GetInstance()->playSound(SE_S_MENU_SELECT_TURN_PAGE_LEFT);
} else {
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x142E);
SmallSoundManager::GetInstance()->playSound(SE_S_MENU_SELECT_TURN_PAGE_RIGHT);
}
mTimer++;
}
@@ -287,9 +285,9 @@ void dLytCommonArrow_c::executeState_Wait() {
if (field_0x6BC != field_0x6B8 && field_0x6B8 != 2) {
if (field_0x6B8 == 0) {
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x142B);
SmallSoundManager::GetInstance()->playSound(SE_S_MENU_POINT_TURN_PAGE_LEFT);
} else {
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x142C);
SmallSoundManager::GetInstance()->playSound(SE_S_MENU_POINT_TURN_PAGE_RIGHT);
}
}
}
+3 -1
View File
@@ -188,11 +188,13 @@ bool dLytSkyGauge_c::build(d2d::ResAccIf_c *resAcc) {
mStateMgr.changeState(StateID_None);
return true;
}
bool dLytSkyGauge_c::LytMeter0x14() {
bool dLytSkyGauge_c::execute() {
mMain.execute();
mStateMgr.executeState();
return true;
}
bool dLytSkyGauge_c::remove() {
mMain.remove();
return true;
+2 -2
View File
@@ -130,7 +130,7 @@ bool dLytMeter1Button_c::remove() {
return true;
}
bool dLytMeter1Button_c::LytMeter0x14() {
bool dLytMeter1Button_c::execute() {
if (*mStateMgr.getStateID() == StateID_ToUnuse) {
// TODO
} else {
@@ -238,7 +238,7 @@ bool dLytMeter2Button_c::remove() {
return true;
}
bool dLytMeter2Button_c::LytMeter0x14() {
bool dLytMeter2Button_c::execute() {
if (*mStateMgr.getStateID() == StateID_ToUnuse) {
// TODO
} else {
@@ -75,7 +75,7 @@ bool dLytMeterGanbariGauge_c::remove() {
return true;
}
bool dLytMeterGanbariGauge_c::LytMeter0x14() {
bool dLytMeterGanbariGauge_c::execute() {
// TODO
return true;
}
+1 -1
View File
@@ -43,7 +43,7 @@ bool dLytMeterRemoconBg_c::remove() {
return true;
}
bool dLytMeterRemoconBg_c::LytMeter0x14() {
bool dLytMeterRemoconBg_c::execute() {
// TODO
return true;
}
+1 -1
View File
@@ -29,7 +29,7 @@ bool dLytMeterShieldGauge_c::remove() {
return true;
}
bool dLytMeterShieldGauge_c::LytMeter0x14() {
bool dLytMeterShieldGauge_c::execute() {
// TODO
return true;
}