diff options
| author | Elijah Thomas <42302100+elijah-thomas774@users.noreply.github.com> | 2024-10-16 09:00:47 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-16 09:00:47 -0400 |
| commit | b5aa43ff3780ad11350c3c2efc7a705280818f6c (patch) | |
| tree | 3a10d436d90a59fb4a4fc38cc4af0c5cbe29b923 /src/toBeSorted/dowsing_target.cpp | |
| parent | ec4d28cd259fd1f452f716ca032d936a62f79393 (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.cpp | 36 |
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; } |
