mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-23 09:04:21 +00:00
Merge 1e3f95ede9 into 0f550e5aae
This commit is contained in:
commit
4e7ffff815
|
|
@ -16988,75 +16988,75 @@ Boss/Koopa/KoopaHintHolder.o:
|
|||
label:
|
||||
- _ZN24KoopaBombHintRequestInfoC1Ev
|
||||
- _ZN24KoopaBombHintRequestInfoC2Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x094280
|
||||
size: 104
|
||||
label:
|
||||
- _ZN15KoopaHintHolderC1EPN2al14SceneObjHolderE
|
||||
- _ZN15KoopaHintHolderC2EPN2al14SceneObjHolderE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0942e8
|
||||
size: 4
|
||||
label: _ZN15KoopaHintHolder6updateEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0942ec
|
||||
size: 52
|
||||
label: _ZN15KoopaHintHolder23tryAppearHintCapReflectEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x094320
|
||||
size: 152
|
||||
label: _ZN15KoopaHintHolder22tryAppearMessageDamageEi
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0943b8
|
||||
size: 28
|
||||
label: _ZN15KoopaHintHolder7exeWaitEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0943d4
|
||||
size: 76
|
||||
label: _ZN15KoopaHintHolder17exeHintCapReflectEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x094420
|
||||
size: 148
|
||||
label: _ZN15KoopaHintHolder20exeHintCapAttachBombEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0944b4
|
||||
size: 16
|
||||
label: _ZN15KoopaHintHolder16exeMessageDamageEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0944c4
|
||||
size: 36
|
||||
label: _ZN15KoopaHintHolderD0Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x0944e8
|
||||
size: 8
|
||||
label: _ZNK15KoopaHintHolder17getSceneObjHolderEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x0944f0
|
||||
size: 8
|
||||
label: _ZThn16_NK15KoopaHintHolder17getSceneObjHolderEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x0944f8
|
||||
size: 32
|
||||
label: _ZNK12_GLOBAL__N_122KoopaHintHolderNrvWait7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x094518
|
||||
size: 80
|
||||
label: _ZNK12_GLOBAL__N_132KoopaHintHolderNrvHintCapReflect7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x094568
|
||||
size: 20
|
||||
label: _ZNK12_GLOBAL__N_131KoopaHintHolderNrvMessageDamage7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x09457c
|
||||
size: 152
|
||||
label: _ZNK12_GLOBAL__N_135KoopaHintHolderNrvHintCapAttachBomb7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
Boss/Koopa/KoopaItemHolder.o:
|
||||
'.text':
|
||||
|
|
|
|||
77
src/Boss/Koopa/KoopaHintHolder.cpp
Normal file
77
src/Boss/Koopa/KoopaHintHolder.cpp
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
#include "Boss/Koopa/KoopaHintHolder.h"
|
||||
|
||||
#include "Library/Base/StringUtil.h"
|
||||
#include "Library/Math/MathUtil.h"
|
||||
#include "Library/Nerve/NerveSetupUtil.h"
|
||||
#include "Library/Nerve/NerveUtil.h"
|
||||
|
||||
#include "MapObj/CapMessageShowInfo.h"
|
||||
|
||||
namespace {
|
||||
NERVE_IMPL(KoopaHintHolder, Wait)
|
||||
NERVE_IMPL(KoopaHintHolder, HintCapReflect)
|
||||
NERVE_IMPL(KoopaHintHolder, MessageDamage)
|
||||
NERVE_IMPL(KoopaHintHolder, HintCapAttachBomb)
|
||||
|
||||
NERVES_MAKE_NOSTRUCT(KoopaHintHolder, HintCapReflect, HintCapAttachBomb, Wait, MessageDamage)
|
||||
} // namespace
|
||||
|
||||
KoopaBombHintRequestInfo::KoopaBombHintRequestInfo() : isRequested(false) {}
|
||||
|
||||
KoopaHintHolder::KoopaHintHolder(al::SceneObjHolder* sceneObjHolder)
|
||||
: al::NerveExecutor("クッパヒント保持"), mSceneObjHolder(sceneObjHolder),
|
||||
mIsHintCapAttachBombRequested(false), mIsHintCapReflectEnabled(true), mBombHeadHintIndex(-1) {
|
||||
initNerve(&Wait, 0);
|
||||
}
|
||||
|
||||
void KoopaHintHolder::update() {
|
||||
updateNerve();
|
||||
}
|
||||
|
||||
bool KoopaHintHolder::tryAppearHintCapReflect() {
|
||||
if (!mIsHintCapReflectEnabled)
|
||||
return false;
|
||||
|
||||
mIsHintCapReflectEnabled = false;
|
||||
al::setNerve(this, &HintCapReflect);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool KoopaHintHolder::tryAppearMessageDamage(s32 damageType) {
|
||||
if (!al::isNerve(this, &Wait))
|
||||
return false;
|
||||
|
||||
rs::showCapMessageBossDamage(this, al::StringTmp<64>("Koopa_Damage_%d", damageType).cstr(), 30,
|
||||
30);
|
||||
al::setNerve(this, &MessageDamage);
|
||||
return true;
|
||||
}
|
||||
|
||||
void KoopaHintHolder::exeWait() {
|
||||
if (!mIsHintCapAttachBombRequested)
|
||||
return;
|
||||
|
||||
mIsHintCapAttachBombRequested = false;
|
||||
al::setNerve(this, &HintCapAttachBomb);
|
||||
}
|
||||
|
||||
void KoopaHintHolder::exeHintCapReflect() {
|
||||
if (al::isFirstStep(this))
|
||||
rs::showCapMessage(this, "KoopaHintCapReflect", 60, 30);
|
||||
|
||||
al::setNerveAtGreaterEqualStep(this, &Wait, 60);
|
||||
}
|
||||
|
||||
void KoopaHintHolder::exeHintCapAttachBomb() {
|
||||
if (al::isFirstStep(this)) {
|
||||
mBombHeadHintIndex = al::modi(mBombHeadHintIndex + 4, 3);
|
||||
al::StringTmp<64> label("KoopaHintCapAttachBombHead_%02d", mBombHeadHintIndex);
|
||||
rs::showCapMessage(this, label.cstr(), 60, 0);
|
||||
}
|
||||
|
||||
al::setNerveAtGreaterEqualStep(this, &Wait, 60);
|
||||
}
|
||||
|
||||
void KoopaHintHolder::exeMessageDamage() {
|
||||
al::setNerveAtGreaterEqualStep(this, &Wait, 30);
|
||||
}
|
||||
41
src/Boss/Koopa/KoopaHintHolder.h
Normal file
41
src/Boss/Koopa/KoopaHintHolder.h
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
|
||||
#include "Library/Nerve/NerveExecutor.h"
|
||||
#include "Library/Scene/IUseSceneObjHolder.h"
|
||||
|
||||
namespace al {
|
||||
class SceneObjHolder;
|
||||
} // namespace al
|
||||
|
||||
struct KoopaBombHintRequestInfo {
|
||||
KoopaBombHintRequestInfo();
|
||||
|
||||
bool isRequested = false;
|
||||
};
|
||||
|
||||
static_assert(sizeof(KoopaBombHintRequestInfo) == 0x1);
|
||||
|
||||
class KoopaHintHolder : public al::NerveExecutor, public al::IUseSceneObjHolder {
|
||||
public:
|
||||
KoopaHintHolder(al::SceneObjHolder* sceneObjHolder);
|
||||
|
||||
void update();
|
||||
bool tryAppearHintCapReflect();
|
||||
bool tryAppearMessageDamage(s32 damageType);
|
||||
void exeWait();
|
||||
void exeHintCapReflect();
|
||||
void exeHintCapAttachBomb();
|
||||
void exeMessageDamage();
|
||||
|
||||
al::SceneObjHolder* getSceneObjHolder() const override { return mSceneObjHolder; }
|
||||
|
||||
private:
|
||||
al::SceneObjHolder* mSceneObjHolder = nullptr;
|
||||
bool mIsHintCapAttachBombRequested = false;
|
||||
bool mIsHintCapReflectEnabled = true;
|
||||
s32 mBombHeadHintIndex = -1;
|
||||
};
|
||||
|
||||
static_assert(sizeof(KoopaHintHolder) == 0x28);
|
||||
Loading…
Reference in a new issue