Npc: Implement PeachOnKoopaAnimRequester (#977)

This commit is contained in:
guymakinggames 2026-03-30 15:13:09 +01:00 committed by GitHub
parent 9906a5d12b
commit 1778223e55
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 145 additions and 13 deletions

View file

@ -104918,56 +104918,56 @@ Npc/PeachOnKoopaAnimRequester.o:
label:
- _ZN25PeachOnKoopaAnimRequesterC1Ev
- _ZN25PeachOnKoopaAnimRequesterC2Ev
status: NotDecompiled
status: Matching
- offset: 0x3add10
size: 8
label: _ZN25PeachOnKoopaAnimRequester12resetRequestEv
status: NotDecompiled
status: Matching
- offset: 0x3add18
size: 76
label: _ZN2rs29initPeachOnKoopaAnimRequesterEPKN2al18IUseSceneObjHolderE
status: NotDecompiled
status: Matching
- offset: 0x3add64
size: 60
label: _ZN2rs35requestStartPeachOnKoopaAnimSuccessEPKN2al18IUseSceneObjHolderE
status: NotDecompiled
status: Matching
- offset: 0x3adda0
size: 60
label: _ZN2rs39requestStartPeachOnKoopaHitReaction2DInEPKN2al18IUseSceneObjHolderE
status: NotDecompiled
status: Matching
- offset: 0x3adddc
size: 60
label: _ZN2rs40requestStartPeachOnKoopaHitReaction2DOutEPKN2al18IUseSceneObjHolderE
status: NotDecompiled
status: Matching
- offset: 0x3ade18
size: 60
label: _ZN2rs52requestStartPeachOnKoopaHitReactionBreakPillarBridgeEPKN2al18IUseSceneObjHolderE
status: NotDecompiled
status: Matching
- offset: 0x3ade54
size: 60
label: _ZN2rs48requestStartPeachOnKoopaHitReactionCrackGateHardEPKN2al18IUseSceneObjHolderE
status: NotDecompiled
status: Matching
- offset: 0x3ade90
size: 60
label: _ZN2rs48requestStartPeachOnKoopaHitReactionBreakGateHardEPKN2al18IUseSceneObjHolderE
status: NotDecompiled
status: Matching
- offset: 0x3adecc
size: 60
label: _ZN2rs46requestStartPeachOnKoopaHitReactionBreakPillarEPKN2al18IUseSceneObjHolderE
status: NotDecompiled
status: Matching
- offset: 0x3adf08
size: 60
label: _ZN2rs49requestStartPeachOnKoopaHitReactionBreakGateFinalEPKN2al18IUseSceneObjHolderE
status: NotDecompiled
status: Matching
- offset: 0x3adf44
size: 12
label: _ZNK25PeachOnKoopaAnimRequester15getSceneObjNameEv
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x3adf50
size: 4
label: _ZN25PeachOnKoopaAnimRequesterD0Ev
status: NotDecompiled
status: Matching
lazy: true
Npc/PeachOnKoopaShoulder.o:
'.text':

View file

@ -0,0 +1,66 @@
#include "Npc/PeachOnKoopaAnimRequester.h"
#include "Library/Scene/SceneObjUtil.h"
PeachOnKoopaAnimRequester::PeachOnKoopaAnimRequester() = default;
void PeachOnKoopaAnimRequester::resetRequest() {
mIsRequestSuccess = false;
mIsRequestHitReaction2DIn = false;
mIsRequestHitReaction2DOut = false;
mIsRequestHitReactionBreakPillarBridge = false;
mIsRequestHitReactionCrackGateHard = false;
mIsRequestHitReactionBreakGateHard = false;
mIsRequestHitReactionBreakPillar = false;
mIsRequestHitReactionBreakGateFinal = false;
}
namespace rs {
PeachOnKoopaAnimRequester* initPeachOnKoopaAnimRequester(const al::IUseSceneObjHolder* holder) {
PeachOnKoopaAnimRequester* requester = new PeachOnKoopaAnimRequester();
al::setSceneObj(holder, requester, SceneObjID_PeachOnKoopaAnimRequester);
return requester;
}
void requestStartPeachOnKoopaAnimSuccess(const al::IUseSceneObjHolder* holder) {
if (al::isExistSceneObj(holder, SceneObjID_PeachOnKoopaAnimRequester))
al::getSceneObj<PeachOnKoopaAnimRequester>(holder)->requestSuccess();
}
void requestStartPeachOnKoopaHitReaction2DIn(const al::IUseSceneObjHolder* holder) {
if (al::isExistSceneObj(holder, SceneObjID_PeachOnKoopaAnimRequester))
al::getSceneObj<PeachOnKoopaAnimRequester>(holder)->requestHitReaction2DIn();
}
void requestStartPeachOnKoopaHitReaction2DOut(const al::IUseSceneObjHolder* holder) {
if (al::isExistSceneObj(holder, SceneObjID_PeachOnKoopaAnimRequester))
al::getSceneObj<PeachOnKoopaAnimRequester>(holder)->requestHitReaction2DOut();
}
void requestStartPeachOnKoopaHitReactionBreakPillarBridge(const al::IUseSceneObjHolder* holder) {
if (al::isExistSceneObj(holder, SceneObjID_PeachOnKoopaAnimRequester))
al::getSceneObj<PeachOnKoopaAnimRequester>(holder)->requestHitReactionBreakPillarBridge();
}
void requestStartPeachOnKoopaHitReactionCrackGateHard(const al::IUseSceneObjHolder* holder) {
if (al::isExistSceneObj(holder, SceneObjID_PeachOnKoopaAnimRequester))
al::getSceneObj<PeachOnKoopaAnimRequester>(holder)->requestHitReactionCrackGateHard();
}
void requestStartPeachOnKoopaHitReactionBreakGateHard(const al::IUseSceneObjHolder* holder) {
if (al::isExistSceneObj(holder, SceneObjID_PeachOnKoopaAnimRequester))
al::getSceneObj<PeachOnKoopaAnimRequester>(holder)->requestHitReactionBreakGateHard();
}
void requestStartPeachOnKoopaHitReactionBreakPillar(const al::IUseSceneObjHolder* holder) {
if (al::isExistSceneObj(holder, SceneObjID_PeachOnKoopaAnimRequester))
al::getSceneObj<PeachOnKoopaAnimRequester>(holder)->requestHitReactionBreakPillar();
}
void requestStartPeachOnKoopaHitReactionBreakGateFinal(const al::IUseSceneObjHolder* holder) {
if (al::isExistSceneObj(holder, SceneObjID_PeachOnKoopaAnimRequester))
al::getSceneObj<PeachOnKoopaAnimRequester>(holder)->requestHitReactionBreakGateFinal();
}
} // namespace rs

View file

@ -0,0 +1,66 @@
#pragma once
#include <basis/seadTypes.h>
#include "Library/Scene/ISceneObj.h"
#include "Scene/SceneObjFactory.h"
namespace al {
class IUseSceneObjHolder;
}
class PeachOnKoopaAnimRequester : public al::ISceneObj {
public:
static constexpr s32 sSceneObjId = SceneObjID_PeachOnKoopaAnimRequester;
PeachOnKoopaAnimRequester();
void resetRequest();
const char* getSceneObjName() const override {
return "肩乗りピーチへのアニメーションリクエスト";
}
void requestSuccess() { mIsRequestSuccess = true; }
void requestHitReaction2DIn() { mIsRequestHitReaction2DIn = true; }
void requestHitReaction2DOut() { mIsRequestHitReaction2DOut = true; }
void requestHitReactionBreakPillarBridge() { mIsRequestHitReactionBreakPillarBridge = true; }
void requestHitReactionCrackGateHard() { mIsRequestHitReactionCrackGateHard = true; }
void requestHitReactionBreakGateHard() { mIsRequestHitReactionBreakGateHard = true; }
void requestHitReactionBreakPillar() { mIsRequestHitReactionBreakPillar = true; }
void requestHitReactionBreakGateFinal() { mIsRequestHitReactionBreakGateFinal = true; }
private:
bool mIsRequestSuccess = false;
bool mIsRequestHitReaction2DIn = false;
bool mIsRequestHitReaction2DOut = false;
bool mIsRequestHitReactionBreakPillarBridge = false;
bool mIsRequestHitReactionCrackGateHard = false;
bool mIsRequestHitReactionBreakGateHard = false;
bool mIsRequestHitReactionBreakPillar = false;
bool mIsRequestHitReactionBreakGateFinal = false;
};
static_assert(sizeof(PeachOnKoopaAnimRequester) == 0x10);
namespace rs {
PeachOnKoopaAnimRequester* initPeachOnKoopaAnimRequester(const al::IUseSceneObjHolder* holder);
void requestStartPeachOnKoopaAnimSuccess(const al::IUseSceneObjHolder* holder);
void requestStartPeachOnKoopaHitReaction2DIn(const al::IUseSceneObjHolder* holder);
void requestStartPeachOnKoopaHitReaction2DOut(const al::IUseSceneObjHolder* holder);
void requestStartPeachOnKoopaHitReactionBreakPillarBridge(const al::IUseSceneObjHolder* holder);
void requestStartPeachOnKoopaHitReactionCrackGateHard(const al::IUseSceneObjHolder* holder);
void requestStartPeachOnKoopaHitReactionBreakGateHard(const al::IUseSceneObjHolder* holder);
void requestStartPeachOnKoopaHitReactionBreakPillar(const al::IUseSceneObjHolder* holder);
void requestStartPeachOnKoopaHitReactionBreakGateFinal(const al::IUseSceneObjHolder* holder);
} // namespace rs