1#include "Player/PlayerJudgeLongFall.h"
2
3#include "Player/IPlayerModelChanger.h"
4#include "Player/IUsePlayerFallDistanceCheck.h"
5#include "Player/PlayerBindKeeper.h"
6#include "Player/PlayerConst.h"
7#include "Player/PlayerFunction.h"
8#include "Player/PlayerHackKeeper.h"
9
10PlayerJudgeLongFall::PlayerJudgeLongFall(const al::LiveActor* player, const PlayerConst* pConst,
11 const IUsePlayerFallDistanceCheck* fallDistanceCheck,
12 const PlayerHackKeeper* hackKeeper,
13 const PlayerBindKeeper* bindKeeper,
14 const IPlayerModelChanger* modelChanger)
15 : mPlayer(player), mConst(pConst), mFallDistanceCheck(fallDistanceCheck),
16 mHackKeeper(hackKeeper), mBindKeeper(bindKeeper), mModelChanger(modelChanger) {}
17
18bool PlayerJudgeLongFall::judge() const {
19 if (PlayerFunction::isPlayerDeadStatus(player: mPlayer))
20 return false;
21
22 if (mModelChanger->is2DModel())
23 return false;
24 if (mBindKeeper->getBindSensor() != nullptr)
25 return false;
26 if (mHackKeeper->getUnkHitSensor() != nullptr)
27 return false;
28
29 f32 fallen = mFallDistanceCheck->getFallDistance();
30 f32 threshold = mConst->getLongFallDistance();
31 return fallen >= threshold;
32}
33