1#include "Player/PlayerJudgeDeadWipeStart.h"
2
3#include "Player/PlayerConst.h"
4#include "Player/PlayerFunction.h"
5
6PlayerJudgeDeadWipeStart::PlayerJudgeDeadWipeStart(const al::LiveActor* playerActor,
7 const PlayerConst* playerConst)
8 : mPlayerActor(playerActor), mPlayerConst(playerConst) {}
9
10void PlayerJudgeDeadWipeStart::reset() {
11 mDeathType = DeathType::Damage;
12 mCounter = -1;
13}
14
15void PlayerJudgeDeadWipeStart::update() {
16 if (PlayerFunction::isPlayerDeadStatus(player: mPlayerActor))
17 mCounter++;
18}
19
20bool PlayerJudgeDeadWipeStart::judge() const {
21 switch (mDeathType) {
22 case DeathType::Damage:
23 return mCounter >= mPlayerConst->getDeadWipeStartDamage();
24 case DeathType::Abyss:
25 return mCounter >= mPlayerConst->getDeadWipeStartAbyss();
26 case DeathType::AbyssWithCapMsg:
27 return mCounter >= mPlayerConst->getDeadWipeStartAbyssWithCapMsg();
28 case DeathType::Press:
29 return mCounter >= mPlayerConst->getDeadWipeStartPress();
30 case DeathType::SandSink:
31 return mCounter >= mPlayerConst->getDeadWipeStartSandSink();
32 case DeathType::NoOxygen:
33 return mCounter >= mPlayerConst->getDeadWipeStartNoOxygen();
34 case DeathType::IceWater:
35 return mCounter >= mPlayerConst->getDeadWipeStartIceWater();
36 default:
37 return false;
38 }
39}
40
41bool PlayerJudgeDeadWipeStart::isDeadTypeDrawForward() const {
42 return mDeathType == DeathType::Damage || mDeathType == DeathType::Press ||
43 mDeathType == DeathType::SandSink || mDeathType == DeathType::NoOxygen ||
44 mDeathType == DeathType::IceWater;
45}
46
47// Determines if a ring of coins should appear for certain death types
48bool PlayerJudgeDeadWipeStart::isDeadEnableCoinAppear() const {
49 return mDeathType != DeathType::Press;
50}
51
52void PlayerJudgeDeadWipeStart::getWipeInfo(const char** name, s32* wait) const {
53 *name = "WipeMiss";
54
55 switch (mDeathType) {
56 case DeathType::Damage:
57 *wait = mPlayerConst->getDeadWipeWaitDamage();
58 break;
59 case DeathType::Abyss:
60 *wait = mPlayerConst->getDeadWipeWaitAbyss();
61 break;
62 case DeathType::AbyssWithCapMsg:
63 *wait = mPlayerConst->getDeadWipeWaitAbyssWithCapMsg();
64 break;
65 case DeathType::Press:
66 *wait = mPlayerConst->getDeadWipeWaitPress();
67 break;
68 case DeathType::SandSink:
69 *wait = mPlayerConst->getDeadWipeWaitSandSink();
70 break;
71 case DeathType::NoOxygen:
72 *wait = mPlayerConst->getDeadWipeWaitNoOxygen();
73 break;
74 case DeathType::IceWater:
75 *wait = mPlayerConst->getDeadWipeWaitIceWater();
76 break;
77 }
78}
79