mirror of
https://github.com/zeldaret/ss
synced 2026-06-04 02:46:25 -04:00
d_lyt_meter_heart OK
This commit is contained in:
@@ -447,6 +447,7 @@ d/lyt/meter/d_lyt_meter_heart.cpp:
|
||||
.text start:0x8010AEC0 end:0x8010BD48
|
||||
.rodata start:0x804E6C28 end:0x804E6CF8
|
||||
.data start:0x80519F60 end:0x8051A320
|
||||
.sdata start:0x80572518 end:0x80572520
|
||||
.sdata2 start:0x80579D30 end:0x80579D48
|
||||
|
||||
d/lyt/meter/d_lyt_meter_shield_gauge.cpp:
|
||||
|
||||
+53
-53
@@ -31822,61 +31822,61 @@ lbl_80519CA8 = .data:0x80519CA8; // type:object size:0x10
|
||||
__vt__20LytMeterTimerPart2_c = .data:0x80519CB8; // type:object size:0x34
|
||||
__vt__20LytMeterTimerPart1_c = .data:0x80519CEC; // type:object size:0x23C
|
||||
__vt__31sFStateID_c<16dLytMeterTimer_c> = .data:0x80519F28; // type:object size:0x34
|
||||
lbl_80519F60 = .data:0x80519F60; // type:object size:0x18
|
||||
lbl_80519F78 = .data:0x80519F78; // type:object size:0xC
|
||||
lbl_80519F84 = .data:0x80519F84; // type:object size:0xC
|
||||
lbl_80519F90 = .data:0x80519F90; // type:object size:0xC
|
||||
lbl_80519F9C = .data:0x80519F9C; // type:object size:0xC
|
||||
lbl_80519FA8 = .data:0x80519FA8; // type:object size:0xC
|
||||
lbl_80519FB4 = .data:0x80519FB4; // type:object size:0xC
|
||||
lbl_80519FC0 = .data:0x80519FC0; // type:object size:0xC
|
||||
lbl_80519FCC = .data:0x80519FCC; // type:object size:0xC
|
||||
lbl_80519FD8 = .data:0x80519FD8; // type:object size:0xC
|
||||
lbl_80519FE4 = .data:0x80519FE4; // type:object size:0xC
|
||||
lbl_80519FF0 = .data:0x80519FF0; // type:object size:0xC
|
||||
lbl_80519FFC = .data:0x80519FFC; // type:object size:0xC
|
||||
lbl_8051A008 = .data:0x8051A008; // type:object size:0xC
|
||||
lbl_8051A014 = .data:0x8051A014; // type:object size:0xC
|
||||
lbl_8051A020 = .data:0x8051A020; // type:object size:0xC
|
||||
lbl_8051A02C = .data:0x8051A02C; // type:object size:0xC
|
||||
lbl_8051A038 = .data:0x8051A038; // type:object size:0xC
|
||||
lbl_8051A044 = .data:0x8051A044; // type:object size:0xC
|
||||
lbl_8051A050 = .data:0x8051A050; // type:object size:0xC
|
||||
lbl_8051A05C = .data:0x8051A05C; // type:object size:0xC
|
||||
lbl_80519F60 = .data:0x80519F60; // type:object size:0x17 data:string
|
||||
lbl_80519F78 = .data:0x80519F78; // type:object size:0xB data:string
|
||||
lbl_80519F84 = .data:0x80519F84; // type:object size:0xB data:string
|
||||
lbl_80519F90 = .data:0x80519F90; // type:object size:0xB data:string
|
||||
lbl_80519F9C = .data:0x80519F9C; // type:object size:0xB data:string
|
||||
lbl_80519FA8 = .data:0x80519FA8; // type:object size:0xB data:string
|
||||
lbl_80519FB4 = .data:0x80519FB4; // type:object size:0xB data:string
|
||||
lbl_80519FC0 = .data:0x80519FC0; // type:object size:0xB data:string
|
||||
lbl_80519FCC = .data:0x80519FCC; // type:object size:0xB data:string
|
||||
lbl_80519FD8 = .data:0x80519FD8; // type:object size:0xB data:string
|
||||
lbl_80519FE4 = .data:0x80519FE4; // type:object size:0xB data:string
|
||||
lbl_80519FF0 = .data:0x80519FF0; // type:object size:0xB data:string
|
||||
lbl_80519FFC = .data:0x80519FFC; // type:object size:0xB data:string
|
||||
lbl_8051A008 = .data:0x8051A008; // type:object size:0xB data:string
|
||||
lbl_8051A014 = .data:0x8051A014; // type:object size:0xB data:string
|
||||
lbl_8051A020 = .data:0x8051A020; // type:object size:0xB data:string
|
||||
lbl_8051A02C = .data:0x8051A02C; // type:object size:0xB data:string
|
||||
lbl_8051A038 = .data:0x8051A038; // type:object size:0xB data:string
|
||||
lbl_8051A044 = .data:0x8051A044; // type:object size:0xB data:string
|
||||
lbl_8051A050 = .data:0x8051A050; // type:object size:0xB data:string
|
||||
lbl_8051A05C = .data:0x8051A05C; // type:object size:0xB data:string
|
||||
lbl_8051A068 = .data:0x8051A068; // type:object size:0x1C data:string
|
||||
lbl_8051A084 = .data:0x8051A084; // type:object size:0x14
|
||||
lbl_8051A084 = .data:0x8051A084; // type:object size:0xF data:string
|
||||
lbl_8051A098 = .data:0x8051A098; // type:object size:0x18 data:string
|
||||
lbl_8051A0B0 = .data:0x8051A0B0; // type:object size:0x10
|
||||
lbl_8051A0B0 = .data:0x8051A0B0; // type:object size:0xB data:string
|
||||
lbl_8051A0C0 = .data:0x8051A0C0; // type:object size:0x18 data:string
|
||||
lbl_8051A0D8 = .data:0x8051A0D8; // type:object size:0xC
|
||||
lbl_8051A0E4 = .data:0x8051A0E4; // type:object size:0x1C
|
||||
lbl_8051A100 = .data:0x8051A100; // type:object size:0x10
|
||||
lbl_8051A110 = .data:0x8051A110; // type:object size:0x18
|
||||
lbl_8051A128 = .data:0x8051A128; // type:object size:0xC
|
||||
lbl_8051A134 = .data:0x8051A134; // type:object size:0x1C
|
||||
lbl_8051A0D8 = .data:0x8051A0D8; // type:object size:0xB data:string
|
||||
lbl_8051A0E4 = .data:0x8051A0E4; // type:object size:0x1B data:string
|
||||
lbl_8051A100 = .data:0x8051A100; // type:object size:0xE data:string
|
||||
lbl_8051A110 = .data:0x8051A110; // type:object size:0x17 data:string
|
||||
lbl_8051A128 = .data:0x8051A128; // type:object size:0xA data:string
|
||||
lbl_8051A134 = .data:0x8051A134; // type:object size:0x19 data:string
|
||||
lbl_8051A150 = .data:0x8051A150; // type:object size:0xC data:string
|
||||
lbl_8051A15C = .data:0x8051A15C; // type:object size:0xC
|
||||
lbl_8051A168 = .data:0x8051A168; // type:object size:0xC
|
||||
lbl_8051A174 = .data:0x8051A174; // type:object size:0xC
|
||||
lbl_8051A180 = .data:0x8051A180; // type:object size:0xC
|
||||
lbl_8051A18C = .data:0x8051A18C; // type:object size:0xC
|
||||
lbl_8051A198 = .data:0x8051A198; // type:object size:0xC
|
||||
lbl_8051A1A4 = .data:0x8051A1A4; // type:object size:0xC
|
||||
lbl_8051A1B0 = .data:0x8051A1B0; // type:object size:0xC
|
||||
lbl_8051A1BC = .data:0x8051A1BC; // type:object size:0xC
|
||||
lbl_8051A1C8 = .data:0x8051A1C8; // type:object size:0xC
|
||||
lbl_8051A1D4 = .data:0x8051A1D4; // type:object size:0xC
|
||||
lbl_8051A1E0 = .data:0x8051A1E0; // type:object size:0xC
|
||||
lbl_8051A1EC = .data:0x8051A1EC; // type:object size:0xC
|
||||
lbl_8051A1F8 = .data:0x8051A1F8; // type:object size:0xC
|
||||
lbl_8051A204 = .data:0x8051A204; // type:object size:0xC
|
||||
lbl_8051A210 = .data:0x8051A210; // type:object size:0xC
|
||||
lbl_8051A21C = .data:0x8051A21C; // type:object size:0xC
|
||||
lbl_8051A228 = .data:0x8051A228; // type:object size:0xC
|
||||
lbl_8051A234 = .data:0x8051A234; // type:object size:0xC
|
||||
lbl_8051A240 = .data:0x8051A240; // type:object size:0x98
|
||||
lbl_8051A2D8 = .data:0x8051A2D8; // type:object size:0x10
|
||||
__vt__16dLytMeterHeart_c = .data:0x8051A2E8; // type:object size:0x38
|
||||
lbl_8051A15C = .data:0x8051A15C; // type:object size:0xB data:string
|
||||
lbl_8051A168 = .data:0x8051A168; // type:object size:0xB data:string
|
||||
lbl_8051A174 = .data:0x8051A174; // type:object size:0xB data:string
|
||||
lbl_8051A180 = .data:0x8051A180; // type:object size:0xB data:string
|
||||
lbl_8051A18C = .data:0x8051A18C; // type:object size:0xB data:string
|
||||
lbl_8051A198 = .data:0x8051A198; // type:object size:0xB data:string
|
||||
lbl_8051A1A4 = .data:0x8051A1A4; // type:object size:0xB data:string
|
||||
lbl_8051A1B0 = .data:0x8051A1B0; // type:object size:0xB data:string
|
||||
lbl_8051A1BC = .data:0x8051A1BC; // type:object size:0xB data:string
|
||||
lbl_8051A1C8 = .data:0x8051A1C8; // type:object size:0xB data:string
|
||||
lbl_8051A1D4 = .data:0x8051A1D4; // type:object size:0xB data:string
|
||||
lbl_8051A1E0 = .data:0x8051A1E0; // type:object size:0xB data:string
|
||||
lbl_8051A1EC = .data:0x8051A1EC; // type:object size:0xB data:string
|
||||
lbl_8051A1F8 = .data:0x8051A1F8; // type:object size:0xB data:string
|
||||
lbl_8051A204 = .data:0x8051A204; // type:object size:0xB data:string
|
||||
lbl_8051A210 = .data:0x8051A210; // type:object size:0xB data:string
|
||||
lbl_8051A21C = .data:0x8051A21C; // type:object size:0xB data:string
|
||||
lbl_8051A228 = .data:0x8051A228; // type:object size:0xB data:string
|
||||
lbl_8051A234 = .data:0x8051A234; // type:object size:0xB data:string
|
||||
lbl_8051A240 = .data:0x8051A240; // type:object size:0xB data:string
|
||||
lbl_8051A2D8 = .data:0x8051A2D8; // type:object size:0xE data:string
|
||||
__vt__16dLytMeterHeart_c = .data:0x8051A2E8; // type:object size:0x34
|
||||
lbl_8051A320 = .data:0x8051A320; // type:object size:0x16 data:string
|
||||
lbl_8051A338 = .data:0x8051A338; // type:object size:0xB data:string
|
||||
lbl_8051A344 = .data:0x8051A344; // type:object size:0x16 data:string
|
||||
@@ -38179,7 +38179,7 @@ lbl_805724F8 = .sdata:0x805724F8; // type:object size:0x8
|
||||
lbl_80572500 = .sdata:0x80572500; // type:object size:0x8 data:4byte
|
||||
lbl_80572508 = .sdata:0x80572508; // type:object size:0x8
|
||||
lbl_80572510 = .sdata:0x80572510; // type:object size:0x8 data:4byte
|
||||
lbl_80572518 = .sdata:0x80572518; // type:object size:0x8
|
||||
lbl_80572518 = .sdata:0x80572518; // type:object size:0x5 data:string
|
||||
lbl_80572520 = .sdata:0x80572520; // type:object size:0x8 data:string
|
||||
lbl_80572528 = .sdata:0x80572528; // type:object size:0x8 data:4byte
|
||||
lbl_80572530 = .sdata:0x80572530; // type:object size:0x8 data:4byte
|
||||
@@ -40387,7 +40387,7 @@ lbl_80575934 = .sbss:0x80575934; // type:object size:0x4 data:4byte
|
||||
lbl_80575938 = .sbss:0x80575938; // type:object size:0x4 data:float
|
||||
lbl_8057593C = .sbss:0x8057593C; // type:object size:0x4 data:float
|
||||
LYT_PAUSE_DISP = .sbss:0x80575940; // type:object size:0x8 data:4byte
|
||||
lbl_80575948 = .sbss:0x80575948; // type:object size:0x8 data:4byte
|
||||
sInstance__14dLytGameOver_c = .sbss:0x80575948; // type:object size:0x8 data:4byte
|
||||
LYT_SAVE_MGR = .sbss:0x80575950; // type:object size:0x8 data:4byte
|
||||
lbl_80575958 = .sbss:0x80575958; // type:object size:0x1 data:byte
|
||||
lbl_80575959 = .sbss:0x80575959; // type:object size:0x1 data:byte
|
||||
|
||||
+1
-1
@@ -402,7 +402,7 @@ config.libs = [
|
||||
Object(NonMatching, "d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp"),
|
||||
Object(NonMatching, "d/lyt/meter/d_lyt_meter_event_skip.cpp"),
|
||||
Object(NonMatching, "d/lyt/meter/d_lyt_meter_timer.cpp"),
|
||||
Object(NonMatching, "d/lyt/meter/d_lyt_meter_heart.cpp"),
|
||||
Object(Matching, "d/lyt/meter/d_lyt_meter_heart.cpp"),
|
||||
Object(Matching, "d/lyt/meter/d_lyt_meter_shield_gauge.cpp"),
|
||||
Object(NonMatching, "d/lyt/d_lyt_do_button.cpp"),
|
||||
Object(NonMatching, "d/lyt/d_lyt_do_button_related.cpp"),
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef D_LYT_GAME_OVER_H
|
||||
#define D_LYT_GAME_OVER_H
|
||||
|
||||
#include "d/d_base.h"
|
||||
|
||||
class dLytGameOver_c : public dBase_c {
|
||||
public:
|
||||
dLytGameOver_c();
|
||||
virtual ~dLytGameOver_c();
|
||||
|
||||
static dLytGameOver_c *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
private:
|
||||
static dLytGameOver_c *sInstance;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -39,16 +39,16 @@ private:
|
||||
/* 0x778 */ s32 mCurrentHealthCapacity;
|
||||
/* 0x77C */ s32 mStoredHealth;
|
||||
/* 0x780 */ s32 mStoredHealthCapacity;
|
||||
/* 0x784 */ s32 field_0x784;
|
||||
/* 0x788 */ s32 field_0x788;
|
||||
/* 0x784 */ s32 mHealthCapacityIncreaseDelayTimer;
|
||||
/* 0x788 */ s32 mEffectHeartIdx;
|
||||
/* 0x78C */ s32 field_0x78C;
|
||||
/* 0x790 */ s32 field_0x790;
|
||||
/* 0x794 */ u8 field_0x794;
|
||||
/* 0x795 */ u8 field_0x795;
|
||||
/* 0x796 */ u8 field_0x796;
|
||||
/* 0x797 */ u8 field_0x797;
|
||||
/* 0x798 */ u8 field_0x798;
|
||||
/* 0x799 */ u8 field_0x799;
|
||||
/* 0x797 */ bool field_0x797;
|
||||
/* 0x798 */ bool mIsLoop;
|
||||
/* 0x799 */ bool mIsDanger;
|
||||
/* 0x79A */ u8 field_0x79A;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
#include "d/lyt/meter/d_lyt_meter_heart.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/d_sc_game.h"
|
||||
#include "d/lyt/d2d.h"
|
||||
#include "d/lyt/d_lyt_game_over.h"
|
||||
#include "nw4r/math/math_types.h"
|
||||
#include "toBeSorted/effects_struct.h"
|
||||
#include "toBeSorted/event_manager.h"
|
||||
#include "toBeSorted/file_manager.h"
|
||||
#include "toBeSorted/small_sound_mgr.h"
|
||||
|
||||
static const d2d::LytBrlanMapping brlanMap[] = {
|
||||
{ "heartAll_00_heat.brlan", "G_heart_00"},
|
||||
@@ -77,14 +84,14 @@ bool dLytMeterHeart_c::build(d2d::ResAccIf_c *resAcc) {
|
||||
mCurrentHealthCapacity = 0;
|
||||
mStoredHealth = 0;
|
||||
mStoredHealthCapacity = 0;
|
||||
field_0x784 = 0;
|
||||
field_0x788 = -1;
|
||||
mHealthCapacityIncreaseDelayTimer = 0;
|
||||
mEffectHeartIdx = -1;
|
||||
field_0x78C = 0;
|
||||
field_0x790 = 0;
|
||||
field_0x794 = 0;
|
||||
field_0x797 = 0;
|
||||
field_0x798 = 0;
|
||||
field_0x799 = 0;
|
||||
mIsLoop = false;
|
||||
mIsDanger = false;
|
||||
field_0x79A = 0;
|
||||
|
||||
mCurrentHealth = getCurrentHealth();
|
||||
@@ -113,7 +120,7 @@ bool dLytMeterHeart_c::execute() {
|
||||
}
|
||||
executeInternal();
|
||||
|
||||
if (field_0x798) {
|
||||
if (mIsLoop) {
|
||||
if (!mAnm[HEART_ANIM_LOOP].isEnabled()) {
|
||||
mAnm[HEART_ANIM_LOOP].setFrame(0.0f);
|
||||
mAnm[HEART_ANIM_LOOP].setAnimEnable(true);
|
||||
@@ -126,7 +133,7 @@ bool dLytMeterHeart_c::execute() {
|
||||
}
|
||||
}
|
||||
|
||||
if (field_0x799) {
|
||||
if (mIsDanger) {
|
||||
if (dAcPy_c::GetLink2()->getField_0x4564() == 1.0f) {
|
||||
if (!mAnm[HEART_ANIM_DANGER].isEnabled()) {
|
||||
mAnm[HEART_ANIM_DANGER].setAnimEnable(true);
|
||||
@@ -191,7 +198,7 @@ bool dLytMeterHeart_c::execute() {
|
||||
}
|
||||
}
|
||||
|
||||
if (field_0x799 && mAnm[HEART_ANIM_DANGER].isEndReached()) {
|
||||
if (mIsDanger && mAnm[HEART_ANIM_DANGER].isEndReached()) {
|
||||
mAnm[HEART_ANIM_DANGER].setToEnd();
|
||||
mAnm[HEART_ANIM_DANGER].setAnimEnable(false);
|
||||
}
|
||||
@@ -210,11 +217,160 @@ s32 dLytMeterHeart_c::getDisplayedHealthCapacity() const {
|
||||
}
|
||||
|
||||
void dLytMeterHeart_c::realizeHeartsState() {
|
||||
// TODO
|
||||
}
|
||||
s32 hearts = getNumDisplayedHearts();
|
||||
(void)getDisplayedHealthCapacity();
|
||||
s32 health = mStoredHealth;
|
||||
s32 healthCapacity = mStoredHealthCapacity;
|
||||
s32 numFilledHearts = health / 4;
|
||||
s32 partialHeartFill = health % 4; // Wrong
|
||||
s32 displayedFilledHearts = healthCapacity / 4;
|
||||
s32 mNumTotalHeartsIncludingPartial = (getCurrentHealthCapacity() + 3) / 4;
|
||||
if (displayedFilledHearts < mNumTotalHeartsIncludingPartial) {
|
||||
mNumTotalHeartsIncludingPartial = displayedFilledHearts;
|
||||
}
|
||||
|
||||
mIsLoop = false;
|
||||
mIsDanger = false;
|
||||
|
||||
for (int i = 0; i < HEART_NUM_HEARTS; i++) {
|
||||
if (i < mNumTotalHeartsIncludingPartial) {
|
||||
mpHeartPanes[i]->SetVisible(true);
|
||||
if (i < displayedFilledHearts) {
|
||||
if (i < hearts) {
|
||||
if (numFilledHearts == 0 && partialHeartFill == 0) {
|
||||
if (i == 0) {
|
||||
mpMainPane->SetVisible(false);
|
||||
}
|
||||
mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(1.0f);
|
||||
} else if (i < numFilledHearts) {
|
||||
mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(0.0f);
|
||||
if (i == numFilledHearts - 1 && partialHeartFill == 0) {
|
||||
mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(2.0f);
|
||||
mpMainPane->SetVisible(true);
|
||||
mpMainPane->SetTranslate(mpHeartPanes[i]->GetTranslate());
|
||||
mAnm[HEART_ANIM_MAIN].setFrame(4.0f);
|
||||
if (dAcPy_c::GetLink2() != nullptr &&
|
||||
dAcPy_c::GetLink2()->hasLessThanQuarterHealth(false)) {
|
||||
mIsDanger = true;
|
||||
} else {
|
||||
mIsLoop = true;
|
||||
}
|
||||
} else {
|
||||
mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(0.0f);
|
||||
}
|
||||
} else if (i == numFilledHearts && partialHeartFill != 0) {
|
||||
mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(2.0f);
|
||||
mpMainPane->SetVisible(true);
|
||||
mpMainPane->SetTranslate(mpHeartPanes[i]->GetTranslate());
|
||||
mAnm[HEART_ANIM_MAIN].setFrame(partialHeartFill);
|
||||
if (dAcPy_c::GetLink2() != nullptr && dAcPy_c::GetLink2()->hasLessThanQuarterHealth(false)) {
|
||||
mIsDanger = true;
|
||||
} else {
|
||||
mIsLoop = true;
|
||||
}
|
||||
} else {
|
||||
mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(1.0f);
|
||||
}
|
||||
} else {
|
||||
mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(1.0f);
|
||||
}
|
||||
} else {
|
||||
mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(1.0f);
|
||||
}
|
||||
} else {
|
||||
mpHeartPanes[i]->SetVisible(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_972_;
|
||||
void dLytMeterHeart_c::executeInternal() {
|
||||
// TODO
|
||||
if (mEffectHeartIdx >= 0) {
|
||||
nw4r::math::MTX34 mtx = mpHeartPanes[mEffectHeartIdx]->GetGlobalMtx();
|
||||
mVec3_c pos(mtx._03, mtx._13, 0.0f);
|
||||
EffectsStruct::fn_800298C0(PARTICLE_RESOURCE_ID_MAPPING_972_, &pos, nullptr, nullptr, nullptr, nullptr);
|
||||
SmallSoundManager::GetInstance()->playSound(SE_S_HEART_ADD);
|
||||
mEffectHeartIdx = -1;
|
||||
}
|
||||
|
||||
// Redundant
|
||||
if (!field_0x794) {
|
||||
mCurrentHealth = getCurrentHealth();
|
||||
mCurrentHealthCapacity = getCurrentHealthCapacity();
|
||||
field_0x794 = 1;
|
||||
}
|
||||
|
||||
mCurrentHealthCapacity = getCurrentHealthCapacity();
|
||||
mCurrentHealth = getCurrentHealth();
|
||||
|
||||
if (field_0x796) {
|
||||
for (int i = 0; i < HEART_NUM_HEARTS; i++) {
|
||||
mAnm[i + HEART_ANIM_HEAT_OFFSET].setFrame(1.0f);
|
||||
}
|
||||
mLyt.calc();
|
||||
field_0x796 = 0;
|
||||
}
|
||||
|
||||
bool isDanger = dAcPy_c::GetLink2()->hasLessThanQuarterHealth(0);
|
||||
bool healthDifferent = mStoredHealth != mCurrentHealth;
|
||||
bool healthCapacityDifferent = mStoredHealthCapacity != mCurrentHealthCapacity;
|
||||
if (healthCapacityDifferent && field_0x790 < 20) {
|
||||
field_0x790 = 20;
|
||||
}
|
||||
if (healthDifferent || field_0x797 != isDanger) {
|
||||
s32 current = mCurrentHealth;
|
||||
if (mStoredHealth + 1 <= current) {
|
||||
mStoredHealth = mStoredHealth + 1;
|
||||
if (mpAlphaPane->IsVisible() && mpAlphaPane->GetGlobalAlpha() != 0 && mStoredHealth % 4 == 0 &&
|
||||
(!(dScGame_c::currentSpawnInfo.stageName == "F406") || dScGame_c::currentSpawnInfo.layer != 13) &&
|
||||
dLytGameOver_c::GetInstance() == nullptr) {
|
||||
SmallSoundManager::GetInstance()->playSound(SE_S_HP_GAUGE_UP);
|
||||
}
|
||||
} else {
|
||||
if (mStoredHealth - 1 >= current) {
|
||||
mStoredHealth = mStoredHealth - 1;
|
||||
if (EventManager::isInEvent() && !strcmp(EventManager::getCurrentEventName(), ("MoleF202Start")) &&
|
||||
mStoredHealth % 4 == 0) {
|
||||
SmallSoundManager::GetInstance()->playSound(SE_S_HP_GAUGE_DOWN);
|
||||
}
|
||||
}
|
||||
}
|
||||
realizeHeartsState();
|
||||
if (healthDifferent && field_0x78C < 10) {
|
||||
field_0x78C = 10;
|
||||
}
|
||||
field_0x797 = isDanger;
|
||||
} else if (healthCapacityDifferent) {
|
||||
if (mStoredHealthCapacity + 1 <= mCurrentHealthCapacity) {
|
||||
if ((mStoredHealthCapacity + 1) % 4 == 0) {
|
||||
if (mHealthCapacityIncreaseDelayTimer < 15) {
|
||||
mHealthCapacityIncreaseDelayTimer += 1;
|
||||
return;
|
||||
}
|
||||
mHealthCapacityIncreaseDelayTimer = 0;
|
||||
}
|
||||
mStoredHealthCapacity++;
|
||||
if (mStoredHealthCapacity % 4 == 0) {
|
||||
field_0x79A = 1;
|
||||
}
|
||||
} else {
|
||||
if (mStoredHealthCapacity - 1 >= mCurrentHealthCapacity) {
|
||||
mStoredHealthCapacity = mStoredHealthCapacity - 1;
|
||||
}
|
||||
}
|
||||
if (field_0x79A && mStoredHealth > mCurrentHealthCapacity - 3) {
|
||||
s32 numDisplayed = getNumDisplayedHearts();
|
||||
if (numDisplayed >= 1 && numDisplayed <= 20) {
|
||||
mEffectHeartIdx = numDisplayed - 1;
|
||||
field_0x79A = 0;
|
||||
}
|
||||
}
|
||||
realizeHeartsState();
|
||||
if (field_0x78C < 20) {
|
||||
field_0x78C = 20;
|
||||
}
|
||||
} else if (field_0x79A) {
|
||||
field_0x79A = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 dLytMeterHeart_c::getCurrentHealth() const {
|
||||
|
||||
Reference in New Issue
Block a user