Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions data/file_list.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2348,7 +2348,7 @@ Boss/BombTail/BombTailBomb.o:
- offset: 0x0101bc
size: 4
label: _ZN12BombTailBomb20exeBeforeBattleStartEv
status: NotDecompiled
status: Matching
- offset: 0x0101c0
size: 264
label: _ZN12BombTailBomb9exeAppearEv
Expand Down Expand Up @@ -2589,7 +2589,7 @@ Boss/BombTail/BombTailCap.o:
- offset: 0x0122ac
size: 4
label: _ZN11BombTailCap20exeBeforeBattleStartEv
status: NotDecompiled
status: Matching
- offset: 0x0122b0
size: 72
label: _ZN11BombTailCap7exeWaitEv
Expand Down Expand Up @@ -3005,7 +3005,7 @@ Boss/BombTail/BombTailTail.o:
- offset: 0x014ff8
size: 4
label: _ZN26BombTailTailJointCalulator10calcBounceEPKN4sead8Matrix34IfEEf
status: NotDecompiled
status: Matching
- offset: 0x014ffc
size: 172
label: _ZN26BombTailTailJointCalulator10calcReturnEv
Expand Down Expand Up @@ -3097,7 +3097,7 @@ Boss/BombTail/BombTailTail.o:
- offset: 0x0164c4
size: 4
label: _ZN12BombTailTail16startResetAttackEv
status: NotDecompiled
status: Matching
- offset: 0x0164c8
size: 8
label: _ZN12BombTailTail14onAnimDynamicsEv
Expand Down Expand Up @@ -3188,15 +3188,15 @@ Boss/BombTail/BombTailTailPartsModelUpdater.o:
- offset: 0x016cfc
size: 4
label: _ZN29BombTailTailPartsModelUpdater11preCalcAnimEv
status: NotDecompiled
status: Matching
- offset: 0x016d00
size: 1076
label: _ZN29BombTailTailPartsModelUpdater10updatePoseEv
status: NotDecompiled
- offset: 0x017134
size: 4
label: _ZN29BombTailTailPartsModelUpdater14postEndClippedEv
status: NotDecompiled
status: Matching
- offset: 0x017138
size: 16
label: _ZN29BombTailTailPartsModelUpdater12attackSensorEPN2al9HitSensorES2_
Expand Down
3 changes: 3 additions & 0 deletions src/Boss/BombTail/BombTailBomb.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#include "Boss/BombTail/BombTailBomb.h"

void BombTailBomb::exeBeforeBattleStart() {}
61 changes: 61 additions & 0 deletions src/Boss/BombTail/BombTailBomb.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#pragma once

#include <math/seadMatrix.h>
#include <math/seadVector.h>

#include "Library/LiveActor/LiveActor.h"

class BombTailDamage;

class BombTailBomb : public al::LiveActor {
public:
BombTailBomb(const char* name, const al::LiveActor* parent_actor);
void init(const al::ActorInitInfo& info) override;
bool tryStartFollow(const char* action_name);
void kill() override;
void calcAnim() override;
bool isChanceBomb() const;
void changeAtOnGround(const sead::Vector3f* position);
void startWaitForDemo(BombTailDamage* damage, const sead::Matrix34f* matrix);
void startBattle();
void setTailThrowTargetPos(const sead::Vector3f& position);
void startAppear(BombTailDamage* damage, const sead::Matrix34f* matrix);
void startPrepareAttackChance(BombTailDamage* damage, const sead::Matrix34f* matrix);
void startPopUp(const sead::Vector3f& position, const sead::Vector3f& velocity,
BombTailDamage* damage, s32 delay);
void startExplosion(bool is_chance);
bool isReflect() const;
bool isReflectChance() const;
bool isLandChance() const;
bool isExplosioned() const;
void calcThrowChancePos(sead::Vector3f* position, f32 rate);
void attackSensor(al::HitSensor* self, al::HitSensor* other) override;
bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
al::HitSensor* self) override;
void startAttackChanceSign(bool is_first, bool is_last);
void startAttackStart(al::LiveActor* actor);
void startThrow(f32 speed);
void invalidateFollowForChanceReflect();
void syncReflectChance();
void tryChanceEnd();
void exeBeforeBattleStart();
void exeAppear();
void exeAppearChance();
void exeFollowWait();
void exeThrowPopup();
void exeBound();
void exeLand();
void exeLandChance();
void exeThrow();
void exeReflect();
void exeReflectCorrect();
void exeExplosionSign();
void exeBlowDown();
void exeExplosion();
void validateFollowForChanceReflect();

private:
char filler[0xe8];
};

static_assert(sizeof(BombTailBomb) == 0x1f0);
3 changes: 3 additions & 0 deletions src/Boss/BombTail/BombTailCap.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#include "Boss/BombTail/BombTailCap.h"

void BombTailCap::exeBeforeBattleStart() {}
33 changes: 33 additions & 0 deletions src/Boss/BombTail/BombTailCap.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#pragma once

