1#include "Sequence/GameSequenceInfo.h"
2
3#include "Library/Base/StringUtil.h"
4#include "Library/LiveActor/ActorSceneInfo.h"
5#include "Library/LiveActor/LiveActor.h"
6
7#include "System/GameDataHolder.h"
8#include "System/GameDataHolderAccessor.h"
9
10GameSequenceInfo::GameSequenceInfo() {
11 init();
12}
13
14void GameSequenceInfo::init() {
15 mSceneStatus = SceneStatus_None;
16 mIsStatusBossBattle = false;
17 mIsStatusInvalidSave = false;
18 mIsWipeOpenEnd = true;
19 mShopStatus = ShopStatus_None;
20}
21
22void GameSequenceInfo::resetSceneStatus() {
23 mSceneStatus = SceneStatus_None;
24 mIsStatusBossBattle = false;
25 mIsStatusInvalidSave = false;
26}
27
28void GameSequenceInfo::setSceneStatusBossBattle() {
29 mSceneStatus = SceneStatus_BossBattle;
30 mIsStatusBossBattle = true;
31}
32
33void GameSequenceInfo::setSceneStatusBossBattleEnd() {
34 resetSceneStatus();
35}
36
37void GameSequenceInfo::setSceneStatusBossBattleEndForPlayerAnim() {
38 mIsStatusBossBattle = false;
39 mIsStatusInvalidSave = true;
40}
41
42void GameSequenceInfo::setSceneStatusInvalidSave() {
43 mIsStatusInvalidSave = true;
44}
45
46bool GameSequenceInfo::isSceneStatusBossBattle() const {
47 return mSceneStatus == SceneStatus_BossBattle;
48}
49
50bool GameSequenceInfo::isSceneStatusBossBattleForPlayerAnim() const {
51 return mIsStatusBossBattle;
52}
53
54bool GameSequenceInfo::isSceneStatusInvalidSave() const {
55 return mIsStatusInvalidSave;
56}
57
58bool GameSequenceInfo::isShopStatus(s32 shopStatus) const {
59 return mShopStatus == shopStatus;
60}
61
62void GameSequenceInfo::setShopStatus(s32 shopStatus) {
63 mShopStatus = (ShopStatus)shopStatus;
64}
65
66namespace rs {
67void setSceneStatusBossBattle(const al::LiveActor* actor) {
68 ((GameDataHolder*)actor->getSceneInfo()->gameDataHolder)
69 ->getSequenceInfo()
70 ->setSceneStatusBossBattle();
71}
72
73void setSceneStatusBossBattleEnd(const al::LiveActor* actor) {
74 ((GameDataHolder*)actor->getSceneInfo()->gameDataHolder)
75 ->getSequenceInfo()
76 ->setSceneStatusBossBattleEnd();
77}
78
79void setSceneStatusBossBattleEndForPlayerAnim(const al::LiveActor* actor) {
80 ((GameDataHolder*)actor->getSceneInfo()->gameDataHolder)
81 ->getSequenceInfo()
82 ->setSceneStatusBossBattleEndForPlayerAnim();
83}
84
85bool isSceneStatusBossBattle(GameDataHolderAccessor accessor) {
86 return accessor->getSequenceInfo()->isSceneStatusBossBattle();
87}
88
89bool isSceneStatusBossBattleForPlayerAnim(const al::LiveActor* actor) {
90 return ((GameDataHolder*)actor->getSceneInfo()->gameDataHolder)
91 ->getSequenceInfo()
92 ->isSceneStatusBossBattleForPlayerAnim();
93}
94
95bool isSceneStatusInvalidSave(GameDataHolderAccessor accessor) {
96 return accessor->getSequenceInfo()->isSceneStatusInvalidSave();
97}
98
99void setSceneStatusInvalidSave(GameDataHolderAccessor accessor) {
100 accessor->getSequenceInfo()->setSceneStatusInvalidSave();
101}
102
103bool isInvalidSaveStage(const char* stageName) {
104 return al::isEqualString(str1: stageName, str2: "MoonWorldBasementStage") ||
105 al::isEqualString(str1: stageName, str2: "SnowWorldLobby001Stage");
106}
107
108bool isWipeOpenEnd(const al::LiveActor* actor) {
109 return ((GameDataHolder*)actor->getSceneInfo()->gameDataHolder)
110 ->getSequenceInfo()
111 ->isWipeOpenEnd();
112}
113
114void endWipeOpen(const GameDataHolder* holder) {
115 holder->getSequenceInfo()->setWipeOpenEnd(true);
116}
117
118void startWipeOpen(const GameDataHolder* holder) {
119 holder->getSequenceInfo()->setWipeOpenEnd(false);
120}
121
122bool isShopStatusBuyItem(const al::LiveActor* actor) {
123 return isShopStatusBuyShine(actor) || isShopStatusBuyShineMany(actor) ||
124 isShopStatusBuyMaxLifeUpItem(actor);
125}
126
127bool isShopStatusBuyShine(const al::LiveActor* actor) {
128 return ((GameDataHolder*)actor->getSceneInfo()->gameDataHolder)
129 ->getSequenceInfo()
130 ->isShopStatus(shopStatus: GameSequenceInfo::ShopStatus_BuyShine);
131}
132
133bool isShopStatusBuyShineMany(const al::LiveActor* actor) {
134 return ((GameDataHolder*)actor->getSceneInfo()->gameDataHolder)
135 ->getSequenceInfo()
136 ->isShopStatus(shopStatus: GameSequenceInfo::ShopStatus_BuyShineMany);
137}
138
139bool isShopStatusBuyMaxLifeUpItem(const al::LiveActor* actor) {
140 return ((GameDataHolder*)actor->getSceneInfo()->gameDataHolder)
141 ->getSequenceInfo()
142 ->isShopStatus(shopStatus: GameSequenceInfo::ShopStatus_BuyMaxLifeUpItem);
143}
144
145void setShopStatusBuyShine(const al::LiveActor* actor) {
146 ((GameDataHolder*)actor->getSceneInfo()->gameDataHolder)
147 ->getSequenceInfo()
148 ->setShopStatus(GameSequenceInfo::ShopStatus_BuyShine);
149}
150
151void setShopStatusBuyShineMany(const al::LiveActor* actor) {
152 ((GameDataHolder*)actor->getSceneInfo()->gameDataHolder)
153 ->getSequenceInfo()
154 ->setShopStatus(GameSequenceInfo::ShopStatus_BuyShineMany);
155}
156
157void setShopStatusBuyMaxLifeUpItem(const al::LiveActor* actor) {
158 ((GameDataHolder*)actor->getSceneInfo()->gameDataHolder)
159 ->getSequenceInfo()
160 ->setShopStatus(GameSequenceInfo::ShopStatus_BuyMaxLifeUpItem);
161}
162
163void setShopStatusNone(const al::LiveActor* actor) {
164 ((GameDataHolder*)actor->getSceneInfo()->gameDataHolder)
165 ->getSequenceInfo()
166 ->setShopStatus(GameSequenceInfo::ShopStatus_None);
167}
168
169} // namespace rs
170