Player: Implement PlayerJudgeSlopeSlide (#135)

This commit is contained in:
MonsterDruide1 2024-08-08 13:05:12 +02:00 committed by GitHub
parent a0b8e01c79
commit e8d3b4d060
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 62 additions and 4 deletions

View File

@ -27935,10 +27935,10 @@ Address,Quality,Size,Name
0x000000710045b0d8,U,000008,_ZNK16PlayerJudgeSleep5judgeEv
0x000000710045b0e0,U,000004,_ZN16PlayerJudgeSleep5resetEv
0x000000710045b0e4,U,000004,_ZN16PlayerJudgeSleep6updateEv
0x000000710045b0e8,U,000032,_ZN21PlayerJudgeSlopeSlideC1EPKN2al9LiveActorEPK11PlayerConstPK11PlayerInputPK19IUsePlayerCollisionPK19IPlayerModelChanger
0x000000710045b108,U,000008,_ZN21PlayerJudgeSlopeSlide5resetEv
0x000000710045b110,U,000088,_ZN21PlayerJudgeSlopeSlide6updateEv
0x000000710045b168,U,000008,_ZNK21PlayerJudgeSlopeSlide5judgeEv
0x000000710045b0e8,O,000032,_ZN21PlayerJudgeSlopeSlideC1EPKN2al9LiveActorEPK11PlayerConstPK11PlayerInputPK19IUsePlayerCollisionPK19IPlayerModelChanger
0x000000710045b108,O,000008,_ZN21PlayerJudgeSlopeSlide5resetEv
0x000000710045b110,O,000088,_ZN21PlayerJudgeSlopeSlide6updateEv
0x000000710045b168,O,000008,_ZNK21PlayerJudgeSlopeSlide5judgeEv
0x000000710045b170,U,000036,_ZN24PlayerJudgeSlopeSlideRunC1EPKN2al9LiveActorEPK11PlayerConstPK11PlayerInputPK19IUsePlayerCollision
0x000000710045b194,U,000008,_ZN24PlayerJudgeSlopeSlideRun5resetEv
0x000000710045b19c,U,000252,_ZN24PlayerJudgeSlopeSlideRun6updateEv

Can't render this file because it is too large.

View File

@ -0,0 +1,27 @@
#include "Player/PlayerJudgeSlopeSlide.h"
#include "Player/IPlayerModelChanger.h"
#include "Player/PlayerInput.h"
#include "Util/PlayerCollisionUtil.h"
PlayerJudgeSlopeSlide::PlayerJudgeSlopeSlide(const al::LiveActor* player, const PlayerConst* pConst,
const PlayerInput* input,
const IUsePlayerCollision* collider,
const IPlayerModelChanger* modelChanger)
: mPlayer(player), mConst(pConst), mInput(input), mCollider(collider),
mModelChanger(modelChanger) {}
void PlayerJudgeSlopeSlide::reset() {
mIsJudge = false;
}
void PlayerJudgeSlopeSlide::update() {
mIsJudge = false;
if (!mModelChanger->is2DModel() && mInput->isHoldHipDrop() &&
rs::isOnGroundSlopeSlideStart(mPlayer, mCollider, mConst))
mIsJudge = true;
}
bool PlayerJudgeSlopeSlide::judge() const {
return mIsJudge;
}

View File

@ -0,0 +1,29 @@
#pragma once
#include "Player/IJudge.h"
namespace al {
class LiveActor;
}
class PlayerConst;
class PlayerInput;
class IUsePlayerCollision;
class IPlayerModelChanger;
class PlayerJudgeSlopeSlide : public IJudge {
public:
PlayerJudgeSlopeSlide(const al::LiveActor* player, const PlayerConst* pConst,
const PlayerInput* input, const IUsePlayerCollision* collider,
const IPlayerModelChanger* modelChanger);
void reset() override;
void update() override;
bool judge() const override;
private:
const al::LiveActor* mPlayer;
const PlayerConst* mConst;
const PlayerInput* mInput;
const IUsePlayerCollision* mCollider;
const IPlayerModelChanger* mModelChanger;
bool mIsJudge = false;
};

View File

@ -28,6 +28,8 @@ const al::CollisionParts* getCollidedCeilingCollisionParts(const IUsePlayerColli
bool isCollidedGround(const IUsePlayerCollision*);
bool isCollidedGroundRunAngle(const al::LiveActor*, const IUsePlayerCollision*, const PlayerConst*);
bool isOnGroundSlopeSlideStart(const al::LiveActor*, const IUsePlayerCollision*,
const PlayerConst*);
bool isOnGroundForceSlideCode(const al::LiveActor*, const IUsePlayerCollision*, const PlayerConst*);
bool isOnGroundForceRollingCode(const al::LiveActor*, const IUsePlayerCollision*);
bool isOnGroundLessAngle(const al::LiveActor*, const IUsePlayerCollision*, f32);