#include "Library/LiveActor/LiveActor.h"

class BombTailCap : public al::LiveActor {
public:
BombTailCap(al::LiveActor* parent_actor);
void initCap(al::LiveActor* parent_actor, const al::ActorInitInfo& info);
void attackSensor(al::HitSensor* self, al::HitSensor* other) override;
bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
al::HitSensor* self) override;
void appear() override;
void disappear();
void startBattle();
void startPanicEnd();
void startResetAttack();
void endResetAttack();
void startReaction();
void startReactionWithoutAnim(const al::SensorMsg* message, al::HitSensor* other,
al::HitSensor* self);
void exeAppearPanicEnd();
void exeBeforeBattleStart();
void exeWait();
void exeBlowDown();
void exeDisappear();
void exeReaction();
void exeResetAttackState();

private:
char filler[0x58];
};

static_assert(sizeof(BombTailCap) == 0x160);
7 changes: 7 additions & 0 deletions src/Boss/BombTail/BombTailTail.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#include "Boss/BombTail/BombTailTail.h"

void BombTailTailJointCalulator::calcBounce(const sead::Matrix34f* matrix, f32 value) {
calcTailBombThrowOld(matrix);
}

void BombTailTail::startResetAttack() {}
77 changes: 77 additions & 0 deletions src/Boss/BombTail/BombTailTail.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
#pragma once

#include <basis/seadTypes.h>
#include <math/seadMatrix.h>

#include "Library/Joint/JointControllerBase.h"
#include "Library/LiveActor/LiveActor.h"

class BombTailBomb;

class BombTailTailJointController : public al::JointControllerBase {
public:
BombTailTailJointController(const sead::Matrix34f* matrix, const bool* is_control, f32 rate);
void calcJointCallback(s32 joint_index, sead::Matrix34f* matrix) override;
const char* getCtrlTypeName() const override;

private:
char filler[0x48];
};

static_assert(sizeof(BombTailTailJointController) == 0x70);

class BombTailTailJointCalulator {
public:
BombTailTailJointCalulator(al::LiveActor* actor, const al::LiveActor* parent_actor);
void calcTailBombThrow(const sead::Matrix34f* matrix, s32 index, f32 rate);
void calcTailBombThrowOld(const sead::Matrix34f* matrix);
void calcBounce(const sead::Matrix34f* matrix, f32 value);
void calcReturn();
void calcBombFollowMtx(sead::Matrix34f* matrix, f32 rate);
void validateControl();
void controlTailVisAnim();
void resetSampleFromAnim();

private:
char filler[0x58];
};

static_assert(sizeof(BombTailTailJointCalulator) == 0x58);

class BombTailTail : public al::LiveActor {
public:
BombTailTail();
void initTail(const al::ActorInitInfo& info, al::LiveActor* parent_actor, const char* suffix,
s32 index);
void calcAnim() override;
void updateDepthShadowMap();
void endClipped() override;
void control() override;
void attackSensor(al::HitSensor* self, al::HitSensor* other) override;
bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
al::HitSensor* self) override;
void startBattle();
void endBattle();
void reset();
void startThrow(BombTailBomb* bomb);
void endThrow(bool is_attack_end);
bool tryStartBounce();
void updateBounce(const sead::Matrix34f& matrix, f32 rate);
void hitBounce();
void startResetAttack();
void onAnimDynamics();
void offAnimDynamics();
const sead::Matrix34f* getControlTopJointMtx() const;
f32 calcTailLength() const;
void exeBeforeBattleStart();
void exeFollow();
void exeThrow();
void exeReturn();
void exeBounce();
void exeReflect();

private:
char filler[0xc8];
};

static_assert(sizeof(BombTailTail) == 0x1d0);
9 changes: 9 additions & 0 deletions src/Boss/BombTail/BombTailTailPartsModelUpdater.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#include "Boss/BombTail/BombTailTailPartsModelUpdater.h"

void BombTailTailPartsModelUpdater::preCalcAnim() {
updatePose();
}

void BombTailTailPartsModelUpdater::postEndClipped() {
updatePose();
}
26 changes: 26 additions & 0 deletions src/Boss/BombTail/BombTailTailPartsModelUpdater.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#pragma once

namespace al {
class HitSensor;
class LiveActor;
class SensorMsg;
} // namespace al

class BombTailTailPartsModelUpdater {
public:
BombTailTailPartsModelUpdater();
void initPartsFixFileNoRegister(al::LiveActor* actor, al::LiveActor* parent_actor,
const char* suffix, const char* archive_name);
void preCalcAnim();
void updatePose();
void postEndClipped();
void attackSensor(al::HitSensor* self, al::HitSensor* other);
bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other, al::HitSensor* self);
void offSyncAppearAndHide();
void onSyncAppearAndHide();

private:
char filler[0x48];
};

static_assert(sizeof(BombTailTailPartsModelUpdater) == 0x48);
Loading