1#include "Game/Map/ScenarioSelectStar.hpp"
2#include "Game/MapObj/PowerStar.hpp"
3#include "Game/Util.hpp"
7 _44(0), mFrame(1), _4C(0), _50(0), _54(0.0f), _5C(gZeroVec), _68(gZeroVec) {
10 initEffect(pSystem, 0,
"ScenarioStar");
14 initNerve(&NrvScenarioSelectStar::ScenarioSelectStarNrvNotPointing::sInstance);
17void ScenarioSelectStar::calcViewAndEntry() {
18 if (isNerve(&NrvScenarioSelectStar::ScenarioSelectStarNrvAppear::sInstance) || !MultiScene::isLessEqualStep(
this, _74 + 1)) {
19 MultiSceneActor::calcViewAndEntry();
23void ScenarioSelectStar::appear() {
24 mScale.x = 0.89999998f;
25 mScale.y = 0.89999998f;
26 mScale.z = 0.89999998f;
30 MultiScene::startBtp(
this,
"PowerStar");
31 MultiScene::startBva(
this,
"PowerStar");
32 MultiScene::setBtpFrameAndStop(
this, PowerStar::getBtpFrameCurrentStage(mFrame));
33 MultiScene::setBvaFrameAndStop(
this, _44 == 0 ? 1.0f : 0.0f);
34 MultiSceneActor::appear();
35 setNerve(&NrvScenarioSelectStar::ScenarioSelectStarNrvAppear::sInstance);
38void ScenarioSelectStar::kill() {
39 MultiScene::forceDeleteEffectAll(
this);
40 MultiSceneActor::kill();
43void ScenarioSelectStar::tryPointing() {
46 if (isNerve(&NrvScenarioSelectStar::ScenarioSelectStarNrvNotPointing::sInstance) || isNerve(&NrvScenarioSelectStar::ScenarioSelectStarNrvEndPointing::sInstance)) {
47 setNerve(&NrvScenarioSelectStar::ScenarioSelectStarNrvPointing::sInstance);
51void ScenarioSelectStar::select() {
52 setNerve(&NrvScenarioSelectStar::ScenarioSelectStarNrvSelected::sInstance);
55void ScenarioSelectStar::notSelect() {
56 setNerve(&NrvScenarioSelectStar::ScenarioSelectStarNrvNotSelected::sInstance);
59bool ScenarioSelectStar::isAppearEnd()
const {
62 if (!_30 && !isNerve(&NrvScenarioSelectStar::ScenarioSelectStarNrvAppear::sInstance)) {
69void ScenarioSelectStar::setup(s32 a1,
int a2,
const TVec3f &a3, s32 a4) {
75 mRotation.set(0.0f, 0.0f, (150.0f * a4));
78 _58 = 15 * v7 + ((v7 % 2) ? 0 : 0x5A);
81void ScenarioSelectStar::control() {
83 mRotation.z = MR::modAndSubtract(mRotation.z + _54, 360.0f, 0.0f);
85 if (isNerve(&NrvScenarioSelectStar::ScenarioSelectStarNrvNotPointing::sInstance)
86 || isNerve(&NrvScenarioSelectStar::ScenarioSelectStarNrvPointing::sInstance)
87 || isNerve(&NrvScenarioSelectStar::ScenarioSelectStarNrvEndPointing::sInstance)) {
93bool ScenarioSelectStar::tryEndPointing() {
95 setNerve(&NrvScenarioSelectStar::ScenarioSelectStarNrvEndPointing::sInstance);
111void ScenarioSelectStar::exeAppear() {
112 if (MultiScene::isStep(
this, _74)) {
113 MultiScene::startBck(
this,
"ScenarioAppear");
114 MR::startSystemSE(
"SE_OJ_SCEN_SEL_STAR_APPEAR", -1, -1);
117 if (MultiScene::isStep(
this, _74 + 1)) {
119 MultiScene::emitEffect(
this,
"ClearStarLight");
122 MultiScene::emitEffect(
this,
"Light");
126 if (MultiScene::isGreaterStep(
this, _74)) {
127 MultiScene::setNerveAtBckStopped(
this, &NrvScenarioSelectStar::ScenarioSelectStarNrvNotPointing::sInstance);
131void ScenarioSelectStar::exeNotPointing() {
132 if (MultiScene::isFirstStep(
this)) {
133 mScale.x = 0.89999998f;
134 mScale.y = 0.89999998f;
135 mScale.z = 0.89999998f;
140void ScenarioSelectStar::exePointing() {
141 if (MultiScene::isFirstStep(
this)) {
142 MR::startSystemSE(
"SE_SY_CURSOR_1", -1, -1);
143 MR::tryRumblePadWeak(
this, 0);
147 if (MultiScene::isLessStep(
this, 20)) {
148 f32 rate = MultiScene::calcNerveRate(
this, 20);
149 f32 scale = MR::getScaleWithReactionValueZeroToOne(rate, 1.5f, -0.25f);
150 f32 linerVal = MR::getLinerValue(scale, 0.89999998f, 1.5f, 1.0f);
151 mScale.setAll(linerVal);
162void ScenarioSelectStar::exeEndPointing() {
163 if (MultiScene::isFirstStep(
this)) {
167 f32 easeOut = MR::getEaseOutValue(MultiScene::calcNerveRate(
this, 10), 1.5f, 0.89999998f, 1.0f);
168 mScale.setAll(easeOut);
169 MultiScene::setNerveAtStep(
this, &NrvScenarioSelectStar::ScenarioSelectStarNrvNotPointing::sInstance, 10);
172void ScenarioSelectStar::exeSelected() {
173 if (MultiScene::isFirstStep(
this)) {
174 MultiScene::emitEffect(
this,
"Select");
175 MR::tryRumblePadMiddle(
this, 0);
176 _68.set(mTranslation);
181 mScale.setAll(MultiScene::calcNerveValue(
this, 40, _78, 1.5f));
182 MultiScene::setNerveAtStep(
this, &NrvScenarioSelectStar::ScenarioSelectStarNrvSelectedMove::sInstance, 40);
185void ScenarioSelectStar::exeSelectedMove() {
186 if (MultiScene::isFirstStep(
this)) {
192 if (MultiScene::isStep(
this, 60)) {
193 MR::startSystemSE(
"SE_DM_SENARIO_SE_ACCEL", -1, -1);
196 if (MultiScene::isLessStep(
this, 60)) {
197 f32 rate = 1.0f - MultiScene::calcNerveEaseOutRate(
this, 60);
198 mTranslation.scale(rate, _68);
199 _54 = MR::getLinerValue(rate, 3.0f, 6.0f, 1.0f);
202 mTranslation.x = 0.0f;
203 mTranslation.y = 0.0f;
204 mTranslation.z = 0.0f;
205 _54 = MR::getLinerValue(MultiScene::calcNerveRate(
this, 60, 180), 6.0f, 20.0f, 1.0f);
209void ScenarioSelectStar::exeNotSelected() {
212 if (MultiScene::isFirstStep(
this)) {
216 if (MultiScene::isStep(
this, v2)) {
218 mRotation.z = 150.0f * _4C;
219 MultiScene::startBck(
this,
"ScenarioHide");
220 MultiScene::deleteEffectAll(
this);
223 if (MultiScene::isGreaterStep(
this, v2)) {
224 if (MultiScene::isBckStopped(
this)) {
230ScenarioSelectStar::~ScenarioSelectStar() {
234namespace NrvScenarioSelectStar {
235 INIT_NERVE(ScenarioSelectStarNrvAppear)
236 INIT_NERVE(ScenarioSelectStarNrvNotPointing)
237 INIT_NERVE(ScenarioSelectStarNrvPointing)
238 INIT_NERVE(ScenarioSelectStarNrvEndPointing)
239 INIT_NERVE(ScenarioSelectStarNrvSelected)
240 INIT_NERVE(ScenarioSelectStarNrvSelectedMove)
241 INIT_NERVE(ScenarioSelectStarNrvNotSelected)
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.