Update existing headers with LunaKit (#20)

This commit is contained in:
MonsterDruide1 2024-09-29 02:50:24 +02:00 committed by GitHub
parent 02015fb45b
commit e1d2971a1e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
28 changed files with 523 additions and 285 deletions

View File

@ -5,6 +5,7 @@
#include <prim/seadDelegate.h>
#include "Library/Execute/IUseExecutor.h"
#include "Library/HostIO/HioNode.h"
namespace al {
class ICollisionPartsKeeper;
@ -20,7 +21,7 @@ struct SphereHitInfo;
class CollisionParts;
class ExecuteDirector;
class CollisionDirector : public IUseExecutor {
class CollisionDirector : public HioNode, public IUseExecutor {
public:
CollisionDirector(ExecuteDirector* executeDirector);
void setPartsKeeper(ICollisionPartsKeeper* partsKeeper);
@ -55,8 +56,8 @@ private:
CollisionPartsFilterBase* mCollisionPartsFilterBase;
TriangleFilterBase* mTriangleFilterBase;
sead::PtrArray<ArrowHitInfo>* mStrikeArrowHitInfos;
sead::PtrArray<DiskHitInfo>* mStrikeDiskHitInfos;
sead::PtrArray<SphereHitInfo>* mStrikeSphereHitInfos;
sead::PtrArray<DiskHitInfo>* mStrikeDiskHitInfos;
SphereHitInfo* mSphereHitArray;
DiskHitInfo* mDiskHitArray;
};

View File

@ -6,6 +6,16 @@
namespace al {
class IUseEffectKeeper;
class PtclSystem;
struct EffectSystemInfo {
s32 _0;
PtclSystem* mPtclSystem;
void* _10;
s32 _18;
};
static_assert(sizeof(EffectSystemInfo) == 0x20);
void emitEffectCurrentPos(IUseEffectKeeper*, const char*);
void emitEffect(IUseEffectKeeper*, const char*, const sead::Vector3<f32>*);

View File

@ -65,14 +65,14 @@ void offAreaTarget(LiveActor* actor) {
}
bool isUpdateMovementEffectAudioCollisionSensor(const LiveActor* actor) {
return actor->getFlags()->isUpdateOn;
return actor->getFlags()->isUpdateMovementEffectAudioCollisionSensor;
}
void onUpdateMovementEffectAudioCollisionSensor(LiveActor* actor) {
actor->getFlags()->isUpdateOn = true;
actor->getFlags()->isUpdateMovementEffectAudioCollisionSensor = true;
}
void offUpdateMovementEffectAudioCollisionSensor(LiveActor* actor) {
actor->getFlags()->isUpdateOn = false;
actor->getFlags()->isUpdateMovementEffectAudioCollisionSensor = false;
}
} // namespace al

View File

@ -14,7 +14,7 @@ struct LiveActorFlag {
bool isMaterialCodeValid = false;
bool isPuddleMaterialValid = false;
bool isAreaTargetOn = true;
bool isUpdateOn = true;
bool isUpdateMovementEffectAudioCollisionSensor = true;
LiveActorFlag();
};

View File

@ -117,11 +117,11 @@ private:
SubActorInfo** mBuffer = nullptr;
};
void isExistSubActorKeeper(const LiveActor*);
LiveActor* getSubActor(const LiveActor*, const char*); // NOTE: unknown return type
bool isExistSubActorKeeper(const LiveActor*);
LiveActor* getSubActor(const LiveActor* actor, const char* subActorName);
LiveActor* tryGetSubActor(const LiveActor* actor, const char* subActorName);
void getSubActor(const LiveActor*, s32);
void getSubActorNum(const LiveActor*);
LiveActor* getSubActor(const LiveActor*, s32);
s32 getSubActorNum(const LiveActor*);
void offSyncClippingSubActor(LiveActor*, const LiveActor*);
void offSyncClippingSubActor(LiveActor*, const char*);
void offSyncClippingSubActorAll(LiveActor*);

View File

@ -40,8 +40,8 @@ public:
private:
sead::FixedSafeString<0x40> mName;
Scene* mNextScene;
Scene* mCurrentScene;
Scene* mNextScene;
SceneCreator* mSceneCreator;
AudioDirector* mAudioDirector;
AudioKeeper* mAudioKeeper;

View File

@ -25,7 +25,7 @@ public:
const char* mName; // _0
s32 _8;
f32 _C;
f32 _c;
f32 _10;
f32 _14;
f32 _18;

View File

@ -16,9 +16,9 @@ void BezierCurve::set(const sead::Vector3f& start, const sead::Vector3f& startHa
sead::Vector3f diffDiffDiff = diffDiff2 - diffDiff1;
mStart = start;
unk = diff1 * 3;
unk2 = diffDiff1 * 3;
unk3 = diffDiffDiff;
mControlPoint1 = diff1 * 3;
mControlPoint2 = diffDiff1 * 3;
mControlPoint3 = diffDiffDiff;
mDistance = calcLength(0.0, 1.0, 10);
}
@ -47,30 +47,30 @@ void BezierCurve::calcPos(sead::Vector3f* pos, f32 param) const {
f32 square = param * param;
f32 cube = square * param;
pos->x = (unk.x * param) + mStart.x;
pos->y = (unk.y * param) + mStart.y;
pos->z = (unk.z * param) + mStart.z;
pos->x = (mControlPoint1.x * param) + mStart.x;
pos->y = (mControlPoint1.y * param) + mStart.y;
pos->z = (mControlPoint1.z * param) + mStart.z;
pos->x = (unk2.x * square) + pos->x;
pos->y = (unk2.y * square) + pos->y;
pos->z = (unk2.z * square) + pos->z;
pos->x = (mControlPoint2.x * square) + pos->x;
pos->y = (mControlPoint2.y * square) + pos->y;
pos->z = (mControlPoint2.z * square) + pos->z;
pos->x = (unk3.x * cube) + pos->x;
pos->y = (unk3.y * cube) + pos->y;
pos->z = (unk3.z * cube) + pos->z;
pos->x = (mControlPoint3.x * cube) + pos->x;
pos->y = (mControlPoint3.y * cube) + pos->y;
pos->z = (mControlPoint3.z * cube) + pos->z;
}
void BezierCurve::calcVelocity(sead::Vector3f* vel, f32 param) const {
f32 fac1 = param + param;
f32 fac2 = 3 * param * param;
vel->x = (unk2.x * fac1) + unk.x;
vel->y = (unk2.y * fac1) + unk.y;
vel->z = (unk2.z * fac1) + unk.z;
vel->x = (mControlPoint2.x * fac1) + mControlPoint1.x;
vel->y = (mControlPoint2.y * fac1) + mControlPoint1.y;
vel->z = (mControlPoint2.z * fac1) + mControlPoint1.z;
vel->x = (unk3.x * fac2) + vel->x;
vel->y = (unk3.y * fac2) + vel->y;
vel->z = (unk3.z * fac2) + vel->z;
vel->x = (mControlPoint3.x * fac2) + vel->x;
vel->y = (mControlPoint3.y * fac2) + vel->y;
vel->z = (mControlPoint3.z * fac2) + vel->z;
}
f32 BezierCurve::calcDeltaLength(f32 param) const {
@ -150,9 +150,9 @@ void BezierCurve::calcStartPos(sead::Vector3f* pos) const {
}
void BezierCurve::calcCtrlPos1(sead::Vector3f* pos) const {
pos->x = unk.x * 0.333333f;
pos->y = unk.y * 0.333333f;
pos->z = unk.z * 0.333333f;
pos->x = mControlPoint1.x * 0.333333f;
pos->y = mControlPoint1.y * 0.333333f;
pos->z = mControlPoint1.z * 0.333333f;
pos->x = pos->x + mStart.x;
pos->y = pos->y + mStart.y;
@ -160,13 +160,13 @@ void BezierCurve::calcCtrlPos1(sead::Vector3f* pos) const {
}
void BezierCurve::calcCtrlPos2(sead::Vector3f* pos) const {
pos->x = unk2.x * 0.333333f;
pos->y = unk2.y * 0.333333f;
pos->z = unk2.z * 0.333333f;
pos->x = mControlPoint2.x * 0.333333f;
pos->y = mControlPoint2.y * 0.333333f;
pos->z = mControlPoint2.z * 0.333333f;
pos->x = (unk.x * 0.6666667f) + pos->x;
pos->y = (unk.y * 0.6666667f) + pos->y;
pos->z = (unk.z * 0.6666667f) + pos->z;
pos->x = (mControlPoint1.x * 0.6666667f) + pos->x;
pos->y = (mControlPoint1.y * 0.6666667f) + pos->y;
pos->z = (mControlPoint1.z * 0.6666667f) + pos->z;
pos->x = pos->x + mStart.x;
pos->y = pos->y + mStart.y;
@ -174,17 +174,17 @@ void BezierCurve::calcCtrlPos2(sead::Vector3f* pos) const {
}
void BezierCurve::calcEndPos(sead::Vector3f* pos) const {
pos->x = mStart.x + unk.x;
pos->y = mStart.y + unk.y;
pos->z = mStart.z + unk.z;
pos->x = mStart.x + mControlPoint1.x;
pos->y = mStart.y + mControlPoint1.y;
pos->z = mStart.z + mControlPoint1.z;
pos->x = pos->x + unk2.x;
pos->y = pos->y + unk2.y;
pos->z = pos->z + unk2.z;
pos->x = pos->x + mControlPoint2.x;
pos->y = pos->y + mControlPoint2.y;
pos->z = pos->z + mControlPoint2.z;
pos->x = pos->x + unk3.x;
pos->y = pos->y + unk3.y;
pos->z = pos->z + unk3.z;
pos->x = pos->x + mControlPoint3.x;
pos->y = pos->y + mControlPoint3.y;
pos->z = pos->z + mControlPoint3.z;
}
} // namespace al

View File

@ -27,9 +27,9 @@ public:
private:
sead::Vector3f mStart = sead::Vector3f::zero;
sead::Vector3f unk = sead::Vector3f::zero;
sead::Vector3f unk2 = sead::Vector3f::zero;
sead::Vector3f unk3 = sead::Vector3f::zero;
sead::Vector3f mControlPoint1 = sead::Vector3f::zero;
sead::Vector3f mControlPoint2 = sead::Vector3f::zero;
sead::Vector3f mControlPoint3 = sead::Vector3f::zero; // maybe end point?
f32 mDistance = 0;
};

View File

@ -1,10 +1,8 @@
#pragma once
namespace al {
class PlayerHackKeeper;
class IUsePlayerHack {
public:
virtual PlayerHackKeeper* getPlayerHackKeeper() const = 0;
};
} // namespace al

View File

@ -10,7 +10,7 @@ IUsePlayerCollision* PlayerActorBase::getPlayerCollision() const {
return nullptr;
}
al::PlayerHackKeeper* PlayerActorBase::getPlayerHackKeeper() const {
PlayerHackKeeper* PlayerActorBase::getPlayerHackKeeper() const {
return nullptr;
}
@ -48,9 +48,11 @@ void PlayerActorBase::startDemoKeepCarry() {}
void PlayerActorBase::endDemoKeepCarry() {}
void PlayerActorBase::getDemoActor() {}
al::DemoActor* PlayerActorBase::getDemoActor() {
return reinterpret_cast<al::DemoActor*>(this);
}
void* PlayerActorBase::getDemoAnimator() {
PlayerAnimator* PlayerActorBase::getDemoAnimator() {
return nullptr;
}
@ -58,7 +60,7 @@ bool PlayerActorBase::isDamageStopDemo() const {
return false;
}
void* PlayerActorBase::getPlayerPuppet() {
PlayerPuppet* PlayerActorBase::getPlayerPuppet() {
return nullptr;
}

View File

@ -4,21 +4,29 @@
#include "Player/IUsePlayerHack.h"
namespace al {
class DemoActor;
}
class IUsePlayerCollision;
class PlayerAnimator;
class PlayerInfo;
class PlayerInitInfo;
class PlayerHackKeeper;
class PlayerPuppet;
class PlayerActorBase : public al::LiveActor, public al::IUsePlayerHack {
class PlayerActorBase : public al::LiveActor, public IUsePlayerHack {
public:
PlayerActorBase(const char*);
virtual void init(const al::ActorInitInfo&) override;
void init(const al::ActorInitInfo&) override;
void movement() override;
PlayerHackKeeper* getPlayerHackKeeper() const override;
virtual void initPlayer(const al::ActorInitInfo&, const PlayerInitInfo&);
virtual u32 getPortNo() const;
virtual void* getViewMtx() const; // NOTE: unknown return type
virtual IUsePlayerCollision* getPlayerCollision() const;
virtual al::PlayerHackKeeper* getPlayerHackKeeper() const override;
virtual bool isEnableDemo();
virtual void startDemo();
virtual void endDemo();
@ -35,17 +43,16 @@ public:
virtual void endDemoKeepBind();
virtual void startDemoKeepCarry();
virtual void endDemoKeepCarry();
virtual void getDemoActor();
virtual void* getDemoAnimator(); // NOTE: unknown return type
virtual bool isDamageStopDemo() const; // NOTE: unknown return type
virtual void* getPlayerPuppet(); // NOTE: unknown return type
virtual PlayerInfo* getPlayerInfo() const; // NOTE: unknown return type
virtual void movement() override;
virtual al::DemoActor* getDemoActor();
virtual PlayerAnimator* getDemoAnimator();
virtual bool isDamageStopDemo() const;
virtual PlayerPuppet* getPlayerPuppet();
virtual PlayerInfo* getPlayerInfo() const;
virtual bool checkDeathArea();
virtual void sendCollisionMsg();
virtual bool receivePushMsg(const al::SensorMsg*, al::HitSensor*, al::HitSensor*);
virtual bool receivePushMsg(const al::SensorMsg*, al::HitSensor*, al::HitSensor*, f32);
private:
void* mViewMtx = nullptr; // NOTE: unknown type
sead::Matrix34f* mViewMtx = nullptr;
u32 mPortNo = 0;
};

View File

@ -9,6 +9,7 @@ class HitSensor;
class WaterSurfaceFinder;
} // namespace al
class ComboCounter;
class PlayerInfo;
class PlayerConst;
class PlayerInput;
@ -58,6 +59,7 @@ class GaugeAir;
class WaterSurfaceShadow;
class WorldEndBorderKeeper;
class PlayerSeCtrl;
class PlayerStateWait;
class PlayerStateSquat;
class PlayerStateRunHakoniwa2D3D;
@ -87,6 +89,7 @@ class PlayerStateHack;
class PlayerStateEndHack;
class PlayerStateCameraSubjective;
class PlayerStateAbyss;
class PlayerJudgeAirForceCount;
class PlayerJudgeCameraSubjective;
class PlayerJudgeCapCatchPop;
@ -130,128 +133,212 @@ class PlayerJudgeWallKeep;
class PlayerActorHakoniwa : public PlayerActorBase, public IUseDimension {
public:
PlayerInfo* mPlayerInfo;
PlayerConst* mPlayerConst;
PlayerInput* mPlayerInput;
PlayerTrigger* mPlayerTrigger;
PlayerActorHakoniwa(const char*);
void initAfterPlacement() override;
void movement() override;
void attackSensor(al::HitSensor*, al::HitSensor*) override;
bool receiveMsg(const al::SensorMsg*, al::HitSensor*, al::HitSensor*) override;
void control() override;
void updateCollider() override;
void initPlayer(const al::ActorInitInfo&, const PlayerInitInfo&) override;
u32 getPortNo() const override;
IUsePlayerCollision* getPlayerCollision() const override;
PlayerHackKeeper* getPlayerHackKeeper() const override;
bool isEnableDemo() override;
void startDemo() override;
void endDemo() override;
void startDemoPuppetable() override;
void endDemoPuppetable() override;
void startDemoShineGet() override;
void endDemoShineGet() override;
void startDemoMainShineGet() override;
void endDemoMainShineGet() override;
void startDemoHack() override;
void endDemoHack() override;
void startDemoKeepBind() override;
void noticeDemoKeepBindExecute() override;
void endDemoKeepBind() override;
void startDemoKeepCarry() override;
void endDemoKeepCarry() override;
al::DemoActor* getDemoActor() override;
PlayerAnimator* getDemoAnimator() override;
bool isDamageStopDemo() const override;
PlayerPuppet* getPlayerPuppet() override;
PlayerInfo* getPlayerInfo() const override;
bool checkDeathArea() override;
void sendCollisionMsg() override;
bool receivePushMsg(const al::SensorMsg*, al::HitSensor*, al::HitSensor*, f32) override;
ActorDimensionKeeper* getActorDimensionKeeper() const override;
void updateModelShadowDropLength();
void executeAfterCapTarget();
void syncSensorAndCollision();
void checkDamageFromCollision();
void executePreMovementNerveChange();
void updateCarry();
void setNerveOnGround();
void startPlayerPuppet();
void cancelHackPlayerPuppetDemo();
void endPlayerPuppet();
void exeWait();
bool tryActionCapReturn();
bool tryActionCapSpinAttack();
void exeSquat();
bool tryActionSeparateCapThrow();
void exeRun();
void exeSlope();
void exeRolling();
void exeSpinCap();
bool tryChangeNerveFromAir();
bool tryActionCapSpinAttackMiss();
void exeJump();
void exeCapCatchPop();
void exeWallAir();
void exeWallCatch();
void exeGrabCeil();
void exePoleClimb();
void exeHipDrop();
void exeHeadSliding();
void exeLongJump();
void exeFall();
void exeSandSink();
void exeSandGeyser();
void exeRise();
void exeSwim();
void exeDamage();
void exeDamageSwim();
void exeDamageFire();
void exePress();
void exeHack();
void exeEndHack();
void exeBind();
bool tryActionCapSpinAttackBindEnd();
void exeDemo();
void exeCamera();
void exeAbyss();
void exeDead();
bool tryActionCapSpinAttackImpl(bool);
private:
PlayerInfo* mInfo;
PlayerConst* mConst;
PlayerInput* mInput;
PlayerTrigger* mTrigger;
HackCap* mHackCap;
ActorDimensionKeeper* mActorDimensionKeeper;
PlayerModelHolder* mPlayerModelHolder;
PlayerModelChangerHakoniwa* mPlayerModelChangerHakoniwa;
PlayerAnimator* mPlayerAnimator;
PlayerColliderHakoniwa* mPlayerColliderHakoniwa;
PlayerPuppet* mPlayerPuppet;
PlayerAreaChecker* mPlayerAreaChecker;
ActorDimensionKeeper* mDimensionKeeper;
PlayerModelHolder* mModelHolder;
PlayerModelChangerHakoniwa* mModelChanger;
PlayerAnimator* mAnimator;
PlayerColliderHakoniwa* mCollider;
PlayerPuppet* mPuppet;
PlayerAreaChecker* mAreaChecker;
al::WaterSurfaceFinder* mWaterSurfaceFinder;
PlayerOxygen* mPlayerOxygen;
PlayerDamageKeeper* mPlayerDamageKeeper;
PlayerDemoActionFlag* mPlayerDemoActionFlag;
PlayerCapActionHistory* mPlayerCapActionHistory;
PlayerCapManHeroEyesControl* mPlayerCapManHeroEyesControl;
PlayerContinuousJump* mPlayerContinuousJump;
PlayerContinuousLongJump* mPlayerContinuousLongJump;
PlayerCounterAfterUpperPunch* mPlayerCounterAfterUpperPunch;
PlayerCounterForceRun* mPlayerCounterForceRun;
PlayerCounterIceWater* mPlayerCounterIceWater;
PlayerCounterQuickTurnJump* mPlayerCounterQuickTurnJump;
PlayerWallActionHistory* mPlayerWallActionHistory;
PlayerBindKeeper* mPlayerBindKeeper;
PlayerCarryKeeper* mPlayerCarryKeeper;
PlayerEquipmentUser* mPlayerEquipmentUser;
PlayerHackKeeper* mPlayerHackKeeper;
PlayerFormSensorCollisionArranger* mPlayerFormSensorCollisionArranger;
PlayerJumpMessageRequest* mPlayerJumpMessageRequest;
PlayerSandSinkAffect* mPlayerSandSinkAffect;
PlayerSpinCapAttack* mPlayerSpinCapAttack;
PlayerActionDiveInWater* mPlayerActionDiveInWater;
PlayerEffect* mPlayerEffect;
PlayerEyeSensorHitHolder* mPlayerEyeSensorHitHolder;
PlayerPushReceiver* mPlayerPushReceiver;
PlayerHitPush* mPlayerHitPush;
PlayerExternalVelocity* mPlayerExternalVelocity;
PlayerJointControlKeeper* mPlayerJointControlKeeper;
PlayerPainPartsKeeper* mPlayerPainPartsKeeper;
PlayerRecoverySafetyPoint* mPlayerRecoverySafetyPoint;
PlayerRippleGenerator* mPlayerRippleGenerator;
PlayerSeparateCapFlag* mPlayerSeparateCapFlag;
PlayerWetControl* mPlayerWetControl;
PlayerStainControl* mPlayerStainControl;
PlayerOxygen* mOxygen;
PlayerDamageKeeper* mDamageKeeper;
PlayerDemoActionFlag* mDemoActionFlag;
PlayerCapActionHistory* mCapActionHistory;
PlayerCapManHeroEyesControl* mCapManHeroEyesControl;
PlayerContinuousJump* mContinuousJump;
PlayerContinuousLongJump* mContinuousLongJump;
PlayerCounterAfterUpperPunch* mCounterAfterUpperPunch;
PlayerCounterForceRun* mCounterForceRun;
PlayerCounterIceWater* mCounterIceWater;
PlayerCounterQuickTurnJump* mCounterQuickTurnJump;
PlayerWallActionHistory* mWallActionHistory;
PlayerBindKeeper* mBindKeeper;
PlayerCarryKeeper* mCarryKeeper;
PlayerEquipmentUser* mEquipmentUser;
PlayerHackKeeper* mHackKeeper;
PlayerFormSensorCollisionArranger* mFormSensorCollisionArranger;
PlayerJumpMessageRequest* mJumpMessageRequest;
PlayerSandSinkAffect* mSandSinkAffect;
PlayerSpinCapAttack* mSpinCapAttack;
PlayerActionDiveInWater* mActionDiveInWater;
PlayerEffect* mEffect;
PlayerEyeSensorHitHolder* mEyeSensorHitHolder;
PlayerPushReceiver* mPushReceiver;
PlayerHitPush* mHitPush;
PlayerExternalVelocity* mExternalVelocity;
PlayerJointControlKeeper* mJointControlKeeper;
PlayerPainPartsKeeper* mPainPartsKeeper;
PlayerRecoverySafetyPoint* mRecoverySafetyPoint;
PlayerRippleGenerator* mRippleGenerator;
PlayerSeparateCapFlag* mSeparateCapFlag;
PlayerWetControl* mWetControl;
PlayerStainControl* mStainControl;
al::FootPrintHolder* mFootPrintHolder;
GaugeAir* mGaugeAir;
WaterSurfaceShadow* mWaterSurfaceShadow;
WorldEndBorderKeeper* mWorldEndBorderKeeper;
void* gap;
PlayerSeCtrl* mPlayerSeCtrl;
ComboCounter* mComboCounter;
PlayerSeCtrl* mSeCtrl;
al::HitSensor* mBodyHitSensor;
bool mIsLongShadow;
PlayerStateWait* mPlayerStateWait;
PlayerStateSquat* mPlayerStateSquat;
PlayerStateRunHakoniwa2D3D* mPlayerStateRunHakoniwa2D3D;
PlayerStateSlope* mPlayerStateSlope;
PlayerStateRolling* mPlayerStateRolling;
PlayerStateSpinCap* mPlayerStateSpinCap;
PlayerStateJump* mPlayerStateJump;
PlayerStateCapCatchPop* mPlayerStateCapCatchPop;
PlayerStateWallAir* mPlayerStateWallAir;
PlayerStateWallCatch* mPlayerStateWallCatch;
PlayerStateGrabCeil* mPlayerStateGrabCeil;
PlayerStatePoleClimb* mPlayerStatePoleClimb;
PlayerStateHipDrop* mPlayerStateHipDrop;
PlayerStateHeadSliding* mPlayerStateHeadSliding;
PlayerStateLongJump* mPlayerStateLongJump;
PlayerStateFallHakoniwa* mPlayerStateFallHakoniwa;
PlayerStateSandSink* mPlayerStateSandSink;
PlayerStateWait* mStateWait;
PlayerStateSquat* mStateSquat;
PlayerStateRunHakoniwa2D3D* mStateRunHakoniwa2D3D;
PlayerStateSlope* mStateSlope;
PlayerStateRolling* mStateRolling;
PlayerStateSpinCap* mStateSpinCap;
PlayerStateJump* mStateJump;
PlayerStateCapCatchPop* mStateCapCatchPop;
PlayerStateWallAir* mStateWallAir;
PlayerStateWallCatch* mStateWallCatch;
PlayerStateGrabCeil* mStateGrabCeil;
PlayerStatePoleClimb* mStatePoleClimb;
PlayerStateHipDrop* mStateHipDrop;
PlayerStateHeadSliding* mStateHeadSliding;
PlayerStateLongJump* mStateLongJump;
PlayerStateFallHakoniwa* mStateFallHakoniwa;
PlayerStateSandSink* mStateSandSink;
ActorStateSandGeyser* mActorStateSandGeyser;
PlayerStateRise* mPlayerStateRise;
PlayerStateSwim* mPlayerStateSwim;
PlayerStateDamageLife* mPlayerStateDamageLife;
PlayerStateDamageSwim* mPlayerStateDamageSwim;
PlayerStateDamageFire* mPlayerStateDamageFire;
PlayerStatePress* mPlayerStatePress;
PlayerStateBind* mPlayerStateBind;
PlayerStateHack* mPlayerStateHack;
PlayerStateEndHack* mPlayerStateEndHack;
PlayerStateCameraSubjective* mPlayerStateCameraSubjective;
PlayerStateAbyss* mPlayerStateAbyss;
PlayerJudgeAirForceCount* mPlayerJudgeAirForceCount;
PlayerJudgeCameraSubjective* mPlayerJudgeCameraSubjective;
PlayerJudgeCapCatchPop* mPlayerJudgeCapCatchPop;
PlayerJudgeDeadWipeStart* mPlayerJudgeDeadWipeStart;
PlayerJudgeDirectRolling* mPlayerJudgeDirectRolling;
PlayerJudgeEnableStandUp* mPlayerJudgeEnableStandUp;
PlayerJudgeForceLand* mPlayerJudgeForceLand;
PlayerJudgeForceSlopeSlide* mPlayerJudgeForceSlopeSlide;
PlayerJudgeForceRolling* mPlayerJudgeForceRolling;
PlayerJudgeGrabCeil* mPlayerJudgeGrabCeil;
PlayerJudgeInWater* mPlayerJudgeInWater1;
PlayerJudgeInWater* mPlayerJudgeInWater2;
PlayerJudgeInWater* mPlayerJudgeInWater3;
PlayerJudgeInWater* mPlayerJudgeInWater4;
PlayerJudgeInvalidateInputFall* mPlayerJudgeInvalidateInputFall;
PlayerJudgeLongFall* mPlayerJudgeLongFall;
PlayerJudgeOutInWater* mPlayerJudgeOutInWater;
PlayerJudgeRecoveryLifeFast* mPlayerJudgeRecoveryLifeFast;
PlayerJudgeSandSink* mPlayerJudgeSandSink;
PlayerJudgeSpeedCheckFall* mPlayerJudgeSpeedCheckFall;
PlayerJudgeStartHipDrop* mPlayerJudgeStartHipDrop;
PlayerJudgeStartRise* mPlayerJudgeStartRise;
PlayerJudgeStartRolling* mPlayerJudgeStartRolling;
PlayerJudgeStartRun* mPlayerJudgeStartRun;
PlayerJudgeStartSquat* mPlayerJudgeStartSquat;
PlayerJudgeStartWaterSurfaceRun* mPlayerJudgeStartWaterSurfaceRun;
PlayerJudgeSlopeSlide* mPlayerJudgeSlopeSlide;
PlayerJudgePoleClimb* mPlayerJudgePoleClimb;
PlayerJudgePreInputJump* mPlayerJudgePreInputJump;
PlayerJudgePreInputCapThrow* mPlayerJudgePreInputCapThrow;
PlayerJudgePreInputHackAction* mPlayerJudgePreInputHackAction;
PlayerStateRise* mStateRise;
PlayerStateSwim* mStateSwim;
PlayerStateDamageLife* mStateDamageLife;
PlayerStateDamageSwim* mStateDamageSwim;
PlayerStateDamageFire* mStateDamageFire;
PlayerStatePress* mStatePress;
PlayerStateBind* mStateBind;
PlayerStateHack* mStateHack;
PlayerStateEndHack* mStateEndHack;
PlayerStateCameraSubjective* mStateCameraSubjective;
PlayerStateAbyss* mStateAbyss;
PlayerJudgeAirForceCount* mJudgeAirForceCount;
PlayerJudgeCameraSubjective* mJudgeCameraSubjective;
PlayerJudgeCapCatchPop* mJudgeCapCatchPop;
PlayerJudgeDeadWipeStart* mJudgeDeadWipeStart;
PlayerJudgeDirectRolling* mJudgeDirectRolling;
PlayerJudgeEnableStandUp* mJudgeEnableStandUp;
PlayerJudgeForceLand* mJudgeForceLand;
PlayerJudgeForceSlopeSlide* mJudgeForceSlopeSlide;
PlayerJudgeForceRolling* mJudgeForceRolling;
PlayerJudgeGrabCeil* mJudgeGrabCeil;
PlayerJudgeInWater* mJudgeInWater[4];
PlayerJudgeInvalidateInputFall* mJudgeInvalidateInputFall;
PlayerJudgeLongFall* mJudgeLongFall;
PlayerJudgeOutInWater* mJudgeOutInWater;
PlayerJudgeRecoveryLifeFast* mJudgeRecoveryLifeFast;
PlayerJudgeSandSink* mJudgeSandSink;
PlayerJudgeSpeedCheckFall* mJudgeSpeedCheckFall;
PlayerJudgeStartHipDrop* mJudgeStartHipDrop;
PlayerJudgeStartRise* mJudgeStartRise;
PlayerJudgeStartRolling* mJudgeStartRolling;
PlayerJudgeStartRun* mJudgeStartRun;
PlayerJudgeStartSquat* mJudgeStartSquat;
PlayerJudgeStartWaterSurfaceRun* mJudgeStartWaterSurfaceRun;
PlayerJudgeSlopeSlide* mJudgeSlopeSlide;
PlayerJudgePoleClimb* mJudgePoleClimb;
PlayerJudgePreInputJump* mJudgePreInputJump;
PlayerJudgePreInputCapThrow* mJudgePreInputCapThrow;
PlayerJudgePreInputHackAction* mJudgePreInputHackAction;
HackCapJudgePreInputHoveringJump* mHackCapJudgePreInputHoveringJump;
HackCapJudgePreInputSeparateThrow* mHackCapJudgePreInputSeparateThrow;
HackCapJudgePreInputSeparateJump* mHackCapJudgePreInputSeparateJump;
PlayerJudgeWallCatch* mPlayerJudgeWallCatch;
PlayerJudgeWallCatchInputDir* mPlayerJudgeWallCatchInputDir;
PlayerJudgeWallHitDown* mPlayerJudgeWallHitDown;
PlayerJudgeWallHitDownForceRun* mPlayerJudgeWallHitDownForceRun;
PlayerJudgeWallHitDownRolling* mPlayerJudgeWallHitDownRolling;
PlayerJudgeWallKeep* mPlayerJudgeWallKeep;
void* gap_2;
PlayerJudgeWallCatch* mJudgeWallCatch;
PlayerJudgeWallCatchInputDir* mJudgeWallCatchInputDir;
PlayerJudgeWallHitDown* mJudgeWallHitDown;
PlayerJudgeWallHitDownForceRun* mJudgeWallHitDownForceRun;
PlayerJudgeWallHitDownRolling* mJudgeWallHitDownRolling;
PlayerJudgeWallKeep* mJudgeWallKeep;
bool mIsReduceOxygen;
};

View File

@ -1,6 +1,13 @@
#pragma once
#include <prim/seadSafeString.h>
namespace al {
class LiveActor;
}
class PlayerAnimFrameCtrl {
public:
const char* getActionName() const;
void startAction(al::LiveActor* actor, const sead::SafeString& actionName);
};

View File

@ -4,16 +4,52 @@
#include "Player/PlayerAnimFrameCtrl.h"
namespace al {
class LiveActor;
}
class PlayerModelHolder;
class PlayerAnimator {
public:
void startAnim(const sead::SafeStringBase<char>& animName);
void startAnim(const sead::SafeString& animName);
void startSubAnim(const sead::SafeString& animName);
void startSubAnimOnlyAir(const sead::SafeString& animName);
void startUpperBodyAnimAndHeadVisKeep(const sead::SafeString& animName);
void startAnimDead(); // chooses one of the 5 death animations and starts that animation
void endSubAnim();
bool isAnim(const sead::SafeStringBase<char>& animName) const;
void updateAnimFrame();
void clearUpperBodyAnim();
bool isAnim(const sead::SafeString& animName) const;
bool isSubAnim(const sead::SafeString& subAnimName) const;
bool isSubAnimEnd() const;
bool isUpperBodyAnimAttached() const;
f32 getAnimFrame() const;
f32 getAnimFrameMax() const;
f32 getAnimFrameRate() const;
f32 getSubAnimFrame() const;
f32 getSubAnimFrameMax() const;
f32 getBlendWeight(s32 index);
unsigned char padding_18[0x18];
void setAnimRate(f32);
void setAnimRateCommon(f32);
void setAnimFrame(f32);
void setAnimFrameCommon(f32);
void setSubAnimFrame(f32);
void setSubAnimRate(f32);
void setBlendWeight(f32, f32, f32, f32, f32, f32);
void setModelAlpha(f32);
void setPartsAnimRate(f32, const char*);
void setPartsAnimFrame(f32, const char*);
private:
PlayerModelHolder* mModelHolder;
al::LiveActor* mPlayerDeco;
void* _10;
PlayerAnimFrameCtrl* mAnimFrameCtrl;
sead::SafeString mCurAnim;
unsigned char padding_78[0x78 - 0x30];
sead::SafeString mCurSubAnim;
};

View File

@ -4,100 +4,98 @@
#include "Library/Math/MathUtil.h"
PlayerHeadCostumeInfo::PlayerHeadCostumeInfo(const char* a1) {
_0 = a1;
mCostumeName = a1;
}
PlayerBodyCostumeInfo::PlayerBodyCostumeInfo(const char* a1) {
_0 = a1;
mCostumeName = a1;
}
PlayerCostumeInfo::PlayerCostumeInfo() = default;
void PlayerCostumeInfo::init(const PlayerBodyCostumeInfo* body, const PlayerHeadCostumeInfo* head) {
mPlayerBodyCostumeInfo = body;
mPlayerHeadCostumeInfo = head;
mBodyInfo = body;
mHeadInfo = head;
}
bool PlayerCostumeInfo::isEnableBigEar() const {
return mPlayerBodyCostumeInfo->mIsBigEar && mPlayerHeadCostumeInfo->mIsEnableBigEar;
return mBodyInfo->mIsBigEar && mHeadInfo->mIsEnableBigEar;
}
bool PlayerCostumeInfo::isEnableHairNoCap() const {
return mPlayerHeadCostumeInfo->mIsEnableHairNoCap &&
(mPlayerBodyCostumeInfo->mIsUseBodyHair && mPlayerBodyCostumeInfo->mIsExistHairNoCap);
return mHeadInfo->mIsEnableHairNoCap &&
(mBodyInfo->mIsUseBodyHair && mBodyInfo->mIsExistHairNoCap);
}
bool PlayerCostumeInfo::isEnableCostume2D() const {
if (mPlayerBodyCostumeInfo->mIsNoPairHead)
return al::isEqualString(mPlayerHeadCostumeInfo->_0, "Mario");
return al::isEqualString(mPlayerBodyCostumeInfo->_0, mPlayerHeadCostumeInfo->_0);
if (mBodyInfo->mIsNoPairHead)
return al::isEqualString(mHeadInfo->mCostumeName, "Mario");
return al::isEqualString(mBodyInfo->mCostumeName, mHeadInfo->mCostumeName);
}
bool PlayerCostumeInfo::isNeedShrinkNose() const {
return mPlayerHeadCostumeInfo->mIsShrinkNose;
return mHeadInfo->mIsShrinkNose;
}
bool PlayerCostumeInfo::isNeedBodyHair() const {
if (!mPlayerBodyCostumeInfo->mIsUseBodyHair ||
(mPlayerBodyCostumeInfo->mIsMario64 && mPlayerHeadCostumeInfo->mIsMario64))
if (!mBodyInfo->mIsUseBodyHair || (mBodyInfo->mIsMario64 && mHeadInfo->mIsMario64))
return false;
return true;
}
bool PlayerCostumeInfo::isNeedSyncBodyHair() const {
#ifdef MATCHING_HACK_NX_CLANG
s64 v1 = *(s64*)&mPlayerBodyCostumeInfo->mIsUseBodyHair;
s64 v1 = *(s64*)&mBodyInfo->mIsUseBodyHair;
if (!((char)v1))
return false;
if ((v1 & 0xFF00000000LL) && mPlayerHeadCostumeInfo->mIsMario64)
if ((v1 & 0xFF00000000LL) && mHeadInfo->mIsMario64)
return false;
return !mPlayerBodyCostumeInfo->mIsMario64;
return !mBodyInfo->mIsMario64;
#else
if (!mPlayerBodyCostumeInfo->mIsUseBodyHair)
if (!mBodyInfo->mIsUseBodyHair)
return false;
if (mPlayerBodyCostumeInfo->mIsMario64 && mPlayerHeadCostumeInfo->mIsMario64)
if (mBodyInfo->mIsMario64 && mHeadInfo->mIsMario64)
return false;
return !mPlayerBodyCostumeInfo->mIsMario64;
return !mBodyInfo->mIsMario64;
#endif
}
bool PlayerCostumeInfo::isNeedFullFaceAnim() const {
return mPlayerHeadCostumeInfo->mIsFullFace;
return mHeadInfo->mIsFullFace;
}
bool PlayerCostumeInfo::isHidePainNose() const {
return mPlayerBodyCostumeInfo->mIsHidePainNose || mPlayerHeadCostumeInfo->mIsInvisibleHead;
return mBodyInfo->mIsHidePainNose || mHeadInfo->mIsInvisibleHead;
}
bool PlayerCostumeInfo::isEnableEarring() const {
if (mPlayerBodyCostumeInfo->mIsUseEarringPeach)
return !mPlayerHeadCostumeInfo->mIsHideEarringPeach;
return !mPlayerBodyCostumeInfo->mIsUseEarringLink ||
!mPlayerHeadCostumeInfo->mIsHideEarringLink;
if (mBodyInfo->mIsUseEarringPeach)
return !mHeadInfo->mIsHideEarringPeach;
return !mBodyInfo->mIsUseEarringLink || !mHeadInfo->mIsHideEarringLink;
}
bool PlayerCostumeInfo::isSyncFaceBeard() const {
return mPlayerBodyCostumeInfo->mIsUseBeard && mPlayerHeadCostumeInfo->mIsHideBeard;
return mBodyInfo->mIsUseBeard && mHeadInfo->mIsHideBeard;
}
bool PlayerCostumeInfo::isSyncStrap() const {
return mPlayerHeadCostumeInfo->mIsUseStrap && !mPlayerBodyCostumeInfo->mIsUseBeard;
return mHeadInfo->mIsUseStrap && !mBodyInfo->mIsUseBeard;
}
bool PlayerCostumeInfo::isFollowJoeStrap() const {
return mPlayerHeadCostumeInfo->mIsUseStrap && !mPlayerBodyCostumeInfo->mIsMario64;
return mHeadInfo->mIsUseStrap && !mBodyInfo->mIsMario64;
}
bool PlayerCostumeInfo::isPreventHeadPain() const {
return mPlayerHeadCostumeInfo->mIsPreventHead;
return mHeadInfo->mIsPreventHead;
}
bool PlayerCostumeInfo::isInvisibleHead() const {
return mPlayerHeadCostumeInfo->mIsInvisibleHead;
return mHeadInfo->mIsInvisibleHead;
}
s32 PlayerCostumeInfo::calcWarmLevel(s32 baseLevel) const {
if (mPlayerBodyCostumeInfo->mIsIgnoreTemperature)
if (mBodyInfo->mIsIgnoreTemperature)
return false;
return al::clamp(mPlayerBodyCostumeInfo->mWarmLevel + baseLevel, -3, 3);
return al::clamp(mBodyInfo->mWarmLevel + baseLevel, -3, 3);
}

View File

@ -6,7 +6,7 @@ struct PlayerHeadCostumeInfo {
public:
PlayerHeadCostumeInfo(const char*);
const char* _0;
const char* mCostumeName;
bool mIsFullFace = false;
bool mIsShrinkNose = false;
bool mIsPreventHead = false;
@ -25,8 +25,8 @@ struct PlayerBodyCostumeInfo {
public:
PlayerBodyCostumeInfo(const char*);
const char* _0;
s32 mWarmLevel = false;
const char* mCostumeName;
s32 mWarmLevel = 0;
bool mIsIgnoreTemperature = false;
bool mIsUseHeadSuffix = false;
bool mIsBigEar = false;
@ -63,6 +63,6 @@ public:
s32 calcWarmLevel(s32) const;
private:
const PlayerBodyCostumeInfo* mPlayerBodyCostumeInfo = nullptr;
const PlayerHeadCostumeInfo* mPlayerHeadCostumeInfo = nullptr;
const PlayerBodyCostumeInfo* mBodyInfo = nullptr;
const PlayerHeadCostumeInfo* mHeadInfo = nullptr;
};

View File

@ -1,11 +1,47 @@
#pragma once
#include <math/seadVector.h>
#include <prim/seadSafeString.h>
namespace al {
class LiveActor;
}
class ActorInitInfo;
class Resource;
class AudioKeeper;
} // namespace al
class PlayerConst;
class PlayerCostumeInfo;
class PlayerBodyCostumeInfo;
class PlayerJointControlPartsDynamics;
class PlayerFunction {
public:
static u32 getPlayerInputPort(const al::LiveActor*);
static bool isPlayerDeadStatus(const al::LiveActor*);
static bool tryActivateAmiiboPreventDamage(const al::LiveActor*);
static bool isPlayerDeadStatus(const al::LiveActor* player);
static void syncBodyHairVisibility(al::LiveActor*, al::LiveActor*);
static void syncMarioFaceBeardVisibility(al::LiveActor*, al::LiveActor*);
static void syncMarioHeadStrapVisibility(al::LiveActor*);
static bool isNeedHairControl(const PlayerBodyCostumeInfo*, const char*);
static bool isInvisibleCap(const PlayerCostumeInfo*);
static void hideHairVisibility(al::LiveActor*);
static PlayerConst* createMarioConst(const char*);
static void createCapModelName(sead::BufferedSafeStringBase<char>*, const char*);
static void initMarioModelActor2D(al::LiveActor* actor, const al::ActorInitInfo& initInfo,
const char* model2DName, bool isInvisCap);
static al::Resource* initCapModelActor(al::LiveActor*, const al::ActorInitInfo&, const char*);
static al::Resource* initCapModelActorDemo(al::LiveActor*, const al::ActorInitInfo&,
const char*);
static PlayerCostumeInfo* initMarioModelActor(al::LiveActor* player,
const al::ActorInitInfo& initInfo,
const char* modelName, const char* capType,
al::AudioKeeper* keeper, bool isCloset);
static PlayerCostumeInfo*
initMarioModelActorDemo(PlayerJointControlPartsDynamics** jointCtrlPtr, al::LiveActor* player,
const al::ActorInitInfo& initInfo, const char* bodyName,
const char* capName, const PlayerConst* pConst,
sead::Vector3f* noseScale, sead::Vector3f* earScale, bool isCloset);
};

View File

@ -5,14 +5,19 @@
namespace al {
class LiveActor;
class HitSensor;
class ActorInitInfo;
} // namespace al
class PlayerRecoverySafetyPoint;
class HackCap;
class PlayerInput;
class PlayerDamageKeeper;
class IPlayerMoelChanger;
class IPlayerModelChanger;
class IUsePlayerHeightCheck;
class HackEndParam;
class PlayerCollider;
class CapTargetInfo;
class IUsePlayerHack;
class PlayerHackKeeper {
public:
@ -21,6 +26,54 @@ public:
PlayerDamageKeeper* damageKeeper, const IPlayerModelChanger* modelChanger,
const IUsePlayerHeightCheck* heightCheck);
void createHackModel(const al::ActorInitInfo&);
void startHack(al::HitSensor*, al::HitSensor*, al::LiveActor*);
void setupHack(al::HitSensor*, al::HitSensor*, al::LiveActor*);
void endHack(const HackEndParam*);
void endHackStartDemo(al::LiveActor*);
void startHackStartDemo(al::LiveActor*);
void startHackStartDemoPuppetable(al::LiveActor*);
void addHackStartDemo(al::LiveActor*);
void appearHackDemoModel(const sead::Matrix34f&, f32);
void updateHackDemoModel(const sead::Matrix34f&, f32);
void deleteHackDemoModelEffect();
void killHackDemoModel();
bool isActiveHackStartDemo() const;
void recordHack();
void cancelHackArea();
void cancelHack();
void cancelForceRecovery();
void tryEscapeHack();
void sendTransferHack();
void sendMarioDemo();
void forceKillHack();
void sendMarioDead();
void sendMarioInWater();
void sendMarioDeathArea();
void sendMsgEnableMapCheckPointWarp();
void sendMsgSelfCeilingCheckMiss();
void receiveRequestTransferHack(al::HitSensor*);
void requestDamage();
void receiveRequestDamage();
void sendSyncDamageVisibility();
void pushWorldEndBorder(const sead::Vector3f&);
const char* getCurrentHackName() const;
PlayerCollider* getPlayerCollision();
f32 getHackGuideHeight();
bool isHackGuideEnable() const;
f32 getHackStayGravityMargine();
void* getCollisionPartsFilter();
bool isHackGroupTalkScare() const;
bool isHackNoCollisionMsg() const;
bool isHackNoSeparateCameraInput() const;
bool isHackUsePlayerCollision() const;
bool isHackCancelCeilingCheck() const;
bool isHackInvalidLifeRecovery() const;
void requestForceHackStageStart(al::HitSensor*, const CapTargetInfo*, al::LiveActor*);
void executeForceHackStageStart(al::HitSensor*, IUsePlayerHack*);
void startDemo();
void endDemo();
al::LiveActor* getCurrentHackActor() const { return mCurrentHackActor; }
al::HitSensor* getUnkHitSensor() const { return mUnkHitSensor; }
@ -29,4 +82,5 @@ private:
char padding[0x68];
al::LiveActor* mCurrentHackActor;
al::HitSensor* mUnkHitSensor;
// at 0x98 PlayerHackStartTexKeeper
};

View File

@ -6,7 +6,7 @@ class HitSensor;
} // namespace al
class HackCap;
class IUseCeilingCheck;
class IUsePlayerCeilingCheck;
class PlayerAnimator;
class PlayerBindKeeper;
class PlayerCapManHeroEyesControl;
@ -50,47 +50,47 @@ public:
PlayerInfo();
private:
PlayerModelChangerHakoniwa* mPlayerModelChangerHakoniwa = nullptr;
PlayerOxygen* mPlayerOxygen = nullptr;
PlayerAnimator* mPlayerAnimator = nullptr;
PlayerBindKeeper* mPlayerBindKeeper = nullptr;
PlayerDamageKeeper* mPlayerDamageKeeper = nullptr;
PlayerDemoActionFlag* mPlayerDemoActionFlag = nullptr;
PlayerEquipmentUser* mPlayerEquipmentUser = nullptr;
PlayerModelChangerHakoniwa* mModelChangerHakoniwa = nullptr;
PlayerOxygen* mOxygen = nullptr;
PlayerAnimator* mAnimator = nullptr;
PlayerBindKeeper* mBindKeeper = nullptr;
PlayerDamageKeeper* mDamageKeeper = nullptr;
PlayerDemoActionFlag* mDemoActionFlag = nullptr;
PlayerEquipmentUser* mEquipmentUser = nullptr;
HackCap* mHackCap = nullptr;
WorldEndBorderKeeper* mWorldEndBorderKeeper = nullptr;
PlayerCarryKeeper* mPlayerCarryKeeper = nullptr;
PlayerJointControlKeeper* mPlayerJointControlKeeper = nullptr;
PlayerCounterIceWater* mPlayerCounterIceWater = nullptr;
PlayerStainControl* mPlayerStainControl = nullptr;
PlayerCarryKeeper* mCarryKeeper = nullptr;
PlayerJointControlKeeper* mJointControlKeeper = nullptr;
PlayerCounterIceWater* mCounterIceWater = nullptr;
PlayerStainControl* mStainControl = nullptr;
al::FootPrintHolder* mFootPrintHolder = nullptr;
al::HitSensor* mBodyHitSensor = nullptr;
PlayerFormSensorCollisionArranger* mPlayerFormSensorCollisionArranger = nullptr;
PlayerInput* mPlayerInput = nullptr;
IUseCeilingCheck* mIUseCeilingCheck = nullptr;
PlayerModelHolder* mPlayerModelHolder = nullptr;
PlayerHackKeeper* mPlayerHackKeeper = nullptr;
PlayerCapManHeroEyesControl* mPlayerCapManHeroEyesControl = nullptr;
PlayerRecoverySafetyPoint* mPlayerRecoverySafetyPoint = nullptr;
PlayerCostumeInfo* mPlayerCostumeInfo = nullptr;
PlayerJudgeCameraInWater* mPlayerJudgeCameraInWater = nullptr;
PlayerJudgeTalkGround* mPlayerJudgeTalkGround = nullptr;
PlayerJudgeTalkSwim* mPlayerJudgeTalkSwim = nullptr;
PlayerJudgeDead* mPlayerJudgeDead = nullptr;
PlayerJudgeDeadWipeStart* mPlayerJudgeDeadWipeStart = nullptr;
PlayerJudgeDrawForward* mPlayerJudgeDrawForward = nullptr;
PlayerJudgeSameNerve* mPlayerJudgeNrvPoleClimb = nullptr;
PlayerJudgeSameNerve* mPlayerJudgeNrvGrabCeil = nullptr;
PlayerJudgeSameNerve* mPlayerJudgeNrvWallCatch = nullptr;
PlayerJudgeActiveCameraSubjective* mPlayerJudgeActiveCameraSubjective = nullptr;
PlayerJudgeSameNerve* mPlayerJudgeNrvSwim = nullptr;
PlayerJudgeFailureCameraSubjective* mPlayerJudgeFailureCameraSubjective = nullptr;
PlayerJudgeSafetyPointRecovery* mPlayerJudgeSafetyPointRecovery = nullptr;
PlayerJudgeStatusPoleClimb* mPlayerJudgeStatusPoleClimb = nullptr;
PlayerJudgePlaySwitchOnAreaWaitAnim* mPlayerJudgePlaySwitchOnAreaWaitAnim = nullptr;
PlayerJudgeSleep* mPlayerJudgeSleep = nullptr;
PlayerJudgeEnableGuideArrow* mPlayerJudgeEnableGuideArrow = nullptr;
PlayerJudgeEnablePeachAmiibo* mPlayerJudgeEnablePeachAmiibo = nullptr;
PlayerFormSensorCollisionArranger* mFormSensorCollisionArranger = nullptr;
PlayerInput* mInput = nullptr;
IUsePlayerCeilingCheck* mCeilingCheck = nullptr;
PlayerModelHolder* mModelHolder = nullptr;
PlayerHackKeeper* mHackKeeper = nullptr;
PlayerCapManHeroEyesControl* mCapManHeroEyesControl = nullptr;
PlayerRecoverySafetyPoint* mRecoverySafetyPoint = nullptr;
PlayerCostumeInfo* mCostumeInfo = nullptr;
PlayerJudgeCameraInWater* mJudgeCameraInWater = nullptr;
PlayerJudgeTalkGround* mJudgeTalkGround = nullptr;
PlayerJudgeTalkSwim* mJudgeTalkSwim = nullptr;
PlayerJudgeDead* mJudgeDead = nullptr;
PlayerJudgeDeadWipeStart* mJudgeDeadWipeStart = nullptr;
PlayerJudgeDrawForward* mJudgeDrawForward = nullptr;
PlayerJudgeSameNerve* mJudgeNrvPoleClimb = nullptr;
PlayerJudgeSameNerve* mJudgeNrvGrabCeil = nullptr;
PlayerJudgeSameNerve* mJudgeNrvWallCatch = nullptr;
PlayerJudgeActiveCameraSubjective* mJudgeActiveCameraSubjective = nullptr;
PlayerJudgeSameNerve* mJudgeNrvSwim = nullptr;
PlayerJudgeFailureCameraSubjective* mJudgeFailureCameraSubjective = nullptr;
PlayerJudgeSafetyPointRecovery* mJudgeSafetyPointRecovery = nullptr;
PlayerJudgeStatusPoleClimb* mJudgeStatusPoleClimb = nullptr;
PlayerJudgePlaySwitchOnAreaWaitAnim* mJudgePlaySwitchOnAreaWaitAnim = nullptr;
PlayerJudgeSleep* mJudgeSleep = nullptr;
PlayerJudgeEnableGuideArrow* mJudgeEnableGuideArrow = nullptr;
PlayerJudgeEnablePeachAmiibo* mJudgeEnablePeachAmiibo = nullptr;
bool mIsMoon = false;
};

View File

@ -15,6 +15,11 @@ class PlayerInput {
public:
PlayerInput(const al::LiveActor*, const IUsePlayerCollision*, const IUseDimension*);
bool isMove() const;
bool isMoveDeepDown() const;
bool isMoveDeepDownNoSnap() const;
bool isNoInput() const;
bool isEnableCarry() const;
bool isTriggerCarryStart() const;
bool isTriggerCarryRelease() const;
@ -62,8 +67,6 @@ public:
bool isHoldCapAction() const;
bool isHoldPoleClimbFast() const;
bool isHoldWallCatchMoveFast() const;
bool isMove() const;
bool isMoveDeepDown() const;
bool isHoldHackAction() const;
bool isHoldHackJump() const;
bool isSpinInput() const;

View File

@ -6,7 +6,7 @@ namespace al {
class SystemKit;
class GameFrameworkNx;
class AccountHolder;
struct DrawSystemInfo;
class GameDrawInfo;
} // namespace al
class RootTask;
@ -24,9 +24,9 @@ public:
al::GameFrameworkNx* getGameFramework() const { return mGameFramework; }
al::AccountHolder* getAccountHolder() const { return mAccountHolder; }
al::GameDrawInfo* getGameDrawInfo() const { return mGameDrawInfo; }
al::DrawSystemInfo* getDrawSystemInfo() const { return mDrawSystemInfo; }
al::AccountHolder* getAccountHolder() const { return mAccountHolder; }
protected:
friend class ApplicationFunction;
@ -34,11 +34,6 @@ protected:
private:
al::SystemKit* mSystemKit;
al::GameFrameworkNx* mGameFramework;
al::GameDrawInfo* mGameDrawInfo;
al::AccountHolder* mAccountHolder;
al::DrawSystemInfo* mDrawSystemInfo;
};
namespace agl {
class RenderBuffer;
class DrawContext;
} // namespace agl

View File

@ -4,8 +4,6 @@
#include <prim/seadBitFlag.h>
#include <prim/seadSafeString.h>
#include "System/GameProgressData.h"
class GameProgressData;
class GameDataFile {

View File

@ -5,13 +5,14 @@
#include "Library/Message/MessageSystem.h"
#include "Library/Scene/GameDataHolderBase.h"
#include "System/GameDataFile.h"
#include "System/WorldList.h"
namespace al {
class PlacementId;
}
class GameDataFile;
class GameDataHolder : public al::GameDataHolderBase {
public:
GameDataHolder(const al::MessageSystem*);
@ -19,7 +20,7 @@ public:
virtual ~GameDataHolder();
virtual char* getSceneObjName() const;
virtual const char* getSceneObjName() const;
virtual al::MessageSystem* getMessageSystem() const;
void setPlayingFileId(s32 file);
@ -68,6 +69,7 @@ public:
void resetMiniGameData();
s32 getPlayingFileId() const;
void requestSetPlayingFileId(s32);
s32 findUnlockShineNum(bool*, s32) const;
s32 calcBeforePhaseWorldNumMax(s32) const;

View File

@ -5,9 +5,9 @@
#include "Library/Scene/SceneUtil.h"
GameDataHolderAccessor::GameDataHolderAccessor(const al::IUseSceneObjHolder* holder) {
mSceneObj = al::getSceneObj(holder, 18);
mData = reinterpret_cast<GameDataHolder*>(al::getSceneObj(holder, 18));
}
GameDataHolderAccessor::GameDataHolderAccessor(const al::SceneObjHolder* holder) {
mSceneObj = holder->getObj(18);
mData = reinterpret_cast<GameDataHolder*>(holder->getObj(18));
}

View File

@ -1,5 +1,7 @@
#pragma once
#include "System/GameDataHolderWriter.h"
namespace al {
class IUseSceneObjHolder;
class SceneObjHolder;
@ -7,13 +9,10 @@ class ISceneObj;
class LiveActor;
} // namespace al
class GameDataHolderAccessor { // maybe extends GameDataHolderWriter?
class GameDataHolderAccessor : public GameDataHolderWriter { // maybe extends GameDataHolderWriter?
public:
GameDataHolderAccessor(const al::IUseSceneObjHolder*);
GameDataHolderAccessor(const al::SceneObjHolder*);
private:
al::ISceneObj* mSceneObj;
};
namespace rs {

View File

@ -1,7 +1,8 @@
#pragma once
#include "System/GameDataHolder.h"
class GameDataHolder;
class GameDataHolderWriter : public GameDataHolder {
// ima be real i dont think theres anything in this class
class GameDataHolderWriter {
public:
GameDataHolder* mData;
};

View File

@ -46,3 +46,7 @@ private:
GameConfigData* mGameConfigData;
bool mIsSequenceSetupIncomplete;
};
namespace GameSystemFunction {
GameSystem* getGameSystem();
}