mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-23 09:04:21 +00:00
Work on PlayerActorHakoniwa
This commit is contained in:
parent
3f3f691ec0
commit
80a4a2eb04
|
|
@ -13525,7 +13525,7 @@ Address,Quality,Size,Name
|
|||
0x0000007100227044,U,000064,
|
||||
0x0000007100227084,U,000068,
|
||||
0x00000071002270c8,U,000068,
|
||||
0x000000710022710c,U,000016,_ZN2al12ComboCounter9incrementEv
|
||||
0x000000710022710c,O,000016,_ZN2al12ComboCounter9incrementEv
|
||||
0x000000710022711c,U,000092,
|
||||
0x0000007100227178,U,000008,
|
||||
0x0000007100227180,U,000188,
|
||||
|
|
@ -26109,9 +26109,9 @@ Address,Quality,Size,Name
|
|||
0x000000710041aea4,U,000144,_ZN15PlayerActorBase14checkDeathAreaEv
|
||||
0x000000710041af34,U,000100,_ZN15PlayerActorBase16sendCollisionMsgEv
|
||||
0x000000710041af98,U,000464,_ZN15PlayerActorBase14receivePushMsgEPKN2al9SensorMsgEPNS0_9HitSensorES5_f
|
||||
0x000000710041b168,U,000232,_ZN19PlayerActorHakoniwaC2EPKc
|
||||
0x000000710041b250,U,000228,_ZN19PlayerActorHakoniwaC1EPKc
|
||||
0x000000710041b334,U,008628,_ZN19PlayerActorHakoniwa10initPlayerERKN2al13ActorInitInfoERK14PlayerInitInfo
|
||||
0x000000710041b168,W,000232,_ZN19PlayerActorHakoniwaC2EPKc
|
||||
0x000000710041b250,W,000228,_ZN19PlayerActorHakoniwaC1EPKc
|
||||
0x000000710041b334,W,008628,_ZN19PlayerActorHakoniwa10initPlayerERKN2al13ActorInitInfoERK14PlayerInitInfo
|
||||
0x000000710041d4e8,U,000840,_ZN19PlayerActorHakoniwa27updateModelShadowDropLengthEv
|
||||
0x000000710041d830,U,000040,_ZN19PlayerActorHakoniwa21executeAfterCapTargetEv
|
||||
0x000000710041d858,U,000900,_ZN19PlayerActorHakoniwa22syncSensorAndCollisionEv
|
||||
|
|
@ -26129,7 +26129,7 @@ Address,Quality,Size,Name
|
|||
0x0000007100421754,U,000072,_ZN19PlayerActorHakoniwa12isEnableDemoEv
|
||||
0x000000710042179c,U,000012,_ZNK19PlayerActorHakoniwa16isDamageStopDemoEv
|
||||
0x00000071004217a8,U,000164,_ZN19PlayerActorHakoniwa9startDemoEv
|
||||
0x000000710042184c,U,000584,_ZN19PlayerActorHakoniwa16setNerveOnGroundEv
|
||||
0x000000710042184c,W,000584,_ZN19PlayerActorHakoniwa16setNerveOnGroundEv
|
||||
0x0000007100421a94,U,000240,_ZN19PlayerActorHakoniwa7endDemoEv
|
||||
0x0000007100421b84,U,000156,_ZN19PlayerActorHakoniwa19startDemoPuppetableEv
|
||||
0x0000007100421c20,U,000440,_ZN19PlayerActorHakoniwa17startPlayerPuppetEv
|
||||
|
|
@ -26162,7 +26162,7 @@ Address,Quality,Size,Name
|
|||
0x00000071004235b0,U,000344,_ZN19PlayerActorHakoniwa8exeSlopeEv
|
||||
0x0000007100423708,U,000668,_ZN19PlayerActorHakoniwa10exeRollingEv
|
||||
0x00000071004239a4,U,001008,_ZN19PlayerActorHakoniwa10exeSpinCapEv
|
||||
0x0000007100423d94,U,000704,_ZN19PlayerActorHakoniwa21tryChangeNerveFromAirEv
|
||||
0x0000007100423d94,W,000704,_ZN19PlayerActorHakoniwa21tryChangeNerveFromAirEv
|
||||
0x0000007100424054,U,000008,_ZN19PlayerActorHakoniwa26tryActionCapSpinAttackMissEv
|
||||
0x000000710042405c,U,001096,_ZN19PlayerActorHakoniwa7exeJumpEv
|
||||
0x00000071004244a4,U,000204,_ZN19PlayerActorHakoniwa14exeCapCatchPopEv
|
||||
|
|
|
|||
|
Can't render this file because it is too large.
|
|
|
@ -76,6 +76,7 @@ public:
|
|||
void initNoViewId(const PlacementInfo*, const ActorInitInfo&);
|
||||
|
||||
const PlacementInfo& getPlacementInfo() const { return *mPlacementInfo; }
|
||||
ExecuteDirector* getExecuteDirector() const { return mExecuteDirector; }
|
||||
|
||||
private:
|
||||
LiveActorGroup* mKitDrawingGroup;
|
||||
|
|
|
|||
|
|
@ -96,8 +96,8 @@ private:
|
|||
};
|
||||
|
||||
void isExistSubActorKeeper(const LiveActor*);
|
||||
const LiveActor* getSubActor(const LiveActor*, const char*); // NOTE: unknown return type
|
||||
void tryGetSubActor(const LiveActor*, const char*);
|
||||
LiveActor* getSubActor(const LiveActor*, const char*); // NOTE: unknown return type
|
||||
LiveActor* tryGetSubActor(const LiveActor*, const char*); // NOTE: unknown return type
|
||||
void getSubActor(const LiveActor*, s32);
|
||||
void getSubActorNum(const LiveActor*);
|
||||
void offSyncClippingSubActor(LiveActor*, const LiveActor*);
|
||||
|
|
|
|||
20
lib/al/include/Library/Player/ComboCounter.h
Normal file
20
lib/al/include/Library/Player/ComboCounter.h
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
|
||||
namespace al {
|
||||
|
||||
class ComboCounter {
|
||||
public:
|
||||
ComboCounter() {}
|
||||
|
||||
virtual void increment() {
|
||||
mCombo++;
|
||||
}
|
||||
|
||||
private:
|
||||
s32 mCombo;
|
||||
};
|
||||
static_assert(sizeof(ComboCounter) == 0x10);
|
||||
|
||||
}
|
||||
29
lib/al/include/playerUtil.h
Normal file
29
lib/al/include/playerUtil.h
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#pragma once
|
||||
|
||||
#include <math/seadVector.h>
|
||||
|
||||
#include "Library/Execute/ExecuteDirector.h"
|
||||
#include "Project/HitSensor/HitSensor.h"
|
||||
|
||||
namespace al {
|
||||
class FootPrintServer;
|
||||
|
||||
void registerExecutorFunctor(char const*,al::ExecuteDirector *,al::FunctorBase const&);
|
||||
|
||||
sead::Vector3f* getTransPtr(al::LiveActor*);
|
||||
|
||||
class WaterSurfaceFinder {
|
||||
public:
|
||||
WaterSurfaceFinder(al::LiveActor const*);
|
||||
private:
|
||||
void* size[0x38/8];
|
||||
};
|
||||
class FootPrintHolder {
|
||||
public:
|
||||
FootPrintHolder(al::LiveActor *,char const*,al::HitSensor *,al::FootPrintServer *);
|
||||
public:
|
||||
void* size[0x58/8];
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,9 +1,11 @@
|
|||
#pragma once
|
||||
|
||||
#include "Library/LiveActor/LiveActor.h"
|
||||
#include "PlayerUtil.h"
|
||||
|
||||
class HackCap : public al::LiveActor {
|
||||
public:
|
||||
HackCap(al::LiveActor const*,char const*,PlayerInput const*,PlayerAreaChecker const*,PlayerWallActionHistory const*,PlayerCapActionHistory const*,PlayerEyeSensorHitHolder const*,PlayerSeparateCapFlag const*,IUsePlayerCollision const*,IUsePlayerHeightCheck const*,PlayerWetControl const*,PlayerJointControlKeeper const*,HackCapJudgePreInputSeparateThrow *,HackCapJudgePreInputSeparateJump *);
|
||||
void calcReturnTargetPos(sead::Vector3f*);
|
||||
|
||||
void hide(bool);
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
namespace al {
|
||||
class PlayerHackKeeper;
|
||||
|
||||
class IUsePlayerHack {
|
||||
public:
|
||||
virtual PlayerHackKeeper* getPlayerHackKeeper() const = 0;
|
||||
};
|
||||
} // namespace al
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ void PlayerActorBase::initPlayer(const al::ActorInitInfo&, const PlayerInitInfo&
|
|||
IUsePlayerCollision* PlayerActorBase::getPlayerCollision() const {
|
||||
return nullptr;
|
||||
}
|
||||
al::PlayerHackKeeper* PlayerActorBase::getPlayerHackKeeper() const {
|
||||
PlayerHackKeeper* PlayerActorBase::getPlayerHackKeeper() const {
|
||||
return nullptr;
|
||||
}
|
||||
bool PlayerActorBase::isEnableDemo() {
|
||||
|
|
@ -44,6 +44,6 @@ PlayerInfo* PlayerActorBase::getPlayerInfo() const {
|
|||
u32 PlayerActorBase::getPortNo() const {
|
||||
return mPortNo;
|
||||
}
|
||||
void* PlayerActorBase::getViewMtx() const {
|
||||
const sead::Matrix34f* PlayerActorBase::getViewMtx() const {
|
||||
return mViewMtx;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,16 +9,16 @@ class PlayerInfo;
|
|||
class PlayerInitInfo;
|
||||
class PlayerHackKeeper;
|
||||
|
||||
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;
|
||||
virtual void initPlayer(const al::ActorInitInfo&, const PlayerInitInfo&);
|
||||
virtual u32 getPortNo() const;
|
||||
virtual void* getViewMtx() const; // NOTE: unknown return type
|
||||
virtual const sead::Matrix34f* getViewMtx() const;
|
||||
virtual IUsePlayerCollision* getPlayerCollision() const;
|
||||
virtual al::PlayerHackKeeper* getPlayerHackKeeper() const override;
|
||||
virtual PlayerHackKeeper* getPlayerHackKeeper() const override;
|
||||
virtual bool isEnableDemo();
|
||||
virtual void startDemo();
|
||||
virtual void endDemo();
|
||||
|
|
@ -43,9 +43,9 @@ public:
|
|||
virtual void movement() override;
|
||||
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
|
||||
const sead::Matrix34f* mViewMtx = nullptr;
|
||||
u32 mPortNo = 0;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1 +1,833 @@
|
|||
#include "Player/PlayerActorHakoniwa.h"
|
||||
#include "Library/Audio/AudioKeeper.h"
|
||||
#include "Library/Base/String.h"
|
||||
#include "Library/LiveActor/ActorFlagFunction.h"
|
||||
#include "Library/LiveActor/ActorInitInfo.h"
|
||||
#include "Library/LiveActor/ActorPoseKeeper.h"
|
||||
#include "Library/LiveActor/ActorSensorFunction.h"
|
||||
#include "Library/LiveActor/LiveActor.h"
|
||||
#include "Library/LiveActor/SubActorKeeper.h"
|
||||
#include "Library/Math/VectorUtil.h"
|
||||
#include "Library/Nerve/NerveSetupUtil.h"
|
||||
#include "Library/Nerve/NerveUtil.h"
|
||||
#include "Library/Placement/PlacementFunction.h"
|
||||
#include "Library/Player/ComboCounter.h"
|
||||
#include "Library/Scene/SceneUtil.h"
|
||||
#include "Library/Thread/FunctorV0M.h"
|
||||
#include "Player/HackCap.h"
|
||||
#include "Player/IUsePlayerCollision.h"
|
||||
#include "Player/PlayerActorBase.h"
|
||||
#include "Player/PlayerFunction.h"
|
||||
#include "Player/PlayerInput.h"
|
||||
#include "Player/PlayerInputFunction.h"
|
||||
#include "Player/PlayerPainPartsKeeper.h"
|
||||
#include "Player/PlayerTrigger.h"
|
||||
#include "PlayerUtil.h"
|
||||
#include "System/GameDataFunction.h"
|
||||
#include "Util/ActorDimensionKeeper.h"
|
||||
#include "Util/StageSceneFunction.h"
|
||||
#include "playerUtil.h"
|
||||
|
||||
namespace {
|
||||
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Wait);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Squat);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Run);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Slope);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Rolling);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, SpinCap);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Jump);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, CapCatchPop);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, WallAir);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, WallCatch);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, GrabCeil);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, PoleClimb);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, HipDrop);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, HeadSliding);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, LongJump);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, SandSink);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, SandGeyser);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Rise);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Swim);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Damage);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, DamageSwim);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, DamageFire);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Press);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Hack);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, EndHack);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Bind);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Camera);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Abyss);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Demo);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Dead);
|
||||
NERVE_IMPL(PlayerActorHakoniwa, Fall);
|
||||
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Wait);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Squat);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Run);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Slope);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Rolling);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, SpinCap);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Jump);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, CapCatchPop);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, WallAir);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, WallCatch);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, GrabCeil);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, PoleClimb);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, HipDrop);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, HeadSliding);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, LongJump);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, SandSink);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, SandGeyser);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Rise);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Swim);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Damage);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, DamageSwim);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, DamageFire);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Press);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Hack);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, EndHack);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Bind);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Camera);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Abyss);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Demo);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Dead);
|
||||
NERVE_MAKE(PlayerActorHakoniwa, Fall);
|
||||
|
||||
} // namespace
|
||||
|
||||
// NON_MATCHING: slightly different when stopping/restarting memset
|
||||
PlayerActorHakoniwa::PlayerActorHakoniwa(const char* name)
|
||||
: PlayerActorBase(name), mComboCounter(new al::ComboCounter()) {}
|
||||
|
||||
// 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 PlayerActorHakoniwa::initPlayer(const al::ActorInitInfo& actorInfo,
|
||||
const PlayerInitInfo& playerInfo) {
|
||||
al::initActorWithArchiveName(this, actorInfo, "PlayerActorHakoniwa", nullptr);
|
||||
rs::initPlayerActorInfo(this, playerInfo);
|
||||
al::onCollide(this);
|
||||
|
||||
bool isMoon = false;
|
||||
al::tryGetArg(&isMoon, actorInfo, "IsMoon");
|
||||
al::tryGetArg(&mIsLongShadow, actorInfo, "IsLongShadow");
|
||||
|
||||
bool invalidateCap = false;
|
||||
al::tryGetArg(&invalidateCap, actorInfo, "IsInvalidateCap");
|
||||
if (invalidateCap)
|
||||
GameDataFunction::disableCapByPlacement(this);
|
||||
|
||||
al::registerExecutorFunctor(
|
||||
"プレイヤー後処理", actorInfo.getExecuteDirector(),
|
||||
al::FunctorV0M<PlayerActorHakoniwa*, void (PlayerActorHakoniwa::*)(void)>(
|
||||
this, &PlayerActorHakoniwa::initAfterPlacement));
|
||||
mBodyHitSensor = al::getHitSensor(this, "Body");
|
||||
|
||||
mActorDimensionKeeper = new ActorDimensionKeeper(this);
|
||||
mPlayerTrigger = new PlayerTrigger();
|
||||
|
||||
al::AudioKeeper* audioKeeper = getAudioKeeper();
|
||||
PlayerModelHolder* modelHolder = new PlayerModelHolder(3);
|
||||
LiveActor* modelActor = new al::LiveActor("マリオモデル");
|
||||
const char* initPlayerModelName = rs::getInitPlayerModelName(playerInfo);
|
||||
PlayerCostumeInfo* costumeInfo = PlayerFunction::initMarioModelActor(
|
||||
modelActor, actorInfo, initPlayerModelName, rs::getInitCapTypeName(playerInfo), audioKeeper,
|
||||
rs::isClosetScenePlayer(playerInfo));
|
||||
modelHolder->registerModel(modelActor, "Normal");
|
||||
|
||||
// NON_MATCHING: allocated/created differently
|
||||
al::StringTmp<128> initPlayerModelNameWithoutMario = "";
|
||||
al::tryReplaceString(&initPlayerModelNameWithoutMario, initPlayerModelName, "Mario", "");
|
||||
modelHolder->_10.format("%s", initPlayerModelNameWithoutMario.cstr());
|
||||
|
||||
al::StringTmp<64> modelName2d = &sead::SafeString::cNullChar;
|
||||
if (costumeInfo->isEnableCostume2D()) {
|
||||
modelName2d.format("%s2D", initPlayerModelName);
|
||||
} else {
|
||||
modelName2d.format("Mario2D");
|
||||
}
|
||||
|
||||
LiveActor* modelActor2d = new al::LiveActor("ドットマリオモデル");
|
||||
PlayerFunction::initMarioModelActor2D(modelActor2d, actorInfo, modelName2d.cstr(),
|
||||
PlayerFunction::isInvisibleCap(costumeInfo));
|
||||
modelHolder->registerModel(modelActor2d, "Normal2D");
|
||||
|
||||
LiveActor* mario2DMini = new al::LiveActor("ドット死亡モデル");
|
||||
al::initChildActorWithArchiveNameNoPlacementInfo(mario2DMini, actorInfo, "Mario2DMini",
|
||||
nullptr);
|
||||
mario2DMini->makeActorDead();
|
||||
modelHolder->registerModel(mario2DMini, "Mario2DMini");
|
||||
|
||||
modelHolder->changeModel("Normal");
|
||||
mPlayerModelHolder = modelHolder;
|
||||
|
||||
mPlayerPainPartsKeeper = new PlayerPainPartsKeeper(this, costumeInfo);
|
||||
|
||||
if (rs::isNeedCreateNoseNeedle(playerInfo))
|
||||
mPlayerPainPartsKeeper->createNoseNeedle(mPlayerModelHolder, actorInfo);
|
||||
|
||||
mPlayerConst = PlayerFunction::createMarioConst(isMoon ? "Moon" : "");
|
||||
mPlayerJointControlKeeper = new PlayerJointControlKeeper(
|
||||
mPlayerModelHolder->findModelActor("Normal"), mPlayerConst, costumeInfo->isNeedShrinkNose(),
|
||||
costumeInfo->isEnableBigEar(), costumeInfo->isFollowJoeStrap());
|
||||
|
||||
PlayerColliderHakoniwa* collider = new PlayerColliderHakoniwa(this, mPlayerConst);
|
||||
collider->init();
|
||||
mPlayerColliderHakoniwa = collider;
|
||||
|
||||
mPlayerInput = new PlayerInput(this, collider, this);
|
||||
mPlayerModelChangerHakoniwa = new PlayerModelChangerHakoniwa(
|
||||
this, mPlayerModelHolder, mPlayerPainPartsKeeper, costumeInfo, this);
|
||||
|
||||
mPlayerAnimator = new PlayerAnimator(mPlayerModelHolder,
|
||||
PlayerFunction::createPlayerDitherAnimator(this, 200.0f));
|
||||
if (costumeInfo->isNeedFullFaceAnim())
|
||||
mPlayerAnimator->mIsNeedFullFaceAnim = true;
|
||||
|
||||
mPlayerEffect = new PlayerEffect(this, mPlayerModelHolder, mPlayerJointControlKeeper->mtx);
|
||||
mPlayerContinuousJump = new PlayerContinuousJump(mPlayerConst);
|
||||
mPlayerContinuousLongJump = new PlayerContinuousLongJump(mPlayerConst);
|
||||
mPlayerDamageKeeper = new PlayerDamageKeeper(this, mPlayerEffect);
|
||||
mPlayerDemoActionFlag = new PlayerDemoActionFlag();
|
||||
mPlayerCapActionHistory =
|
||||
new PlayerCapActionHistory(this, mPlayerConst, mPlayerTrigger, mPlayerColliderHakoniwa);
|
||||
mPlayerAreaChecker = new PlayerAreaChecker(this, mPlayerModelHolder);
|
||||
mWaterSurfaceFinder = new al::WaterSurfaceFinder(this);
|
||||
mWorldEndBorderKeeper = new WorldEndBorderKeeper(this);
|
||||
mPlayerWallActionHistory = new PlayerWallActionHistory();
|
||||
mPlayerCounterAfterUpperPunch = new PlayerCounterAfterUpperPunch();
|
||||
mPlayerCounterForceRun = new PlayerCounterForceRun();
|
||||
mPlayerCounterQuickTurnJump = new PlayerCounterQuickTurnJump(mPlayerConst, mPlayerTrigger);
|
||||
mPlayerJumpMessageRequest = new PlayerJumpMessageRequest();
|
||||
mPlayerSandSinkAffect = new PlayerSandSinkAffect(this, mPlayerConst, mPlayerInput,
|
||||
mPlayerColliderHakoniwa, mPlayerEffect);
|
||||
mPlayerEyeSensorHitHolder = new PlayerEyeSensorHitHolder(128);
|
||||
mPlayerEyeSensorHitHolder->createTargetMarkerBuffer(128);
|
||||
mPlayerPushReceiver = new PlayerPushReceiver(this);
|
||||
mPlayerHitPush = new PlayerHitPush(this, mPlayerConst);
|
||||
mPlayerExternalVelocity =
|
||||
new PlayerExternalVelocity(this, mPlayerColliderHakoniwa, al::getTransPtr(this));
|
||||
|
||||
al::LiveActor* currentActor = mPlayerModelHolder->currentModel->mLiveActor;
|
||||
al::FootPrintHolder* footPrintHolder =
|
||||
new al::FootPrintHolder(currentActor ? currentActor : nullptr, "FootPrint", mBodyHitSensor,
|
||||
(al::FootPrintServer*)al::getSceneObj(currentActor, 15));
|
||||
footPrintHolder->size[9] = nullptr;
|
||||
footPrintHolder->size[10] = nullptr;
|
||||
mFootPrintHolder = footPrintHolder;
|
||||
|
||||
mPlayerSeparateCapFlag = new PlayerSeparateCapFlag();
|
||||
|
||||
mPlayerWetControl = new PlayerWetControl(this, mPlayerModelHolder->findModelActor("Normal"),
|
||||
mPlayerAreaChecker);
|
||||
mPlayerWetControl->mEffect = mPlayerEffect;
|
||||
|
||||
IUsePlayerCollision* playerCollision = getPlayerCollision();
|
||||
mHackCapJudgePreInputSeparateThrow =
|
||||
new HackCapJudgePreInputSeparateThrow(mPlayerInput, mPlayerSeparateCapFlag);
|
||||
mHackCapJudgePreInputSeparateJump =
|
||||
new HackCapJudgePreInputSeparateJump(mPlayerInput, mPlayerSeparateCapFlag);
|
||||
|
||||
const char* capName = rs::getInitCapTypeName(playerInfo);
|
||||
mHackCap =
|
||||
new HackCap(this, capName, mPlayerInput, mPlayerAreaChecker, mPlayerWallActionHistory,
|
||||
mPlayerCapActionHistory, mPlayerEyeSensorHitHolder, mPlayerSeparateCapFlag,
|
||||
mPlayerColliderHakoniwa, mPlayerColliderHakoniwa, mPlayerWetControl,
|
||||
mPlayerJointControlKeeper, mHackCapJudgePreInputSeparateThrow,
|
||||
mHackCapJudgePreInputSeparateJump);
|
||||
mHackCap->init(actorInfo);
|
||||
al::registerExecutorFunctor(
|
||||
"帽子装着位置更新", actorInfo.getExecuteDirector(),
|
||||
al::FunctorV0M<PlayerActorHakoniwa*, void (PlayerActorHakoniwa::*)(void)>(
|
||||
this, &PlayerActorHakoniwa::executeAfterCapTarget));
|
||||
PlayerCounterAfterCapCatch* counterAfterCapCatch =
|
||||
mPlayerCapActionHistory->mCounterAfterCapCatch;
|
||||
|
||||
mPlayerRippleGenerator = new PlayerRippleGenerator(this, mHackCap, mPlayerModelHolder);
|
||||
mPlayerRecoverySafetyPoint = new PlayerRecoverySafetyPoint(
|
||||
this, mHackCap, actorInfo, this, mPlayerColliderHakoniwa->mFilter2DOnly, mBodyHitSensor);
|
||||
mPlayerPuppet = new PlayerPuppet(
|
||||
this, mHackCap, mPlayerAnimator, mPlayerColliderHakoniwa, mActorDimensionKeeper,
|
||||
mPlayerModelChangerHakoniwa, mWorldEndBorderKeeper, mPlayerCounterForceRun,
|
||||
mPlayerDamageKeeper, mPlayerEffect, mPlayerInput, mPlayerConst);
|
||||
mPlayerBindKeeper = new PlayerBindKeeper(mBodyHitSensor, mPlayerPuppet);
|
||||
mPlayerCarryKeeper = new PlayerCarryKeeper(
|
||||
this, mBodyHitSensor, mPlayerAnimator, mPlayerModelChangerHakoniwa, mPlayerColliderHakoniwa,
|
||||
(PlayerJointParamHandLegAngle*)mPlayerJointControlKeeper->gap[12]);
|
||||
mPlayerEquipmentUser =
|
||||
new PlayerEquipmentUser(mPlayerInput, mPlayerModelHolder, mPlayerModelChangerHakoniwa);
|
||||
mPlayerSeCtrl =
|
||||
new PlayerSeCtrl(this, mPlayerAnimator, mHackCap, mPlayerModelChangerHakoniwa,
|
||||
mPlayerModelHolder->currentModel->mLiveActor, mPlayerExternalVelocity);
|
||||
|
||||
mPlayerHackKeeper = new PlayerHackKeeper(this, mHackCap, mPlayerRecoverySafetyPoint,
|
||||
mPlayerInput, getViewMtx(), mPlayerDamageKeeper,
|
||||
mPlayerModelChangerHakoniwa, mPlayerColliderHakoniwa);
|
||||
mPlayerHackKeeper->createHackModel(actorInfo);
|
||||
|
||||
mPlayerFormSensorCollisionArranger = new PlayerFormSensorCollisionArranger(
|
||||
this, mPlayerColliderHakoniwa, mPlayerModelChangerHakoniwa, mPlayerHackKeeper);
|
||||
mPlayerCapManHeroEyesControl = new PlayerCapManHeroEyesControl(
|
||||
"キャップの目の制御",
|
||||
al::tryGetSubActor(al::getSubActor(mPlayerModelHolder->findModelActor("Normal"), "頭"),
|
||||
"キャップの目"),
|
||||
al::getSubActor(mPlayerModelHolder->findModelActor("Normal2D"), "キャップの目[2D]"));
|
||||
|
||||
mPlayerJudgeAirForceCount =
|
||||
new PlayerJudgeAirForceCount(this, mPlayerExternalVelocity, playerCollision);
|
||||
mPlayerJudgeCapCatchPop =
|
||||
new PlayerJudgeCapCatchPop(this, mPlayerInput, playerCollision, mPlayerModelChangerHakoniwa,
|
||||
mPlayerCapActionHistory, counterAfterCapCatch);
|
||||
mPlayerJudgeDeadWipeStart = new PlayerJudgeDeadWipeStart(this, mPlayerConst);
|
||||
mPlayerJudgeDirectRolling = new PlayerJudgeDirectRolling(
|
||||
this, mPlayerConst, mPlayerInput, playerCollision, mPlayerModelChangerHakoniwa,
|
||||
mPlayerCarryKeeper, mPlayerCounterForceRun);
|
||||
mPlayerJudgeEnableStandUp =
|
||||
new PlayerJudgeEnableStandUp(playerCollision, mPlayerColliderHakoniwa);
|
||||
mPlayerJudgeForceSlopeSlide =
|
||||
new PlayerJudgeForceSlopeSlide(this, mPlayerConst, playerCollision);
|
||||
mPlayerJudgeForceRolling = new PlayerJudgeForceRolling(this, playerCollision);
|
||||
mPlayerJudgeGrabCeil =
|
||||
new PlayerJudgeGrabCeil(this, mPlayerConst, playerCollision, mPlayerModelChangerHakoniwa,
|
||||
mPlayerCarryKeeper, mPlayerExternalVelocity);
|
||||
mPlayerJudgeInWater1 = new PlayerJudgeInWater(
|
||||
this, mPlayerConst, playerCollision, mPlayerAreaChecker, mWaterSurfaceFinder,
|
||||
mPlayerColliderHakoniwa, mPlayerCounterForceRun, false, false, false);
|
||||
mPlayerJudgeInWater2 = new PlayerJudgeInWater(
|
||||
this, mPlayerConst, playerCollision, mPlayerAreaChecker, mWaterSurfaceFinder,
|
||||
mPlayerColliderHakoniwa, mPlayerCounterForceRun, false, false, true);
|
||||
mPlayerJudgeInWater3 = new PlayerJudgeInWater(
|
||||
this, mPlayerConst, playerCollision, mPlayerAreaChecker, mWaterSurfaceFinder,
|
||||
mPlayerColliderHakoniwa, nullptr, false, false, false);
|
||||
mPlayerJudgeInWater4 = new PlayerJudgeInWater(
|
||||
this, mPlayerConst, playerCollision, mPlayerAreaChecker, mWaterSurfaceFinder,
|
||||
mPlayerColliderHakoniwa, mPlayerCounterForceRun, false, true, false);
|
||||
mPlayerJudgeInvalidateInputFall =
|
||||
new PlayerJudgeInvalidateInputFall(this, mPlayerAreaChecker, playerCollision);
|
||||
mPlayerJudgeLongFall =
|
||||
new PlayerJudgeLongFall(this, mPlayerConst, mPlayerColliderHakoniwa, mPlayerHackKeeper,
|
||||
mPlayerBindKeeper, mPlayerModelChangerHakoniwa);
|
||||
mPlayerJudgePoleClimb = new PlayerJudgePoleClimb(
|
||||
this, mPlayerConst, playerCollision, mPlayerModelChangerHakoniwa, mPlayerCarryKeeper,
|
||||
mPlayerExternalVelocity, mPlayerInput, mPlayerTrigger);
|
||||
mPlayerJudgePreInputCapThrow =
|
||||
new PlayerJudgePreInputCapThrow(mPlayerConst, mPlayerInput, mPlayerCarryKeeper, mHackCap);
|
||||
mPlayerJudgePreInputHackAction = new PlayerJudgePreInputHackAction(mPlayerConst, mPlayerInput);
|
||||
mHackCapJudgePreInputHoveringJump =
|
||||
new HackCapJudgePreInputHoveringJump(this, playerCollision, mHackCap, mPlayerInput);
|
||||
mPlayerJudgeSandSink = new PlayerJudgeSandSink(playerCollision, mPlayerSandSinkAffect);
|
||||
mPlayerJudgeSlopeSlide = new PlayerJudgeSlopeSlide(
|
||||
this, mPlayerConst, mPlayerInput, playerCollision, mPlayerModelChangerHakoniwa);
|
||||
mPlayerJudgeStartHipDrop = new PlayerJudgeStartHipDrop(
|
||||
mPlayerConst, mPlayerInput, mPlayerColliderHakoniwa, mPlayerModelChangerHakoniwa);
|
||||
mPlayerJudgeStartRise =
|
||||
new PlayerJudgeStartRise(this, mPlayerAreaChecker, mPlayerModelChangerHakoniwa);
|
||||
mPlayerJudgeStartRolling =
|
||||
new PlayerJudgeStartRolling(this, mPlayerConst, mPlayerInput, playerCollision,
|
||||
mPlayerModelChangerHakoniwa, mPlayerCarryKeeper);
|
||||
mPlayerJudgeStartSquat =
|
||||
new PlayerJudgeStartSquat(mPlayerInput, mPlayerCounterForceRun, mPlayerCarryKeeper);
|
||||
mPlayerJudgeWallCatch = new PlayerJudgeWallCatch(
|
||||
this, mPlayerConst, playerCollision, mPlayerModelChangerHakoniwa, mPlayerCarryKeeper,
|
||||
mPlayerExternalVelocity, mPlayerInput, mPlayerTrigger, mPlayerCounterForceRun);
|
||||
mPlayerJudgeWallCatchInputDir = new PlayerJudgeWallCatchInputDir(
|
||||
this, mPlayerConst, mPlayerInput, playerCollision, mPlayerModelChangerHakoniwa,
|
||||
mPlayerCarryKeeper, mPlayerExternalVelocity, mPlayerCounterForceRun,
|
||||
mPlayerColliderHakoniwa);
|
||||
mPlayerJudgeWallHitDown =
|
||||
new PlayerJudgeWallHitDown(this, playerCollision, mPlayerConst, mPlayerTrigger);
|
||||
mPlayerJudgeWallHitDownForceRun = new PlayerJudgeWallHitDownForceRun(
|
||||
this, playerCollision, mPlayerConst, mPlayerCounterForceRun, mPlayerTrigger);
|
||||
mPlayerJudgeWallHitDownRolling =
|
||||
new PlayerJudgeWallHitDownRolling(this, playerCollision, mPlayerConst, mPlayerTrigger);
|
||||
mPlayerJudgeWallKeep = new PlayerJudgeWallKeep(
|
||||
this, mPlayerConst, mPlayerInput, playerCollision, mPlayerModelChangerHakoniwa,
|
||||
mPlayerColliderHakoniwa, mPlayerCounterAfterUpperPunch, mPlayerWallActionHistory,
|
||||
mPlayerCarryKeeper, mPlayerTrigger, mPlayerCounterForceRun);
|
||||
mPlayerJudgeCameraSubjective =
|
||||
new PlayerJudgeCameraSubjective(this, playerCollision, mPlayerInput);
|
||||
mPlayerSpinCapAttack =
|
||||
new PlayerSpinCapAttack(mHackCap, mPlayerConst, mPlayerTrigger, mPlayerInput,
|
||||
counterAfterCapCatch, mPlayerJudgePreInputCapThrow);
|
||||
mPlayerActionDiveInWater = new PlayerActionDiveInWater(
|
||||
mPlayerAnimator, mPlayerModelChangerHakoniwa, mPlayerCarryKeeper,
|
||||
new PlayerJudgeDiveInWater(this, mPlayerConst, mPlayerColliderHakoniwa,
|
||||
mPlayerColliderHakoniwa));
|
||||
mPlayerJudgeForceLand = new PlayerJudgeForceLand(mPlayerJudgeLongFall, mPlayerTrigger);
|
||||
mPlayerJudgeOutInWater =
|
||||
new PlayerJudgeOutInWater(this, mPlayerJudgeInWater1, mPlayerJudgeInWater4);
|
||||
mPlayerJudgePreInputJump =
|
||||
new PlayerJudgePreInputJump(mPlayerConst, mPlayerInput, mPlayerJudgeForceSlopeSlide);
|
||||
mPlayerJudgeStartWaterSurfaceRun =
|
||||
new PlayerJudgeStartWaterSurfaceRun(this, mWaterSurfaceFinder, mPlayerCounterForceRun);
|
||||
mPlayerJudgeSpeedCheckFall = new PlayerJudgeSpeedCheckFall(this, playerCollision, mPlayerConst,
|
||||
mPlayerJudgeStartWaterSurfaceRun);
|
||||
mPlayerJudgeStartRun =
|
||||
new PlayerJudgeStartRun(this, mPlayerConst, playerCollision, mPlayerInput,
|
||||
mPlayerCounterForceRun, mPlayerJudgeForceLand);
|
||||
|
||||
al::initNerve(this, &Fall, 29);
|
||||
|
||||
mPlayerStateWait = new PlayerStateWait(
|
||||
this, mPlayerConst, playerCollision, mPlayerModelChangerHakoniwa, mPlayerJointControlKeeper,
|
||||
mWaterSurfaceFinder, mPlayerColliderHakoniwa, mPlayerJudgeForceLand, mPlayerAnimator,
|
||||
mPlayerTrigger, mPlayerCapManHeroEyesControl,
|
||||
(PlayerJointParamCenterDynamics*)mPlayerJointControlKeeper->gap[13],
|
||||
(PlayerJointParamGroundPose*)mPlayerJointControlKeeper->gap[15]);
|
||||
mPlayerStateSandSink = new PlayerStateSandSink(this, mPlayerConst, mPlayerInput, mPlayerTrigger,
|
||||
mPlayerColliderHakoniwa, mPlayerAnimator,
|
||||
mPlayerJudgeStartRun, mPlayerJudgePreInputJump);
|
||||
mActorStateSandGeyser = new ActorStateSandGeyser(this);
|
||||
mPlayerStateSpinCap = new PlayerStateSpinCap(
|
||||
this, mPlayerConst, mPlayerInput, mPlayerCounterForceRun, mWaterSurfaceFinder,
|
||||
mPlayerColliderHakoniwa, mPlayerTrigger, mPlayerSpinCapAttack, mPlayerAnimator,
|
||||
(PlayerJointParamCapThrow*)mPlayerJointControlKeeper->gap[10]);
|
||||
mPlayerStateSquat =
|
||||
new PlayerStateSquat(this, mPlayerConst, mPlayerAnimator, mPlayerInput, playerCollision,
|
||||
mPlayerModelChangerHakoniwa, mPlayerTrigger, mPlayerJudgeStartSquat,
|
||||
mPlayerJudgeStartRun, mPlayerJudgeEnableStandUp);
|
||||
mPlayerStateRunHakoniwa2D3D = new PlayerStateRunHakoniwa2D3D(
|
||||
this, mPlayerConst, this, mPlayerInput, playerCollision, mWaterSurfaceFinder,
|
||||
mPlayerCounterForceRun, mPlayerCounterQuickTurnJump, mPlayerTrigger, mPlayerAnimator,
|
||||
mPlayerEffect, (PlayerJointParamCenterDynamics*)mPlayerJointControlKeeper->gap[13], isMoon);
|
||||
mPlayerStateSlope =
|
||||
new PlayerStateSlope(this, mPlayerConst, mPlayerInput, playerCollision, mPlayerAnimator);
|
||||
mPlayerStateRolling = new PlayerStateRolling(
|
||||
this, mPlayerConst, mPlayerInput, playerCollision, mPlayerTrigger, mPlayerAnimator,
|
||||
mPlayerEffect, mPlayerJudgeStartRolling, mPlayerJudgeEnableStandUp,
|
||||
mPlayerJudgePreInputJump, mPlayerJudgePreInputCapThrow, mPlayerJudgeForceRolling,
|
||||
mPlayerContinuousLongJump, mPlayerSeCtrl);
|
||||
mPlayerStateJump = new PlayerStateJump(
|
||||
this, mPlayerConst, mPlayerModelChangerHakoniwa, this, mPlayerInput,
|
||||
mPlayerJumpMessageRequest, new PlayerJudgeCapCatch(this, counterAfterCapCatch),
|
||||
mPlayerCounterForceRun, mPlayerJointControlKeeper, mPlayerColliderHakoniwa, mPlayerTrigger,
|
||||
mPlayerContinuousJump, mPlayerAnimator, mPlayerActionDiveInWater, mHackCap,
|
||||
new HackCapJudgeHoldHoveringJump(this, mPlayerColliderHakoniwa, mHackCap, mPlayerInput,
|
||||
mPlayerConst),
|
||||
isMoon);
|
||||
mPlayerStateCapCatchPop = new PlayerStateCapCatchPop(this, mPlayerConst, playerCollision,
|
||||
mPlayerInput, mPlayerAnimator, mHackCap);
|
||||
mPlayerStateWallAir = new PlayerStateWallAir(
|
||||
this, mPlayerConst, mPlayerInput, mPlayerTrigger, mPlayerColliderHakoniwa,
|
||||
mPlayerJudgeWallKeep, mPlayerJudgePreInputJump, mPlayerAnimator, mPlayerWallActionHistory,
|
||||
mPlayerActionDiveInWater);
|
||||
mPlayerStateWallCatch = new PlayerStateWallCatch(
|
||||
this, mPlayerConst, mPlayerInput, getPlayerCollision(), mPlayerColliderHakoniwa,
|
||||
mPlayerModelHolder, mPlayerAreaChecker, mPlayerAnimator, mPlayerTrigger,
|
||||
mPlayerJudgePreInputJump, (PlayerJointParamGrab*)mPlayerJointControlKeeper->gap[11]);
|
||||
mPlayerStateGrabCeil = new PlayerStateGrabCeil(
|
||||
this, mPlayerConst, mPlayerInput, mPlayerModelHolder, mPlayerTrigger, getPlayerCollision(),
|
||||
mPlayerAnimator, mPlayerJudgePreInputJump, mBodyHitSensor,
|
||||
(PlayerJointParamGrab*)mPlayerJointControlKeeper->gap[11]);
|
||||
mPlayerStatePoleClimb = new PlayerStatePoleClimb(
|
||||
this, mPlayerConst, mPlayerInput, mPlayerTrigger, mPlayerModelHolder, getPlayerCollision(),
|
||||
mPlayerAnimator, mPlayerWallActionHistory,
|
||||
(PlayerJointParamHandLegAngle*)mPlayerJointControlKeeper->gap[12], mPlayerJudgePreInputJump,
|
||||
mPlayerActionDiveInWater);
|
||||
mPlayerStateHipDrop = new PlayerStateHipDrop(
|
||||
this, mPlayerConst, mPlayerInput, mPlayerColliderHakoniwa, mPlayerAnimator, mPlayerTrigger);
|
||||
mPlayerStateHeadSliding =
|
||||
new PlayerStateHeadSliding(this, mPlayerConst, playerCollision, mPlayerInput,
|
||||
mPlayerActionDiveInWater, mPlayerAnimator);
|
||||
mPlayerStateLongJump = new PlayerStateLongJump(
|
||||
this, mPlayerConst, mPlayerInput, playerCollision, mPlayerTrigger, mPlayerAnimator,
|
||||
mPlayerContinuousLongJump, mPlayerActionDiveInWater);
|
||||
mPlayerStateFallHakoniwa =
|
||||
new PlayerStateFallHakoniwa(this, mPlayerConst, playerCollision, mPlayerInput,
|
||||
mPlayerTrigger, mPlayerAreaChecker, this, mPlayerAnimator);
|
||||
mPlayerStateRise =
|
||||
new PlayerStateRise(this, mPlayerConst, playerCollision, mPlayerInput, mPlayerAnimator);
|
||||
mPlayerStateSwim = new PlayerStateSwim(
|
||||
this, mPlayerConst, playerCollision, mPlayerInput, mPlayerTrigger, mPlayerCarryKeeper,
|
||||
mPlayerModelHolder, mPlayerExternalVelocity, mPlayerAnimator, mPlayerSpinCapAttack,
|
||||
mWaterSurfaceFinder, mPlayerEffect,
|
||||
(PlayerJointParamSwim*)mPlayerJointControlKeeper->gap[14]);
|
||||
mPlayerStateDamageLife =
|
||||
new PlayerStateDamageLife(this, mPlayerConst, playerCollision, mPlayerInput,
|
||||
mPlayerColliderHakoniwa, mPlayerAnimator, mPlayerTrigger);
|
||||
mPlayerStateDamageSwim = new PlayerStateDamageSwim(
|
||||
this, mPlayerConst, playerCollision, mPlayerInput, mPlayerTrigger, mPlayerAnimator,
|
||||
mWaterSurfaceFinder, mPlayerEffect, mPlayerJudgeInWater1, mPlayerJudgeOutInWater);
|
||||
mPlayerStateDamageFire =
|
||||
new PlayerStateDamageFire(this, mPlayerConst, playerCollision, mPlayerInput,
|
||||
mPlayerAnimator, mPlayerJudgeSpeedCheckFall);
|
||||
mPlayerStatePress = new PlayerStatePress(this, playerCollision, mPlayerAnimator);
|
||||
mPlayerStateBind = new PlayerStateBind(this, mPlayerConst, mPlayerInput, mPlayerPuppet,
|
||||
playerCollision, mPlayerTrigger);
|
||||
mPlayerStateHack = new PlayerStateHack(this, mPlayerHackKeeper, mPlayerModelChangerHakoniwa,
|
||||
mPlayerAnimator, mHackCap);
|
||||
mPlayerStateEndHack = new PlayerStateEndHack(this, mPlayerConst, playerCollision, mPlayerInput,
|
||||
mPlayerTrigger, mPlayerAnimator);
|
||||
mPlayerStateCameraSubjective = new PlayerStateCameraSubjective(
|
||||
this, *((al::CameraTicket**)mPlayerJudgeCameraSubjective + 4), mPlayerModelChangerHakoniwa,
|
||||
mPlayerCarryKeeper, mPlayerAnimator, mPlayerConst, playerCollision, mPlayerInput);
|
||||
mPlayerStateAbyss = new PlayerStateAbyss(this, mPlayerConst, mPlayerRecoverySafetyPoint,
|
||||
mPlayerColliderHakoniwa, mPlayerAnimator,
|
||||
mPlayerModelHolder->findModelActor("Normal2D"));
|
||||
|
||||
al::initNerveState(this, mPlayerStateWait, &Wait, "待機");
|
||||
al::initNerveState(this, mPlayerStateWait, &Wait, "待機");
|
||||
al::initNerveState(this, mPlayerStateSquat, &Squat, "しゃがみ");
|
||||
al::initNerveState(this, mPlayerStateRunHakoniwa2D3D, &Run, "走り");
|
||||
al::initNerveState(this, mPlayerStateSlope, &Slope, "坂すべり");
|
||||
al::initNerveState(this, mPlayerStateRolling, &Rolling, "ローリング");
|
||||
al::initNerveState(this, mPlayerStateSpinCap, &SpinCap, "帽子スピン");
|
||||
al::initNerveState(this, mPlayerStateJump, &Jump, "ジャンプ");
|
||||
al::initNerveState(this, mPlayerStateCapCatchPop, &CapCatchPop, "帽子キャッチ浮きあがり");
|
||||
al::initNerveState(this, mPlayerStateWallAir, &WallAir, "壁接触[空中]");
|
||||
al::initNerveState(this, mPlayerStateWallCatch, &WallCatch, "壁つかまり");
|
||||
al::initNerveState(this, mPlayerStateGrabCeil, &GrabCeil, "天井ぶら下がり");
|
||||
al::initNerveState(this, mPlayerStatePoleClimb, &PoleClimb, "ポールつかまり");
|
||||
al::initNerveState(this, mPlayerStateHipDrop, &HipDrop, "ヒップドロップ");
|
||||
al::initNerveState(this, mPlayerStateHeadSliding, &HeadSliding, "ヘッドスライディング");
|
||||
al::initNerveState(this, mPlayerStateLongJump, &LongJump, "幅跳び");
|
||||
al::initNerveState(this, mPlayerStateFallHakoniwa, &Fall, "落下");
|
||||
al::initNerveState(this, mPlayerStateSandSink, &SandSink, "砂沈み");
|
||||
al::initNerveState(this, mActorStateSandGeyser, &SandGeyser, "砂の間欠泉");
|
||||
al::initNerveState(this, mPlayerStateRise, &Rise, "浮き上がり");
|
||||
al::initNerveState(this, mPlayerStateSwim, &Swim, "泳ぎ");
|
||||
al::initNerveState(this, mPlayerStateDamageLife, &Damage, "ダメージ");
|
||||
al::initNerveState(this, mPlayerStateDamageSwim, &DamageSwim, "水中・水面ダメージ");
|
||||
al::initNerveState(this, mPlayerStateDamageFire, &DamageFire, "あちちダメージ");
|
||||
al::initNerveState(this, mPlayerStatePress, &Press, "圧死");
|
||||
al::initNerveState(this, mPlayerStateHack, &Hack, "憑依");
|
||||
al::initNerveState(this, mPlayerStateEndHack, &EndHack, "憑依解除");
|
||||
al::initNerveState(this, mPlayerStateBind, &Bind, "バインド");
|
||||
al::initNerveState(this, mPlayerStateCameraSubjective, &Camera, "主観カメラ");
|
||||
al::initNerveState(this, mPlayerStateAbyss, &Abyss, "奈落死");
|
||||
|
||||
mPlayerEquipmentUser->setPlayerStateRolling(mPlayerStateRolling);
|
||||
|
||||
mPlayerOxygen = new PlayerOxygen();
|
||||
mPlayerOxygen->setup(
|
||||
mPlayerConst->getOxygenNoReduceFrame(), mPlayerConst->getOxygenReduceFrame(),
|
||||
mPlayerConst->getOxygenRecoveryFrame(), mPlayerConst->getOxygenDamageInterval());
|
||||
mPlayerOxygen->reset();
|
||||
|
||||
PlayerJudgeInWater* iceWaterJudge = new PlayerJudgeInWater(
|
||||
this, mPlayerConst, playerCollision, mPlayerAreaChecker, mWaterSurfaceFinder,
|
||||
mPlayerColliderHakoniwa, mPlayerCounterForceRun, true, false, false);
|
||||
mPlayerCounterIceWater = new PlayerCounterIceWater(this, actorInfo, mPlayerConst,
|
||||
mPlayerColliderHakoniwa, iceWaterJudge);
|
||||
mPlayerStainControl =
|
||||
new PlayerStainControl(this, mPlayerModelHolder->findModelActor("Normal"),
|
||||
mPlayerModelChangerHakoniwa, mHackCap, mPlayerEffect);
|
||||
mPlayerJudgeRecoveryLifeFast = new PlayerJudgeRecoveryLifeFast(
|
||||
this, mPlayerDamageKeeper, mPlayerBindKeeper, playerCollision, mPlayerInput,
|
||||
mPlayerHackKeeper, mPlayerStateWait, mPlayerStateSwim, iceWaterJudge);
|
||||
|
||||
mPlayerInfo = new PlayerInfo();
|
||||
mPlayerInfo->mPlayerModelChangerHakoniwa = mPlayerModelChangerHakoniwa;
|
||||
mPlayerInfo->mPlayerOxygen = mPlayerOxygen;
|
||||
mPlayerInfo->mPlayerBindKeeper = mPlayerBindKeeper;
|
||||
mPlayerInfo->mPlayerDamageKeeper = mPlayerDamageKeeper;
|
||||
mPlayerInfo->mPlayerDemoActionFlag = mPlayerDemoActionFlag;
|
||||
mPlayerInfo->mPlayerEquipmentUser = mPlayerEquipmentUser;
|
||||
mPlayerInfo->mHackCap = mHackCap;
|
||||
mPlayerInfo->mWorldEndBorderKeeper = mWorldEndBorderKeeper;
|
||||
mPlayerInfo->mPlayerFormSensorCollisionArranger = mPlayerFormSensorCollisionArranger;
|
||||
mPlayerInfo->mPlayerAnimator = mPlayerAnimator;
|
||||
mPlayerInfo->mPlayerInput = mPlayerInput;
|
||||
mPlayerInfo->mPlayerModelHolder = mPlayerModelHolder;
|
||||
mPlayerInfo->mCeilingCheck = mPlayerColliderHakoniwa;
|
||||
mPlayerInfo->mPlayerHackKeeper = mPlayerHackKeeper;
|
||||
mPlayerInfo->mPlayerCapManHeroEyesControl = mPlayerCapManHeroEyesControl;
|
||||
mPlayerInfo->mPlayerCarryKeeper = mPlayerCarryKeeper;
|
||||
mPlayerInfo->mPlayerJointControlKeeper = mPlayerJointControlKeeper;
|
||||
mPlayerInfo->mPlayerCounterIceWater = mPlayerCounterIceWater;
|
||||
mPlayerInfo->mPlayerStainControl = mPlayerStainControl;
|
||||
mPlayerInfo->mFootPrintHolder = mFootPrintHolder;
|
||||
mPlayerInfo->mBodyHitSensor = mBodyHitSensor;
|
||||
mPlayerInfo->mPlayerRecoverySafetyPoint = mPlayerRecoverySafetyPoint;
|
||||
mPlayerInfo->mCostumeInfo = costumeInfo;
|
||||
mPlayerInfo->mPlayerJudgeCameraInWater =
|
||||
new PlayerJudgeCameraInWater(this, mPlayerJudgeInWater1, mWaterSurfaceFinder);
|
||||
mPlayerInfo->mPlayerJudgeActiveCameraSubjective =
|
||||
new PlayerJudgeActiveCameraSubjective(mPlayerStateCameraSubjective);
|
||||
mPlayerInfo->mPlayerJudgeTalkGround = new PlayerJudgeTalkGround(
|
||||
this, mPlayerModelChangerHakoniwa, mPlayerHackKeeper, mPlayerCarryKeeper, playerCollision,
|
||||
mPlayerInput, mPlayerConst, mPlayerStateWait);
|
||||
mPlayerInfo->mPlayerJudgeTalkSwim =
|
||||
new PlayerJudgeTalkSwim(mPlayerHackKeeper, mPlayerCarryKeeper, mPlayerStateSwim);
|
||||
mPlayerInfo->mPlayerJudgeDead = new PlayerJudgeDead(this);
|
||||
mPlayerInfo->mPlayerJudgeDeadWipeStart = mPlayerJudgeDeadWipeStart;
|
||||
mPlayerInfo->mPlayerJudgeDrawForward =
|
||||
new PlayerJudgeDrawForward(this, mPlayerJudgeDeadWipeStart);
|
||||
mPlayerInfo->mPlayerJudgeSameNervePoleClimb = new PlayerJudgeSameNerve(this, &PoleClimb);
|
||||
mPlayerInfo->mPlayerJudgeSameNerveGrabCeil = new PlayerJudgeSameNerve(this, &GrabCeil);
|
||||
mPlayerInfo->mPlayerJudgeSameNerveWallCatch = new PlayerJudgeSameNerve(this, &WallCatch);
|
||||
mPlayerInfo->mPlayerJudgeSameNerveSwim = new PlayerJudgeSameNerve(this, &Swim);
|
||||
mPlayerInfo->mPlayerJudgeFailureCameraSubjective = new PlayerJudgeFailureCameraSubjective(
|
||||
mPlayerInput, new PlayerJudgeSameNerve(this, &Camera));
|
||||
mPlayerInfo->mPlayerJudgeSafetyPointRecovery = new PlayerJudgeSafetyPointRecovery(
|
||||
new PlayerJudgeSameNerve(this, &Abyss), mPlayerStateAbyss);
|
||||
mPlayerInfo->mPlayerJudgeStatusPoleClimb = new PlayerJudgeStatusPoleClimb(
|
||||
new PlayerJudgeSameNerve(this, &PoleClimb), mPlayerStatePoleClimb);
|
||||
mPlayerInfo->mPlayerJudgePlaySwitchOnAreaWaitAnim =
|
||||
new PlayerJudgePlaySwitchOnAreaWaitAnim(mPlayerStateWait);
|
||||
mPlayerInfo->mPlayerJudgeSleep = new PlayerJudgeSleep(mPlayerStateWait);
|
||||
mPlayerInfo->mPlayerJudgeEnableGuideArrow = new PlayerJudgeEnableGuideArrow(mPlayerPuppet);
|
||||
mPlayerInfo->mPlayerJudgeEnablePeachAmiibo =
|
||||
new PlayerJudgeEnablePeachAmiibo(mPlayerStateDamageFire);
|
||||
mPlayerInfo->mIsMoon = isMoon;
|
||||
|
||||
CapFunction::putOnCapPlayer(mHackCap, mPlayerAnimator);
|
||||
syncSensorAndCollision();
|
||||
makeActorAlive();
|
||||
rs::resetCollision(mPlayerColliderHakoniwa);
|
||||
mGaugeAir = new GaugeAir("酸素タイマー", *al::getLayoutInitInfo(actorInfo));
|
||||
mWaterSurfaceShadow = new WaterSurfaceShadow(actorInfo, "WaterSurfaceShadow");
|
||||
mWaterSurfaceShadow->_10 = {1500.0f, 0.25f, 0.75f};
|
||||
mWaterSurfaceShadow->setScale(0.5f);
|
||||
}
|
||||
|
||||
u32 PlayerActorHakoniwa::getPortNo() const {
|
||||
if (rs::isSeparatePlay(this))
|
||||
return PlayerInput::getSeparatePlay1P();
|
||||
else
|
||||
return PlayerActorBase::getPortNo();
|
||||
}
|
||||
|
||||
IUsePlayerCollision* PlayerActorHakoniwa::getPlayerCollision() const {
|
||||
return mPlayerColliderHakoniwa;
|
||||
}
|
||||
|
||||
PlayerHackKeeper* PlayerActorHakoniwa::getPlayerHackKeeper() const {
|
||||
return mPlayerHackKeeper;
|
||||
}
|
||||
// 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;
|
||||
// void getDemoActor() override;
|
||||
// void* getDemoAnimator() override;
|
||||
// bool isDamageStopDemo() const override;
|
||||
// void* getPlayerPuppet() override;
|
||||
|
||||
PlayerInfo* PlayerActorHakoniwa::getPlayerInfo() const {
|
||||
return mPlayerInfo;
|
||||
}
|
||||
|
||||
// bool checkDeathArea() override;
|
||||
// void sendCollisionMsg() override;
|
||||
// bool receivePushMsg(const al::SensorMsg*, al::HitSensor*, al::HitSensor*, f32) override;
|
||||
|
||||
ActorDimensionKeeper* PlayerActorHakoniwa::getActorDimensionKeeper() const {
|
||||
return mActorDimensionKeeper;
|
||||
}
|
||||
|
||||
// void updateModelShadowDropLength();
|
||||
// void executeAfterCapTarget();
|
||||
// void syncSensorAndCollision();
|
||||
// void checkDamageFromCollision();
|
||||
// void executePreMovementNerveChange();
|
||||
// void updateCarry();
|
||||
|
||||
void sub_71004229D0(al::LiveActor* player, PlayerTrigger* trigger,
|
||||
const IUsePlayerCollision* collision) {
|
||||
trigger->set(PlayerTrigger::EActionTrigger_val8);
|
||||
sead::Vector3f normal = {0.0f, 0.0f, 0.0f};
|
||||
rs::calcGroundNormalOrGravityDir(&normal, player, collision);
|
||||
sead::Vector3f slideDir = {0.0f, 0.0f, 0.0f};
|
||||
if (rs::calcSlideDir(&slideDir, al::getGravity(player), normal)) {
|
||||
sead::Quatf quat = sead::Quatf::unit;
|
||||
al::makeQuatFrontUp(&quat, slideDir, normal);
|
||||
al::updatePoseQuat(player, quat);
|
||||
}
|
||||
al::setNerve(player, &Rolling);
|
||||
}
|
||||
|
||||
void PlayerActorHakoniwa::setNerveOnGround() {
|
||||
if (rs::updateJudgeAndResult(mPlayerJudgeStartWaterSurfaceRun)) {
|
||||
al::setNerve(this, &Run);
|
||||
return;
|
||||
} else if (rs::updateJudgeAndResult(mPlayerJudgeInWater1)) {
|
||||
al::setNerve(this, &Swim);
|
||||
return;
|
||||
} else if (mPlayerCounterForceRun->_0 < 1 &&
|
||||
!rs::isOnGroundRunAngle(this, mPlayerColliderHakoniwa, mPlayerConst)) {
|
||||
al::setNerve(this, &Fall);
|
||||
return;
|
||||
} else if (!rs::isOnGround(this, mPlayerColliderHakoniwa)) {
|
||||
al::setNerve(this, &Fall);
|
||||
return;
|
||||
} else if (rs::updateJudgeAndResult(mPlayerJudgeForceSlopeSlide)) {
|
||||
if (mPlayerCarryKeeper->isCarry())
|
||||
mPlayerCarryKeeper->startCancelAndRelease();
|
||||
al::setNerve(this, &Slope);
|
||||
return;
|
||||
} else if (rs::updateJudgeAndResult(mPlayerJudgeForceRolling)) {
|
||||
sub_71004229D0(this, mPlayerTrigger, mPlayerColliderHakoniwa);
|
||||
return;
|
||||
} else if (rs::updateJudgeAndResult(mPlayerJudgeSandSink)) {
|
||||
al::setNerve(this, &SandSink);
|
||||
return;
|
||||
} else if (rs::updateJudgeAndResult(mPlayerJudgePoleClimb)) {
|
||||
mPlayerStatePoleClimb->setup(
|
||||
mPlayerJudgePoleClimb->mCollisionParts, mPlayerJudgePoleClimb->_58,
|
||||
mPlayerJudgePoleClimb->_64, mPlayerJudgePoleClimb->_70,
|
||||
mPlayerJudgePoleClimb->mPoleCodeAngleOffsetCeiling, mPlayerJudgePoleClimb->_7C,
|
||||
mPlayerJudgePoleClimb->mMaterialCodeCeiling);
|
||||
al::setNerve(this, &PoleClimb);
|
||||
return;
|
||||
} else if (rs::updateJudgeAndResult(mPlayerJudgeGrabCeil)) {
|
||||
mPlayerStateGrabCeil->setup(mPlayerJudgeGrabCeil->_40, mPlayerJudgeGrabCeil->_48,
|
||||
mPlayerJudgeGrabCeil->_54, mPlayerJudgeGrabCeil->_60);
|
||||
al::setNerve(this, &GrabCeil);
|
||||
return;
|
||||
} else if (!rs::updateJudgeAndResult(mPlayerJudgeEnableStandUp)) {
|
||||
if (mPlayerCarryKeeper->isCarry())
|
||||
mPlayerCarryKeeper->startCancelAndRelease();
|
||||
rs::cutVerticalVelocityGroundNormal(this, getPlayerCollision());
|
||||
al::setNerve(this, &Squat);
|
||||
return;
|
||||
} else if (rs::updateJudgeAndResult(mPlayerJudgePreInputJump)) {
|
||||
al::setNerve(this, &Jump);
|
||||
return;
|
||||
} else if (rs::updateJudgeAndResult(mPlayerJudgeStartRun)) {
|
||||
al::setNerve(this, &Run);
|
||||
return;
|
||||
} else if (!rs::updateJudgeAndResult(mPlayerJudgeStartSquat) ||
|
||||
rs::isJudge(mPlayerJudgeForceLand)) {
|
||||
al::setNerve(this, &Wait);
|
||||
return;
|
||||
} else if (!rs::isJustLand(mPlayerColliderHakoniwa) || al::isNerve(this, &LongJump)) {
|
||||
al::setNerve(this, &Squat);
|
||||
return;
|
||||
} else {
|
||||
if (mPlayerCarryKeeper->isCarry())
|
||||
mPlayerCarryKeeper->startCancelAndRelease();
|
||||
al::setNerve(this, &Slope);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 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 PlayerActorHakoniwa::tryChangeNerveFromAir() {
|
||||
if(rs::updateJudgeAndResult(mPlayerJudgeForceSlopeSlide)) {
|
||||
if (mPlayerCarryKeeper->isCarry())
|
||||
mPlayerCarryKeeper->startCancelAndRelease();
|
||||
al::setNerve(this, &Slope);
|
||||
return true;
|
||||
}
|
||||
if(rs::updateJudgeAndResult(mPlayerJudgeInvalidateInputFall)) {
|
||||
mPlayerInput->convergedInUpdateToDisableInput = 1;
|
||||
mPlayerInput->mIsDisableInput = true;
|
||||
mPlayerInput->usedInUpdate = false;
|
||||
al::setNerve(this, &Fall);
|
||||
return true;
|
||||
}
|
||||
if(!al::isNerve(this, &SpinCap) && tryActionCapSpinAttackImpl(true)) {
|
||||
al::setNerve(this, &SpinCap);
|
||||
return true;
|
||||
}
|
||||
if(!al::isNerve(this, &LongJump) && rs::updateJudgeAndResult(mPlayerJudgeStartHipDrop)) {
|
||||
al::setNerve(this, &HipDrop);
|
||||
return true;
|
||||
}
|
||||
if(rs::updateJudgeAndResult(mPlayerJudgePoleClimb)) {
|
||||
mPlayerStatePoleClimb->setup(
|
||||
mPlayerJudgePoleClimb->mCollisionParts, mPlayerJudgePoleClimb->_58,
|
||||
mPlayerJudgePoleClimb->_64, mPlayerJudgePoleClimb->_70,
|
||||
mPlayerJudgePoleClimb->mPoleCodeAngleOffsetCeiling, mPlayerJudgePoleClimb->_7C,
|
||||
mPlayerJudgePoleClimb->mMaterialCodeCeiling);
|
||||
al::setNerve(this, &PoleClimb);
|
||||
return true;
|
||||
}
|
||||
if((!al::isNerve(this, &GrabCeil) || mPlayerStateGrabCeil->isEnableNextGrabCeil()) && rs::updateJudgeAndResult(mPlayerJudgeGrabCeil)) {
|
||||
mPlayerStateGrabCeil->setup(mPlayerJudgeGrabCeil->_40, mPlayerJudgeGrabCeil->_48,
|
||||
mPlayerJudgeGrabCeil->_54, mPlayerJudgeGrabCeil->_60);
|
||||
al::setNerve(this, &GrabCeil);
|
||||
return true;
|
||||
}
|
||||
if(al::isNerve(this, &LongJump) && rs::updateJudgeAndResult(mPlayerJudgeWallHitDown)) {
|
||||
mPlayerTrigger->set(PlayerTrigger::EActionTrigger_val10);
|
||||
if(mPlayerEquipmentUser->getEquipmentSensor() && mPlayerCounterForceRun->_0 >= 1)
|
||||
mPlayerEquipmentUser->cancelEquip();
|
||||
al::setNerve(this, &Damage);
|
||||
return true;
|
||||
}
|
||||
if(rs::updateJudgeAndResult(mPlayerJudgeWallCatch)) {
|
||||
mPlayerStateWallCatch->setup(mPlayerJudgeWallCatch->mCollidedWallPart, mPlayerJudgeWallCatch->_60,
|
||||
-mPlayerJudgeWallCatch->_6C, mPlayerJudgeWallCatch->_78);
|
||||
al::setNerve(this, &WallCatch);
|
||||
return true;
|
||||
}
|
||||
if(!al::isNerve(this, &WallAir) && rs::updateJudgeAndResult(mPlayerJudgeWallKeep)) {
|
||||
al::setNerve(this, &WallAir);
|
||||
return true;
|
||||
}
|
||||
if(rs::updateJudgeAndResult(mPlayerJudgeCapCatchPop)) {
|
||||
al::setNerve(this, &CapCatchPop);
|
||||
return true;
|
||||
}
|
||||
if(rs::updateJudgeAndResult(mPlayerJudgeStartWaterSurfaceRun)) {
|
||||
al::setNerve(this, &Run);
|
||||
return true;
|
||||
}
|
||||
if(rs::updateJudgeAndResult(mPlayerJudgeInWater1)) {
|
||||
if(mPlayerActionDiveInWater->isDiveInWaterAnim())
|
||||
mPlayerTrigger->set(PlayerTrigger::EActionTrigger_val9);
|
||||
al::setNerve(this, &Swim);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 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);
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "Util/IUseDimension.h"
|
||||
|
||||
namespace al {
|
||||
class ComboCounter;
|
||||
class FootPrintHolder;
|
||||
class HitSensor;
|
||||
class WaterSurfaceFinder;
|
||||
|
|
@ -130,128 +131,216 @@ class PlayerJudgeWallKeep;
|
|||
|
||||
class PlayerActorHakoniwa : public PlayerActorBase, public IUseDimension {
|
||||
public:
|
||||
PlayerInfo* mPlayerInfo;
|
||||
PlayerConst* mPlayerConst;
|
||||
PlayerInput* mPlayerInput;
|
||||
PlayerTrigger* mPlayerTrigger;
|
||||
HackCap* mHackCap;
|
||||
ActorDimensionKeeper* mActorDimensionKeeper;
|
||||
PlayerModelHolder* mPlayerModelHolder;
|
||||
PlayerModelChangerHakoniwa* mPlayerModelChangerHakoniwa;
|
||||
PlayerAnimator* mPlayerAnimator;
|
||||
PlayerColliderHakoniwa* mPlayerColliderHakoniwa;
|
||||
PlayerPuppet* mPlayerPuppet;
|
||||
PlayerAreaChecker* mPlayerAreaChecker;
|
||||
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;
|
||||
al::FootPrintHolder* mFootPrintHolder;
|
||||
GaugeAir* mGaugeAir;
|
||||
WaterSurfaceShadow* mWaterSurfaceShadow;
|
||||
WorldEndBorderKeeper* mWorldEndBorderKeeper;
|
||||
void* gap;
|
||||
PlayerSeCtrl* mPlayerSeCtrl;
|
||||
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;
|
||||
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;
|
||||
HackCapJudgePreInputHoveringJump* mHackCapJudgePreInputHoveringJump;
|
||||
HackCapJudgePreInputSeparateThrow* mHackCapJudgePreInputSeparateThrow;
|
||||
HackCapJudgePreInputSeparateJump* mHackCapJudgePreInputSeparateJump;
|
||||
PlayerJudgeWallCatch* mPlayerJudgeWallCatch;
|
||||
PlayerJudgeWallCatchInputDir* mPlayerJudgeWallCatchInputDir;
|
||||
PlayerJudgeWallHitDown* mPlayerJudgeWallHitDown;
|
||||
PlayerJudgeWallHitDownForceRun* mPlayerJudgeWallHitDownForceRun;
|
||||
PlayerJudgeWallHitDownRolling* mPlayerJudgeWallHitDownRolling;
|
||||
PlayerJudgeWallKeep* mPlayerJudgeWallKeep;
|
||||
void* gap_2;
|
||||
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;
|
||||
void getDemoActor() override;
|
||||
void* getDemoAnimator() override;
|
||||
bool isDamageStopDemo() const override;
|
||||
void* 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* mPlayerInfo = nullptr;
|
||||
PlayerConst* mPlayerConst = nullptr;
|
||||
PlayerInput* mPlayerInput = nullptr;
|
||||
PlayerTrigger* mPlayerTrigger = nullptr;
|
||||
HackCap* mHackCap = nullptr;
|
||||
ActorDimensionKeeper* mActorDimensionKeeper = nullptr;
|
||||
PlayerModelHolder* mPlayerModelHolder = nullptr;
|
||||
PlayerModelChangerHakoniwa* mPlayerModelChangerHakoniwa = nullptr;
|
||||
PlayerAnimator* mPlayerAnimator = nullptr;
|
||||
PlayerColliderHakoniwa* mPlayerColliderHakoniwa = nullptr;
|
||||
PlayerPuppet* mPlayerPuppet = nullptr;
|
||||
PlayerAreaChecker* mPlayerAreaChecker = nullptr;
|
||||
al::WaterSurfaceFinder* mWaterSurfaceFinder = nullptr;
|
||||
PlayerOxygen* mPlayerOxygen = nullptr;
|
||||
PlayerDamageKeeper* mPlayerDamageKeeper = nullptr;
|
||||
PlayerDemoActionFlag* mPlayerDemoActionFlag = nullptr;
|
||||
PlayerCapActionHistory* mPlayerCapActionHistory = nullptr;
|
||||
PlayerCapManHeroEyesControl* mPlayerCapManHeroEyesControl = nullptr;
|
||||
PlayerContinuousJump* mPlayerContinuousJump = nullptr;
|
||||
PlayerContinuousLongJump* mPlayerContinuousLongJump = nullptr;
|
||||
PlayerCounterAfterUpperPunch* mPlayerCounterAfterUpperPunch = nullptr;
|
||||
PlayerCounterForceRun* mPlayerCounterForceRun = nullptr;
|
||||
PlayerCounterIceWater* mPlayerCounterIceWater = nullptr;
|
||||
PlayerCounterQuickTurnJump* mPlayerCounterQuickTurnJump = nullptr;
|
||||
PlayerWallActionHistory* mPlayerWallActionHistory = nullptr;
|
||||
PlayerBindKeeper* mPlayerBindKeeper = nullptr;
|
||||
PlayerCarryKeeper* mPlayerCarryKeeper = nullptr;
|
||||
PlayerEquipmentUser* mPlayerEquipmentUser = nullptr;
|
||||
PlayerHackKeeper* mPlayerHackKeeper = nullptr;
|
||||
PlayerFormSensorCollisionArranger* mPlayerFormSensorCollisionArranger = nullptr;
|
||||
PlayerJumpMessageRequest* mPlayerJumpMessageRequest = nullptr;
|
||||
PlayerSandSinkAffect* mPlayerSandSinkAffect = nullptr;
|
||||
PlayerSpinCapAttack* mPlayerSpinCapAttack = nullptr;
|
||||
PlayerActionDiveInWater* mPlayerActionDiveInWater = nullptr;
|
||||
PlayerEffect* mPlayerEffect = nullptr;
|
||||
PlayerEyeSensorHitHolder* mPlayerEyeSensorHitHolder = nullptr;
|
||||
PlayerPushReceiver* mPlayerPushReceiver = nullptr;
|
||||
PlayerHitPush* mPlayerHitPush = nullptr;
|
||||
PlayerExternalVelocity* mPlayerExternalVelocity = nullptr;
|
||||
PlayerJointControlKeeper* mPlayerJointControlKeeper = nullptr;
|
||||
PlayerPainPartsKeeper* mPlayerPainPartsKeeper = nullptr;
|
||||
PlayerRecoverySafetyPoint* mPlayerRecoverySafetyPoint = nullptr;
|
||||
PlayerRippleGenerator* mPlayerRippleGenerator = nullptr;
|
||||
PlayerSeparateCapFlag* mPlayerSeparateCapFlag = nullptr;
|
||||
PlayerWetControl* mPlayerWetControl = nullptr;
|
||||
PlayerStainControl* mPlayerStainControl = nullptr;
|
||||
al::FootPrintHolder* mFootPrintHolder = nullptr;
|
||||
GaugeAir* mGaugeAir = nullptr;
|
||||
WaterSurfaceShadow* mWaterSurfaceShadow = nullptr;
|
||||
WorldEndBorderKeeper* mWorldEndBorderKeeper = nullptr;
|
||||
al::ComboCounter* mComboCounter;
|
||||
PlayerSeCtrl* mPlayerSeCtrl = nullptr;
|
||||
al::HitSensor* mBodyHitSensor = nullptr;
|
||||
bool mIsLongShadow = false;
|
||||
PlayerStateWait* mPlayerStateWait = nullptr;
|
||||
PlayerStateSquat* mPlayerStateSquat = nullptr;
|
||||
PlayerStateRunHakoniwa2D3D* mPlayerStateRunHakoniwa2D3D = nullptr;
|
||||
PlayerStateSlope* mPlayerStateSlope = nullptr;
|
||||
PlayerStateRolling* mPlayerStateRolling = nullptr;
|
||||
PlayerStateSpinCap* mPlayerStateSpinCap = nullptr;
|
||||
PlayerStateJump* mPlayerStateJump = nullptr;
|
||||
PlayerStateCapCatchPop* mPlayerStateCapCatchPop = nullptr;
|
||||
PlayerStateWallAir* mPlayerStateWallAir = nullptr;
|
||||
PlayerStateWallCatch* mPlayerStateWallCatch = nullptr;
|
||||
PlayerStateGrabCeil* mPlayerStateGrabCeil = nullptr;
|
||||
PlayerStatePoleClimb* mPlayerStatePoleClimb = nullptr;
|
||||
PlayerStateHipDrop* mPlayerStateHipDrop = nullptr;
|
||||
PlayerStateHeadSliding* mPlayerStateHeadSliding = nullptr;
|
||||
PlayerStateLongJump* mPlayerStateLongJump = nullptr;
|
||||
PlayerStateFallHakoniwa* mPlayerStateFallHakoniwa = nullptr;
|
||||
PlayerStateSandSink* mPlayerStateSandSink = nullptr;
|
||||
ActorStateSandGeyser* mActorStateSandGeyser = nullptr;
|
||||
PlayerStateRise* mPlayerStateRise = nullptr;
|
||||
PlayerStateSwim* mPlayerStateSwim = nullptr;
|
||||
PlayerStateDamageLife* mPlayerStateDamageLife = nullptr;
|
||||
PlayerStateDamageSwim* mPlayerStateDamageSwim = nullptr;
|
||||
PlayerStateDamageFire* mPlayerStateDamageFire = nullptr;
|
||||
PlayerStatePress* mPlayerStatePress = nullptr;
|
||||
PlayerStateBind* mPlayerStateBind = nullptr;
|
||||
PlayerStateHack* mPlayerStateHack = nullptr;
|
||||
PlayerStateEndHack* mPlayerStateEndHack = nullptr;
|
||||
PlayerStateCameraSubjective* mPlayerStateCameraSubjective = nullptr;
|
||||
PlayerStateAbyss* mPlayerStateAbyss = nullptr;
|
||||
PlayerJudgeAirForceCount* mPlayerJudgeAirForceCount = nullptr;
|
||||
PlayerJudgeCameraSubjective* mPlayerJudgeCameraSubjective = nullptr;
|
||||
PlayerJudgeCapCatchPop* mPlayerJudgeCapCatchPop = nullptr;
|
||||
PlayerJudgeDeadWipeStart* mPlayerJudgeDeadWipeStart = nullptr;
|
||||
PlayerJudgeDirectRolling* mPlayerJudgeDirectRolling = nullptr;
|
||||
PlayerJudgeEnableStandUp* mPlayerJudgeEnableStandUp = nullptr;
|
||||
PlayerJudgeForceLand* mPlayerJudgeForceLand = nullptr;
|
||||
PlayerJudgeForceSlopeSlide* mPlayerJudgeForceSlopeSlide = nullptr;
|
||||
PlayerJudgeForceRolling* mPlayerJudgeForceRolling = nullptr;
|
||||
PlayerJudgeGrabCeil* mPlayerJudgeGrabCeil = nullptr;
|
||||
PlayerJudgeInWater* mPlayerJudgeInWater1 = nullptr;
|
||||
PlayerJudgeInWater* mPlayerJudgeInWater2 = nullptr;
|
||||
PlayerJudgeInWater* mPlayerJudgeInWater3 = nullptr;
|
||||
PlayerJudgeInWater* mPlayerJudgeInWater4 = nullptr;
|
||||
PlayerJudgeInvalidateInputFall* mPlayerJudgeInvalidateInputFall = nullptr;
|
||||
PlayerJudgeLongFall* mPlayerJudgeLongFall = nullptr;
|
||||
PlayerJudgeOutInWater* mPlayerJudgeOutInWater = nullptr;
|
||||
PlayerJudgeRecoveryLifeFast* mPlayerJudgeRecoveryLifeFast = nullptr;
|
||||
PlayerJudgeSandSink* mPlayerJudgeSandSink = nullptr;
|
||||
PlayerJudgeSpeedCheckFall* mPlayerJudgeSpeedCheckFall = nullptr;
|
||||
PlayerJudgeStartHipDrop* mPlayerJudgeStartHipDrop = nullptr;
|
||||
PlayerJudgeStartRise* mPlayerJudgeStartRise = nullptr;
|
||||
PlayerJudgeStartRolling* mPlayerJudgeStartRolling = nullptr;
|
||||
PlayerJudgeStartRun* mPlayerJudgeStartRun = nullptr;
|
||||
PlayerJudgeStartSquat* mPlayerJudgeStartSquat = nullptr;
|
||||
PlayerJudgeStartWaterSurfaceRun* mPlayerJudgeStartWaterSurfaceRun = nullptr;
|
||||
PlayerJudgeSlopeSlide* mPlayerJudgeSlopeSlide = nullptr;
|
||||
PlayerJudgePoleClimb* mPlayerJudgePoleClimb = nullptr;
|
||||
PlayerJudgePreInputJump* mPlayerJudgePreInputJump = nullptr;
|
||||
PlayerJudgePreInputCapThrow* mPlayerJudgePreInputCapThrow = nullptr;
|
||||
PlayerJudgePreInputHackAction* mPlayerJudgePreInputHackAction = nullptr;
|
||||
HackCapJudgePreInputHoveringJump* mHackCapJudgePreInputHoveringJump = nullptr;
|
||||
HackCapJudgePreInputSeparateThrow* mHackCapJudgePreInputSeparateThrow = nullptr;
|
||||
HackCapJudgePreInputSeparateJump* mHackCapJudgePreInputSeparateJump = nullptr;
|
||||
PlayerJudgeWallCatch* mPlayerJudgeWallCatch = nullptr;
|
||||
PlayerJudgeWallCatchInputDir* mPlayerJudgeWallCatchInputDir = nullptr;
|
||||
PlayerJudgeWallHitDown* mPlayerJudgeWallHitDown = nullptr;
|
||||
PlayerJudgeWallHitDownForceRun* mPlayerJudgeWallHitDownForceRun = nullptr;
|
||||
PlayerJudgeWallHitDownRolling* mPlayerJudgeWallHitDownRolling = nullptr;
|
||||
PlayerJudgeWallKeep* mPlayerJudgeWallKeep = nullptr;
|
||||
bool gap_2 = false;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -21,6 +21,13 @@ public:
|
|||
void endEquip();
|
||||
void noticeDamage();
|
||||
|
||||
void setPlayerStateRolling(PlayerStateRolling* state) {
|
||||
mPlayerStateRolling = state;
|
||||
}
|
||||
al::HitSensor* getEquipmentSensor() {
|
||||
return mEquipmentSensor;
|
||||
}
|
||||
|
||||
private:
|
||||
al::HitSensor* mSourceSensor = nullptr;
|
||||
al::HitSensor* mEquipmentSensor = nullptr;
|
||||
|
|
|
|||
|
|
@ -1,10 +1,23 @@
|
|||
#pragma once
|
||||
|
||||
#include "Library/Audio/AudioKeeper.h"
|
||||
#include "Library/LiveActor/ActorInitInfo.h"
|
||||
#include "Player/PlayerConst.h"
|
||||
#include "Player/PlayerCostumeInfo.h"
|
||||
|
||||
namespace al {
|
||||
class LiveActor;
|
||||
class ActorDitherAnimator;
|
||||
}
|
||||
|
||||
class PlayerFunction {
|
||||
public:
|
||||
static u32 getPlayerInputPort(const al::LiveActor*);
|
||||
static PlayerCostumeInfo* initMarioModelActor(al::LiveActor *,al::ActorInitInfo const&,char const*,char const*,al::AudioKeeper *,bool);
|
||||
static void initMarioModelActor2D(al::LiveActor *,al::ActorInitInfo const&,char const*,bool);
|
||||
static bool isInvisibleCap(PlayerCostumeInfo const*);
|
||||
static PlayerConst* createMarioConst(char const*);
|
||||
static al::ActorDitherAnimator* createPlayerDitherAnimator(al::LiveActor *,float);
|
||||
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ bool PlayerInput::isHoldJump() const {
|
|||
if (mIsDisableInput)
|
||||
return false;
|
||||
auto* dimension = mDimension;
|
||||
if (dimension && rs::is2D(dimension) && rs::isIn2DArea(dimension) && _88 > 0) {
|
||||
if (dimension && rs::is2D(dimension) && rs::isIn2DArea(dimension) && someIntConverged15 > 0) {
|
||||
return true;
|
||||
}
|
||||
return PlayerInputFunction::isHoldJump(mLiveActor,
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ public:
|
|||
bool isTriggerSpinCap() const;
|
||||
bool isTriggerToggleStayCap() const;
|
||||
bool isTriggerSpinAttackSeparate() const;
|
||||
s32 getSeparatePlay1P();
|
||||
static s32 getSeparatePlay1P();
|
||||
bool isTriggerCapReturn() const;
|
||||
bool isTriggerCapAttackSeparate() const;
|
||||
bool isTriggerSwingActionCap() const;
|
||||
|
|
@ -74,17 +74,48 @@ public:
|
|||
bool isThrowTypeSpiral(const sead::Vector2f&) const;
|
||||
bool isThrowTypeRolling(const sead::Vector2f&) const;
|
||||
|
||||
private:
|
||||
public:
|
||||
const al::LiveActor* mLiveActor;
|
||||
const IUsePlayerCollision* mPlayerCollision;
|
||||
const IUseDimension* mDimension;
|
||||
void* gap[11];
|
||||
bool isMove = 0;
|
||||
int convergeInUpdateWallAlong = 0;
|
||||
float readInWalls = 0.0f;
|
||||
sead::Vector2f anotherVector2ForWalls = {0.0f, 0.0f};
|
||||
float somethingHere = 0.0f;
|
||||
sead::Vector2f anotherVector2ForWalls2 = {0.0f, 0.0f};
|
||||
bool hasSomeSnapMoveDirArea = false;
|
||||
sead::Vector3f someSnapMoveAreaDirVector = {0.0f, 0.0f, 0.0f};
|
||||
sead::Vector2f usedInUpdateForAngles = {0.0f, 0.0f};
|
||||
float usedInUpdateForSomething = 0.0f;
|
||||
float* arrayOfSizeF0 = nullptr;
|
||||
u64 constant60maybe = 0;
|
||||
u32 somethingAboutArray = 0;
|
||||
al::SpinInputAnalyzer* mSpinInputAnalyzer;
|
||||
al::JoyPadAccelPoseAnalyzer* mJoyPadAccelPoseAnalyzer1;
|
||||
al::JoyPadAccelPoseAnalyzer* mJoyPadAccelPoseAnalyzer2;
|
||||
s32 _88;
|
||||
void* gap2[1];
|
||||
bool mIsDisableInput;
|
||||
void* gap3[20];
|
||||
int someIntConverged15 = 0;
|
||||
int somethingAboutP0 = 0;
|
||||
int somethingAboutP1 = 0;
|
||||
int convergedInUpdateToDisableInput = 0;
|
||||
bool mIsDisableInput = false;
|
||||
bool usedInUpdate = false;
|
||||
bool isInInvalidatePressStickCameraArea = false;
|
||||
bool flag2 = false;
|
||||
bool somethingFromUpdate = false;
|
||||
sead::Vector2f someVectorUsedInUpdate = {0.0f, 0.0f};
|
||||
sead::Vector3f someVectorEndOfUpdate = {0.0f, 0.0f, 0.0f};
|
||||
sead::Vector3f someVectorEndOfUpdate2 = {0.0f, 0.0f, 0.0f};
|
||||
sead::Vector3f someVectorEndOfUpdate3 = {0.0f, 0.0f, 0.0f};
|
||||
bool someFlags[2] = {false, false};
|
||||
sead::Vector2f someVector2 = {0.0f, 0.0f};
|
||||
sead::Vector2f some2Vector = {0.0f, 0.0f};
|
||||
u64 placeholder4[3] = {0, 0, 0};
|
||||
sead::Vector3f someVector = {0.0f, 0.0f, 0.0f};
|
||||
sead::Vector3f someVector4 = {0.0f, 0.0f, 0.0f};
|
||||
sead::Vector3f someVector5 = {0.0f, 0.0f, 0.0f};
|
||||
sead::Vector3f someVector3 = {0.0f, 0.0f, 0.0f};
|
||||
sead::Vector3f someVectorCollidedGroundPos = {0.0f, 0.0f, 0.0f};
|
||||
sead::Vector3f someVectorCollidedGroundNormal = {0.0f, 0.0f, 0.0f};
|
||||
};
|
||||
static_assert(sizeof(PlayerInput) == 0x140);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,11 @@ class PlayerTrigger {
|
|||
public:
|
||||
enum ECollisionTrigger : u32 {};
|
||||
enum EAttackSensorTrigger : u32 {};
|
||||
enum EActionTrigger : u32 {};
|
||||
enum EActionTrigger : u32 {
|
||||
EActionTrigger_val8 = 8,
|
||||
EActionTrigger_val9 = 9,
|
||||
EActionTrigger_val10 = 10,
|
||||
};
|
||||
enum EReceiveSensorTrigger : u32 {};
|
||||
enum EPreMovementTrigger : u32 {};
|
||||
enum EDemoEndTrigger : u32 {};
|
||||
|
|
|
|||
1303
src/PlayerUtil.h
Normal file
1303
src/PlayerUtil.h
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1 +1 @@
|
|||
Subproject commit 8a19eb879e94ff19bcc5fb59c0ce3336ce3214a9
|
||||
Subproject commit 10d059d618920b5fb416c192548b96559e861289
|
||||
Loading…
Reference in a new issue