summaryrefslogtreecommitdiff
path: root/src/toBeSorted/dowsing_target.cpp
diff options
context:
space:
mode:
authorElijah Thomas <42302100+elijah-thomas774@users.noreply.github.com>2024-10-16 09:00:47 -0400
committerGitHub <noreply@github.com>2024-10-16 09:00:47 -0400
commitb5aa43ff3780ad11350c3c2efc7a705280818f6c (patch)
tree3a10d436d90a59fb4a4fc38cc4af0c5cbe29b923 /src/toBeSorted/dowsing_target.cpp
parentec4d28cd259fd1f452f716ca032d936a62f79393 (diff)
Misc Collision (#51)
* Initial Commit - Starting to translate from TP * Collision Updates * Actor Collision -> dBgW (DZB Collision) * bg .text splits complete * fix errors * file organization * missed files * progress * weee * most of cM3dG * Revert mAng change * Progress * Progress -> Need to update from main * Fixup Merge * d_bg_s symbols.... * TList Changes * oops * d_bg_s large progress * d_bg_s_acch majority done * d_bg_s_chk OK * d_bg_s_gnd_chk OK * d_bg_s_grp_pass_chk OK * d_bg_lin_chk OK * d_bg_s_poly_pass_chk OK * d_bg_s_roof_chk and d_bg_s_sph_chk OK * d_bg_s_spl_grp_chk OK * d_bg_s_wtr_chk OK * d_bg_w started * d_bg_w_base OK * name d_bg_w_kcol symbols * d_bg_w_sv split/started * most of d_bg_w_time * stopping d_bg_w_kcol for now * d_bg_w_sv OK * work on d_bg_w_time * revert TList to take offset arg * fixup some compiler warnings * set c_bg_w OK * Update rel_sieve.py * Remove TList Macros * Bomb Header started
Diffstat (limited to 'src/toBeSorted/dowsing_target.cpp')
-rw-r--r--src/toBeSorted/dowsing_target.cpp36
1 files changed, 15 insertions, 21 deletions
diff --git a/src/toBeSorted/dowsing_target.cpp b/src/toBeSorted/dowsing_target.cpp
index 84eea947..277a5883 100644
--- a/src/toBeSorted/dowsing_target.cpp
+++ b/src/toBeSorted/dowsing_target.cpp
@@ -5,19 +5,12 @@
#include <toBeSorted/item_story_flag_manager.h>
#include <toBeSorted/tlist.h>
-typedef TList<DowsingTarget, 0> DowsingList;
+typedef TList<DowsingTarget, offsetof(DowsingTarget, mLink)> DowsingList;
DowsingList DOWSING_LISTS[8];
static const int DOWSING_TARGET_STORY_FLAGS[8] = {
- 100,
- 105,
- 100,
- 104,
- 108,
- 110,
- 109,
- 102,
+ 100, 105, 100, 104, 108, 110, 109, 102,
};
DowsingTarget::~DowsingTarget() {
@@ -56,7 +49,7 @@ void DowsingTarget::getPosition(mVec3_c &position) {
mMtx_c mtx2;
PSMTXTrans(mtx.m, mpActor->position.x, mpActor->position.y, mpActor->position.z);
mtx.YrotM(mpActor->rotation.y);
- PSMTXScale(mtx2.m, mpActor->scale.x, mpActor->scale.y, mpActor->scale.z);
+ PSMTXScale(mtx2.m, mpActor->mScale.x, mpActor->mScale.y, mpActor->mScale.z);
PSMTXConcat(mtx.m, mtx2.m, mtx.m);
PSMTXMultVec(mtx.m, mOffset, position);
}
@@ -80,9 +73,9 @@ bool DowsingTarget::hasDesertNodeDowsing() {
bool DowsingTarget::hasAnyTrialDowsing() {
// TODO more complicated code
return ItemFlagManager::sInstance->getFlag(187) && !StoryFlagManager::sInstance->getCounterOrFlag(93) ||
- ItemFlagManager::sInstance->getFlag(188) && !StoryFlagManager::sInstance->getCounterOrFlag(97) ||
- ItemFlagManager::sInstance->getFlag(189) && !StoryFlagManager::sInstance->getCounterOrFlag(98) ||
- ItemFlagManager::sInstance->getFlag(193) && !StoryFlagManager::sInstance->getCounterOrFlag(99);
+ ItemFlagManager::sInstance->getFlag(188) && !StoryFlagManager::sInstance->getCounterOrFlag(97) ||
+ ItemFlagManager::sInstance->getFlag(189) && !StoryFlagManager::sInstance->getCounterOrFlag(98) ||
+ ItemFlagManager::sInstance->getFlag(193) && !StoryFlagManager::sInstance->getCounterOrFlag(99);
}
bool DowsingTarget::hasSacredWaterDowsing() {
@@ -132,10 +125,10 @@ bool DowsingTarget::hasDowsingInSlot(int slot) {
if (slot == 0) {
return hasZeldaDowsing() || hasAnyTrialDowsing() || hasSacredWaterDowsing() || hasSandshipDowsing() ||
- hasTadtoneDowsing() || hasPropellerDowsing() || hasWaterBasinDowsing();
+ hasTadtoneDowsing() || hasPropellerDowsing() || hasWaterBasinDowsing();
} else if (slot == 2) {
return hasCrystalBallDowsing() || hasPumpkinDowsing() || hasNewPlantSpeciesDowsing() || hasKikwiDowsing() ||
- hasKeyPieceDowsing() || hasDesertNodeDowsing() || hasPartyWheelDowsing();
+ hasKeyPieceDowsing() || hasDesertNodeDowsing() || hasPartyWheelDowsing();
} else if (StoryFlagManager::sInstance->getCounterOrFlag(DOWSING_TARGET_STORY_FLAGS[slot])) {
// TODO small instruction shuffle
return true;
@@ -146,8 +139,9 @@ bool DowsingTarget::hasDowsingInSlot(int slot) {
#define MYCLAMP(low, high, x) ((x) < (low) ? (low) : ((x) > (high) ? (high) : (x)))
-DowsingTarget *DowsingTarget::getDowsingInfo(const mVec3_c &playerPosition, const mVec3_c &dowsingDirection, f32 *p3,
- f32 *p4, f32 *intensity, int slot) {
+DowsingTarget *DowsingTarget::getDowsingInfo(
+ const mVec3_c &playerPosition, const mVec3_c &dowsingDirection, f32 *p3, f32 *p4, f32 *intensity, int slot
+) {
if (slot >= 8) {
return nullptr;
}
@@ -199,9 +193,9 @@ void DowsingTarget::init() {}
void DowsingTarget::execute() {}
// Not sure what this is
-inline static TListNode *getNode(u8 slot, DowsingTarget *t) {
+inline static TListNode<DowsingTarget> *getNode(u8 slot, DowsingTarget *t) {
if (t->mLink.mpNext == nullptr || t->mLink.mpPrev == nullptr) {
- return &DOWSING_LISTS[slot].mNode;
+ return &DOWSING_LISTS[slot].mStartEnd;
} else {
return &t->mLink;
}
@@ -213,7 +207,7 @@ static bool insertDowsingTarget(DowsingTarget *target) {
return false;
}
- if (getNode(slot, target) != &DOWSING_LISTS[slot].mNode) {
+ if (getNode(slot, target) != &DOWSING_LISTS[slot].mStartEnd) {
return false;
}
DOWSING_LISTS[slot].insert(target);
@@ -226,7 +220,7 @@ static bool removeDowsingTarget(DowsingTarget *target) {
return false;
}
- if (getNode(slot, target) != &DOWSING_LISTS[slot].mNode) {
+ if (getNode(slot, target) != &DOWSING_LISTS[slot].mStartEnd) {
DOWSING_LISTS[slot].remove(target);
return true;
}