1#include "Player/PlayerActionDiveInWater.h"
2
3#include "Player/IPlayerModelChanger.h"
4#include "Player/PlayerAnimator.h"
5#include "Player/PlayerCarryKeeper.h"
6#include "Player/PlayerJudgeDiveInWater.h"
7#include "Util/JudgeUtil.h"
8
9PlayerActionDiveInWater::PlayerActionDiveInWater(PlayerAnimator* animator,
10 const IPlayerModelChanger* modelChanger,
11 const PlayerCarryKeeper* carryKeeper,
12 const PlayerJudgeDiveInWater* judgeDiveInWater)
13 : mAnimator(animator), mModelChanger(modelChanger), mCarryKeeper(carryKeeper),
14 mJudgeDiveInWater(judgeDiveInWater) {}
15
16bool PlayerActionDiveInWater::tryChangeDiveInWaterAnim() {
17 if (!judgeEnableDiveInWater())
18 return false;
19
20 mAnimator->startAnim(animName: "DiveInWater");
21 return true;
22}
23
24bool PlayerActionDiveInWater::judgeEnableDiveInWater() const {
25 return !mModelChanger->is2DModel() && !mCarryKeeper->isCarry() &&
26 rs::isJudge(judge: mJudgeDiveInWater) && !isDiveInWaterAnim();
27}
28
29bool PlayerActionDiveInWater::isDiveInWaterAnim() const {
30 return mAnimator->isAnim(animName: "DiveInWater");
31}
32