mirror of
https://github.com/encounter/Petari.git
synced 2026-03-30 11:34:15 -07:00
69 lines
1.8 KiB
C++
69 lines
1.8 KiB
C++
#include "Game/Boss/SkeletalFishBossRail.hpp"
|
|
#include "Game/Boss/SkeletalFishBossFunc.hpp"
|
|
#include "Game/Boss/SkeletalFishBossRailHolder.hpp"
|
|
|
|
SkeletalFishBossRail::SkeletalFishBossRail(const char *pName) : LiveActor(pName) {
|
|
_8C = -1;
|
|
mFillUpFlags = nullptr;
|
|
mNamePosIDs = nullptr;
|
|
_98 = 0.0f;
|
|
}
|
|
|
|
void SkeletalFishBossRail::init(const JMapInfoIter &rIter) {
|
|
MR::createSkeletalFishBossRailHolder();
|
|
initRailRider(rIter);
|
|
MR::getJMapInfoArg0WithInit(rIter, &_8C);
|
|
MR::getSkeletalFishBossRailHolder()->add(this);
|
|
createFillUpFlag();
|
|
createFillUpNamePosID();
|
|
makeActorDead();
|
|
}
|
|
|
|
void SkeletalFishBossRail::initAfterPlacement() {
|
|
linkFillUpNamePosID();
|
|
}
|
|
|
|
bool SkeletalFishBossRail::isFillUpPoint(s32 idx) const {
|
|
return mFillUpFlags[idx];
|
|
}
|
|
|
|
s32 SkeletalFishBossRail::getFillUpNamePos(s32 idx) const {
|
|
return mNamePosIDs[idx];
|
|
}
|
|
|
|
void SkeletalFishBossRail::createFillUpFlag() {
|
|
mFillUpFlags = new bool[MR::getRailPointNum(this)];
|
|
|
|
for (u32 i = 0; i < MR::getRailPointNum(this); i++) {
|
|
s32 pointArg;
|
|
MR::getRailPointArg0WithInit(this, i, &pointArg);
|
|
|
|
if (pointArg == -1) {
|
|
mFillUpFlags[i] = false;
|
|
}
|
|
else {
|
|
mFillUpFlags[i] = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
void SkeletalFishBossRail::createFillUpNamePosID() {
|
|
mNamePosIDs = new s32[MR::getRailPointNum(this)];
|
|
|
|
for (s32 i = 0; i < MR::getRailPointNum(this); i++) {
|
|
mNamePosIDs[i] = -1;
|
|
}
|
|
}
|
|
|
|
void SkeletalFishBossRail::linkFillUpNamePosID() {
|
|
for (s32 i = 0; i < MR::getRailPointNum(this); i++) {
|
|
TVec3f railPos;
|
|
MR::calcRailPointPos(&railPos, this, i);
|
|
mNamePosIDs[i] = SkeletalFishBossFunc::getNearestGuardPosID(railPos);
|
|
}
|
|
}
|
|
|
|
SkeletalFishBossRail::~SkeletalFishBossRail() {
|
|
|
|
}
|