1#include "Game/MapObj/TreasureSpot.hpp"
2#include "Game/Util.hpp"
4TreasureSpot::TreasureSpot(
const char *pName) :
MapObjActor(pName) {
11 MapObjActorUtil::setupInitInfoSimpleMapObj(&info);
12 info.setupHitSensor();
13 info.setupHitSensorParam(4, 80.0f, TVec3f(0.0f, 3.0f, 0.0f));
14 info.setupNerve(&NrvTreasureSpot::TreasureSpotNrvWait::sInstance);
16 MapObjActor::initialize(rIter, info);
17 mIsCoinFlower = isObjectName(
"CoinFlower");
18 MR::initStarPointerTarget(
this, 100.0f, TVec3f(0.0f, 50.0f, 0.0f));
19 MR::declareCoin(
this, 1);
22void TreasureSpot::exeSpout() {
23 if (MR::isFirstStep(
this)) {
24 MR::forceDeleteEffectAll(
this);
26 MR::calcUpVec(&upVec,
this);
27 MR::appearCoinPopToDirection(
this,
mPosition, upVec, 1);
30 MR::startBck(
this,
"Bloom", 0);
31 MR::startSound(
this,
"SE_OJ_COIN_FLOWER_BLOOM", -1, -1);
34 setNerve(&NrvTreasureSpot::TreasureSpotNrvEnd::sInstance);
41 if (MR::isBckStopped(
this)) {
42 setNerve(&NrvTreasureSpot::TreasureSpotNrvEnd::sInstance);
47void TreasureSpot::control() {
48 if (!isNerve(&NrvTreasureSpot::TreasureSpotNrvSpout::sInstance) && !isNerve(&NrvTreasureSpot::TreasureSpotNrvEnd::sInstance)) {
54 if (isNerve(&NrvTreasureSpot::TreasureSpotNrvSpout::sInstance)) {
58 if (isNerve(&NrvTreasureSpot::TreasureSpotNrvEnd::sInstance)) {
62 if (!MR::isNearPlayerAnyTime(
this, 2000.0f)) {
66 if (MR::isMsgLockOnStarPieceShoot(msg)) {
70 if (MR::isMsgStarPieceAttack(msg)) {
71 setNerve(&NrvTreasureSpot::TreasureSpotNrvSpout::sInstance);
78void TreasureSpot::switchEmitGlow() {
79 if (!MR::isNearPlayerAnyTime(
this, 2000.0f)) {
80 MR::deleteEffect(
this,
"Glow");
83 if (MR::isNearPlayerAnyTime(
this, 2000.0f)) {
84 if (!MR::isEffectValid(
this,
"Glow")) {
85 MR::emitEffect(
this,
"Glow");
91TreasureSpot::~TreasureSpot() {
95namespace NrvTreasureSpot {
96 INIT_NERVE(TreasureSpotNrvWait);
97 INIT_NERVE(TreasureSpotNrvEnd);
98 INIT_NERVE(TreasureSpotNrvSpout);
100 void TreasureSpotNrvSpout::execute(
Spine *pSpine)
const {
105 void TreasureSpotNrvEnd::execute(
Spine *pSpine)
const {
109 void TreasureSpotNrvWait::execute(
Spine *pSpine)
const {
TVec3f mPosition
3D vector of the actor's position.
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.