mirror of
https://github.com/zeldaret/ss
synced 2026-06-15 06:20:55 -04:00
Merge pull request #3 from robojumper/mAng_flindba
Fix mAng3_c copy assignment, clean up list node templates
This commit is contained in:
@@ -1,51 +1,4 @@
|
||||
#include <d/a/obj/d_a_obj_base.h>
|
||||
#include <d/d_player.h>
|
||||
#include <f/f_list_nd.h>
|
||||
#include <s/s_State.hpp>
|
||||
#include <s/s_StateMgr.hpp>
|
||||
|
||||
// Look I don't know why these levels of subclasses work
|
||||
class fLiNdBa_Wood_c : public fLiNdBaAutoUnlink_c {
|
||||
public:
|
||||
fLiNdBa_Wood_c() : fLiNdBaAutoUnlink_c(nullptr) {}
|
||||
};
|
||||
|
||||
class dAcTWoodArea_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcTWoodArea_c() : mStateMgr(*this, sStateID::null) {}
|
||||
virtual ~dAcTWoodArea_c() {}
|
||||
virtual int actorCreate() override;
|
||||
virtual int actorPostCreate() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int draw() override;
|
||||
virtual int doDelete() override;
|
||||
|
||||
void attachCloseObjects(ProfileName profID);
|
||||
void dropItems();
|
||||
bool attachObject(dAcObjBase_c *obj);
|
||||
|
||||
f32 getAttachRadius() {
|
||||
return scale.x * scaleX;
|
||||
}
|
||||
f32 getAttachRadiusSquare() {
|
||||
return getAttachRadius() * getAttachRadius();
|
||||
}
|
||||
|
||||
f32 getAttachHeight() {
|
||||
return scale.y * scaleY;
|
||||
}
|
||||
|
||||
STATE_FUNC_DECLARE(dAcTWoodArea_c, Init);
|
||||
STATE_FUNC_DECLARE(dAcTWoodArea_c, Wait);
|
||||
|
||||
static const f32 scaleX;
|
||||
static const f32 scaleY;
|
||||
|
||||
private:
|
||||
STATE_MGR_DECLARE(dAcTWoodArea_c);
|
||||
|
||||
fLiNdBa_Wood_c mRefs[8];
|
||||
};
|
||||
#include <d/a/d_a_t_wood_area.h>
|
||||
|
||||
const f32 dAcTWoodArea_c::scaleX = 100.0f;
|
||||
const f32 dAcTWoodArea_c::scaleY = 100.0f;
|
||||
@@ -101,6 +54,7 @@ extern "C" void fn_800298B0(u16, mVec3_c *, mAng3_c *, u32, u32, u32, u32, u32);
|
||||
extern u16 PARTICLE_RESOURCE_ID_MAPPING[];
|
||||
|
||||
void dAcTWoodArea_c::initializeState_Wait() {}
|
||||
|
||||
void dAcTWoodArea_c::executeState_Wait() {
|
||||
if (dPlayer::LINK != nullptr && (dPlayer::LINK->someFlags & 0x2000)) {
|
||||
// This is a bit messed up
|
||||
@@ -141,8 +95,8 @@ void dAcTWoodArea_c::attachCloseObjects(ProfileName profID) {
|
||||
|
||||
void dAcTWoodArea_c::dropItems() {
|
||||
for (int i = 0; i < 8; i++) {
|
||||
if (mRefs[i].p_owner != nullptr) {
|
||||
if (static_cast<dAcObjBase_c *>(mRefs[i].p_owner)->drop()) {
|
||||
if (mRefs[i].get() != nullptr) {
|
||||
if (mRefs[i].get()->drop()) {
|
||||
mRefs[i].unlink();
|
||||
}
|
||||
}
|
||||
@@ -151,7 +105,7 @@ void dAcTWoodArea_c::dropItems() {
|
||||
|
||||
bool dAcTWoodArea_c::attachObject(dAcObjBase_c *obj) {
|
||||
for (int i = 0; i < 8; i++) {
|
||||
if (mRefs[i].p_owner == nullptr) {
|
||||
if (mRefs[i].get() == nullptr) {
|
||||
mRefs[i].link(obj);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -74,12 +74,12 @@ void dTgTumbleWeed_c::executeState_AreaIn() {
|
||||
}
|
||||
void dTgTumbleWeed_c::finalizeState_AreaIn() {}
|
||||
|
||||
extern "C" void fn_475_1B00(fBase_c *, mVec3_c&);
|
||||
extern "C" void fn_475_1B00(fBase_c *, mVec3_c &);
|
||||
void dTgTumbleWeed_c::initializeState_Wind() {
|
||||
mVec3_c vec;
|
||||
getWind(&vec);
|
||||
if (childTumbleweed.p_owner != nullptr) {
|
||||
fn_475_1B00(childTumbleweed.p_owner, vec);
|
||||
if (childTumbleweed.get() != nullptr) {
|
||||
fn_475_1B00(childTumbleweed.get(), vec);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ void dTgTumbleWeed_c::finalizeState_Wind() {}
|
||||
|
||||
bool dTgTumbleWeed_c::shouldSpawnTumbleweed() {
|
||||
bool spawnAllowed = false;
|
||||
if (childTumbleweed.p_owner == nullptr && cM::rnd() <= 0.8f) {
|
||||
if (childTumbleweed.get() == nullptr && cM::rnd() <= 0.8f) {
|
||||
spawnAllowed = true;
|
||||
}
|
||||
|
||||
@@ -105,10 +105,8 @@ bool dTgTumbleWeed_c::shouldSpawnTumbleweed() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool dTgTumbleWeed_c::shouldDoWind() {
|
||||
return childTumbleweed.p_owner != nullptr && cM::rnd() <= 0.5f;
|
||||
return childTumbleweed.get() != nullptr && cM::rnd() <= 0.5f;
|
||||
}
|
||||
void dTgTumbleWeed_c::doSpawnTumbleweed() {
|
||||
}
|
||||
void dTgTumbleWeed_c::getWind(mVec3_c*) {}
|
||||
void dTgTumbleWeed_c::doSpawnTumbleweed() {}
|
||||
void dTgTumbleWeed_c::getWind(mVec3_c *) {}
|
||||
|
||||
@@ -72,7 +72,7 @@ dAcBase_c::dAcBase_c()
|
||||
}
|
||||
|
||||
// 8002c530
|
||||
dBase_c::~dBase_c() {}
|
||||
// dBase_c::~dBase_c() {}
|
||||
|
||||
dAcBase_c::~dAcBase_c() {}
|
||||
|
||||
@@ -327,7 +327,7 @@ void dAcBase_c::forEveryActor(void *func(dAcBase_c *, dAcBase_c *), dAcBase_c *p
|
||||
}
|
||||
|
||||
// 8002d190
|
||||
mAng dAcBase_c::getXZAngleToPlayer(s16 *angle) {
|
||||
mAng dAcBase_c::getXZAngleToPlayer() {
|
||||
return targetAngleY(&this->position, &dPlayer::LINK->position);
|
||||
}
|
||||
|
||||
@@ -392,7 +392,7 @@ bool dAcBase_c::getDistanceAndAngleToActor(dAcBase_c *actor, f32 distThresh, s16
|
||||
}
|
||||
|
||||
// 8002d3e0
|
||||
bool dAcBase_c::isWithinPlayerRadius(f32 radius) {
|
||||
bool dAcBase_c::isWithinPlayerRadius(f32 radius) const {
|
||||
f32 dist_diff = getSquareDistanceTo(dPlayer::LINK->position);
|
||||
return dist_diff < radius * radius;
|
||||
}
|
||||
@@ -462,7 +462,7 @@ SoundSource *dAcBase_c::getSoundSource() {
|
||||
void dAcBase_c::FUN_8002d890() {}
|
||||
|
||||
// current name is Global__setActorRef
|
||||
void dAcBase_c::setActorRef(dBase_c *ref) {
|
||||
void dAcBase_c::setActorRef(dAcBase_c *ref) {
|
||||
actor_node.link(ref);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user