mirror of
https://github.com/zeldaret/ss
synced 2026-09-07 11:01:45 -04:00
It's always the last function
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#define D_LYT_DROP_LINE_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_item.h"
|
||||
#include "nw4r/lyt/lyt_pane.h"
|
||||
|
||||
class dLytDropLine_c {
|
||||
@@ -19,6 +20,8 @@ public:
|
||||
|
||||
static nw4r::lyt::Pane *getActivePane();
|
||||
static nw4r::lyt::Pane *setPane(nw4r::lyt::Pane *pane);
|
||||
static nw4r::lyt::Pane *update(nw4r::lyt::Pane *pane, nw4r::lyt::Pane *otherPane, dAcItem_c::Trial_e, bool);
|
||||
static bool finishPartMaybe();
|
||||
|
||||
private:
|
||||
static dLytDropLine_c *sInstance;
|
||||
|
||||
@@ -47,6 +47,7 @@ public:
|
||||
bool fn_800D5380(u8);
|
||||
bool fn_800D5650();
|
||||
bool fn_800D5680();
|
||||
bool fn_800C9FE0();
|
||||
|
||||
bool isSilentRealm();
|
||||
|
||||
@@ -161,6 +162,7 @@ public:
|
||||
bool draw();
|
||||
|
||||
bool fn_800D5670();
|
||||
bool fn_800D97A0();
|
||||
|
||||
static dLytMeterContainer_c *GetInstance() {
|
||||
return sInstance;
|
||||
@@ -218,6 +220,27 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
static u8 getField_0x13B63() {
|
||||
if (sInstance != nullptr) {
|
||||
return sInstance->field_0x13B63;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void setField_0x13B61(u8 val) {
|
||||
if (sInstance != nullptr) {
|
||||
sInstance->field_0x13B61 = val;
|
||||
}
|
||||
}
|
||||
|
||||
static void setField_0x13B64(u8 val) {
|
||||
if (sInstance != nullptr) {
|
||||
sInstance->field_0x13B64 = val;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static u8 getDowsing0x550A() {
|
||||
if (sInstance != nullptr) {
|
||||
return sInstance->mMeter.mDowsing.getField_0x550A();
|
||||
@@ -226,6 +249,22 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
static bool getfn_800C9FE0() {
|
||||
if (sInstance != nullptr) {
|
||||
return sInstance->mMeter.fn_800C9FE0();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static bool getfn_800D97A0() {
|
||||
if (sInstance != nullptr) {
|
||||
return sInstance->fn_800D97A0();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x00004 */ d2d::ResAccIf_c mResAcc;
|
||||
/* 0x00374 */ dLytMeterEventSkip_c *mpEventSkip;
|
||||
@@ -236,6 +275,11 @@ private:
|
||||
/* 0x13B48 */ bool mVisible;
|
||||
/* 0x13B49 */ u8 _0x13B49[0x13B50 - 0x13B49];
|
||||
/* 0x13B50 */ s32 mFlags;
|
||||
/* 0x13B54 */ u8 _0x13B54[0x13B61 - 0x13B54];
|
||||
/* 0x13B61 */ u8 field_0x13B61;
|
||||
/* 0x13B62 */ u8 field_0x13B62;
|
||||
/* 0x13B63 */ u8 field_0x13B63;
|
||||
/* 0x13B64 */ u8 field_0x13B64;
|
||||
|
||||
static dLytMeterContainer_c *sInstance;
|
||||
};
|
||||
|
||||
@@ -46,23 +46,45 @@ public:
|
||||
bool isAnyFruitAnimFinished();
|
||||
bool isLastFruitAnimFinished();
|
||||
bool isOutAnimFinished();
|
||||
void startFruitAnim(s32 index);
|
||||
void resetBowlNuts();
|
||||
void updateDropLine(nw4r::lyt::Pane *pane);
|
||||
|
||||
void createEffect(s32 fruitIndex);
|
||||
bool incrementTearCount();
|
||||
bool isAnyFruitAnimAtFrame(f32 f) const;
|
||||
|
||||
s32 getActualTearCount() const {
|
||||
return mActualTearCount;
|
||||
}
|
||||
|
||||
s32 getDisplayedTearCount() const {
|
||||
return mDisplayedTearCount;
|
||||
}
|
||||
|
||||
s32 getField0x780() const {
|
||||
return field_0x780;
|
||||
}
|
||||
|
||||
void setField0x780(s32 val) {
|
||||
field_0x780 = val;
|
||||
}
|
||||
|
||||
private:
|
||||
void initLoopAnim();
|
||||
void initBowlNuts();
|
||||
void resetBowlNuts();
|
||||
void initOutAnim();
|
||||
void initColors();
|
||||
void initInAnim();
|
||||
void startNextFruitAnim();
|
||||
void disableCurrentFruitAnim();
|
||||
|
||||
static LytMeterTimerPart1_c *sInstance;
|
||||
|
||||
/* 0x008 */ d2d::dLytSub mLyt;
|
||||
/* 0x09C */ d2d::AnmGroup_c mAnm[26];
|
||||
/* 0x71C */ s32 mActualTearCount;
|
||||
/* 0x720 */ u8 _0x720[0x724 - 0x720];
|
||||
/* 0x720 */ s32 mDisplayedTearCount;
|
||||
/* 0x724 */ nw4r::lyt::Pane *mpPanes[15];
|
||||
/* 0x760 */ s32 field_0x760;
|
||||
/* 0x764 */ dAcItem_c::Trial_e mTrial;
|
||||
@@ -101,6 +123,20 @@ public:
|
||||
mNumPetals = num;
|
||||
}
|
||||
|
||||
s32 getNumPetals() const {
|
||||
return mNumPetals;
|
||||
}
|
||||
|
||||
nw4r::lyt::Pane *i_getPane() const {
|
||||
return mpPane;
|
||||
}
|
||||
|
||||
void setVisible(bool bVisible) {
|
||||
mVisible = bVisible;
|
||||
}
|
||||
|
||||
void calc();
|
||||
|
||||
void init();
|
||||
void initDyingAnims();
|
||||
void initFallOutAnims();
|
||||
@@ -108,10 +144,37 @@ public:
|
||||
void syncPetalsTime();
|
||||
void updatePetalsRate();
|
||||
void restartPetals();
|
||||
void finishSingleAnim(u8 idx);
|
||||
void resetSingleAnim(u8 idx);
|
||||
|
||||
void startInAnim();
|
||||
void startOutAnim();
|
||||
void stopInAnim();
|
||||
void stopBloomAnim();
|
||||
void stopBeforeFallAnim();
|
||||
void stopChangeSirenAnim();
|
||||
void stopSirenLoopAnim();
|
||||
void stopSirenSafeAnim();
|
||||
void stopFlowerLoopAnim();
|
||||
|
||||
void resetFlowerLoopAnim();
|
||||
void stopDyingAnims();
|
||||
void stopFinishedDyingAnims();
|
||||
void stopFallOutAnims();
|
||||
void stopFinishedFallOutAnims();
|
||||
void stopOutAnim();
|
||||
void stopChangeFruitAnim();
|
||||
bool isInAnimFinished();
|
||||
bool isBloomAnimFinished();
|
||||
bool isBeforeFallAnimAtStart();
|
||||
bool isChangeSirenAnimFinished();
|
||||
bool isSirenSafeAnimFinished();
|
||||
bool isFlowerLoopAnimFinished();
|
||||
bool isOutAnimFinished();
|
||||
bool isChangeFruitAnimFinished();
|
||||
void realizeFruitsColor();
|
||||
void finishDyingAnims();
|
||||
void setPetalsToStart();
|
||||
|
||||
void enableChangeFruitAnim();
|
||||
|
||||
@@ -122,11 +185,21 @@ public:
|
||||
void enableSafeAnim();
|
||||
void resumeFlowerLoop();
|
||||
void startFlowerLoop();
|
||||
void syncTime();
|
||||
void syncTimeWithSafe();
|
||||
/** Played when the finish animation is played and each tear hits the flower */
|
||||
void createSingleFruitEffect();
|
||||
/** Played when the whole fruit is finished */
|
||||
void createFruitCompleteEffect();
|
||||
|
||||
void initBeforeFallAnim();
|
||||
|
||||
bool isPetalDyingAnimFinished();
|
||||
bool isFirstFallOutAnimFinished();
|
||||
void initChangeSirenAnim();
|
||||
|
||||
private:
|
||||
void initBloomAnim();
|
||||
void initBeforeFallAnim();
|
||||
void initChangeSirenAnim();
|
||||
void initSirenLoopAnim();
|
||||
void initSirenSafeAnim();
|
||||
void initFlowerLoopAnim();
|
||||
@@ -154,8 +227,27 @@ public:
|
||||
virtual ~dLytMeterTimer_c() {}
|
||||
bool build();
|
||||
bool remove();
|
||||
bool execute();
|
||||
|
||||
private:
|
||||
bool startIn2();
|
||||
bool startOut2();
|
||||
void startIn();
|
||||
void gotoChangeSiren();
|
||||
void gotoSiren();
|
||||
void gotoChangeSafeBloom();
|
||||
void gotoChangeSafe();
|
||||
void gotoSafe();
|
||||
void gotoChangeFruits6();
|
||||
void gotoFruits();
|
||||
void startOut();
|
||||
void gotoChangeFruits3();
|
||||
void startSafe();
|
||||
void doPickup();
|
||||
bool isInSiren();
|
||||
s32 getPetalForTimerMaybe(s32 time);
|
||||
bool checkForPetalChangeMaybe();
|
||||
|
||||
STATE_FUNC_DECLARE(dLytMeterTimer_c, ChangeSiren);
|
||||
STATE_FUNC_DECLARE(dLytMeterTimer_c, Siren);
|
||||
STATE_FUNC_DECLARE(dLytMeterTimer_c, ChangeSafeBloom);
|
||||
@@ -168,10 +260,22 @@ private:
|
||||
static bool sDoFinishAnim;
|
||||
static bool sFinished;
|
||||
|
||||
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytMeterTimer_c);
|
||||
STATE_MGR_DEFINE_UTIL_ISSTATE(dLytMeterTimer_c);
|
||||
|
||||
/* 0x04 */ UI_STATE_MGR_DECLARE(dLytMeterTimer_c);
|
||||
/* 0x40 */ LytMeterTimerPart1_c *mpPart1;
|
||||
/* 0x44 */ LytMeterTimerPart2_c *mpPart2;
|
||||
/* 0x48 */ u8 _0x48[0x60 - 0x48];
|
||||
/* 0x48 */ u8 field_0x48;
|
||||
/* 0x4C */ s32 mActualTime;
|
||||
/* 0x50 */ s32 mLastTime;
|
||||
/* 0x54 */ u8 field_0x54;
|
||||
/* 0x55 */ u8 field_0x55;
|
||||
/* 0x56 */ u8 field_0x56;
|
||||
/* 0x57 */ u8 field_0x57;
|
||||
/* 0x58 */ u8 field_0x58;
|
||||
/* 0x59 */ u8 field_0x59;
|
||||
/* 0x5C */ s32 field_0x5C;
|
||||
/* 0x60 */ s32 field_0x60;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user