1#include "Amiibo/HelpAmiiboYoshi.h"
2
3#include <math/seadVector.h>
4
5#include "Library/LiveActor/ActorFlagFunction.h"
6#include "Library/LiveActor/ActorInitUtil.h"
7#include "Library/LiveActor/ActorMovementFunction.h"
8#include "Library/Nfp/NfpFunction.h"
9
10#include "Player/Yoshi.h"
11#include "Util/PlayerUtil.h"
12
13HelpAmiiboYoshi::HelpAmiiboYoshi(HelpAmiiboDirector* director, al::LiveActor* amiiboActor)
14 : HelpAmiiboExecutor(director, amiiboActor, "ヨッシーお助け") {}
15
16void HelpAmiiboYoshi::initAfterPlacement(const al::ActorInitInfo& actorInitInfo) {
17 HelpAmiiboExecutor::initAfterPlacement(actorInitInfo);
18
19 mYoshi = new Yoshi("amiiboヨッシー");
20 al::initCreateActorNoPlacementInfo(actor: mYoshi, initInfo: actorInitInfo);
21 mYoshi->makeActorDead();
22}
23
24bool HelpAmiiboYoshi::isTriggerTouch(const al::NfpInfo& nfpInfo) const {
25 return al::isCharacterIdBaseYoshi(nfpInfo);
26}
27
28bool HelpAmiiboYoshi::execute() {
29 return !al::isAlive(actor: mYoshi);
30}
31
32void HelpAmiiboYoshi::activate() {
33 HelpAmiiboExecutor::activate();
34
35 const sead::Vector3f& playerPos = rs::getPlayerPos(getActor());
36 al::resetPosition(actor: mYoshi, trans: playerPos + sead::Vector3f(0, 1000.0f, 0));
37 mYoshi->appearEgg();
38}
39