summaryrefslogtreecommitdiff
path: root/src/toBeSorted/dowsing_target.cpp
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-03-14 03:13:15 +0100
committerGitHub <noreply@github.com>2025-03-13 22:13:15 -0400
commit32cbf96184ac828310c53b8000d28111082a887e (patch)
tree5cd2d8d37194ff5579e8699e632970ff579d1a66 /src/toBeSorted/dowsing_target.cpp
parent01b964c8318b17c42c6cd62d244f11a67ae74263 (diff)
Link dowsing_target, eggException, d_lyt_meter_drink (#128)
* Link dowsing_target, eggException * d_lyt_meter_drink OK (thanks Zeldex!) * More sensible DowsingTarget flag code * Attempt explaining TList inline
Diffstat (limited to 'src/toBeSorted/dowsing_target.cpp')
-rw-r--r--src/toBeSorted/dowsing_target.cpp22
1 files changed, 8 insertions, 14 deletions
diff --git a/src/toBeSorted/dowsing_target.cpp b/src/toBeSorted/dowsing_target.cpp
index 6b2d40ad..879447c3 100644
--- a/src/toBeSorted/dowsing_target.cpp
+++ b/src/toBeSorted/dowsing_target.cpp
@@ -136,9 +136,12 @@ bool DowsingTarget::hasDowsingInSlot(int slot) {
} else if (slot == 2) {
return hasCrystalBallDowsing() || hasPumpkinDowsing() || hasNewPlantSpeciesDowsing() || hasKikwiDowsing() ||
hasKeyPieceDowsing() || hasDesertNodeDowsing() || hasPartyWheelDowsing();
- } else if (StoryflagManager::sInstance->getCounterOrFlag(DOWSING_TARGET_STORY_FLAGS[slot])) {
- // TODO small instruction shuffle
- return true;
+ } else {
+ u16 flag = DOWSING_TARGET_STORY_FLAGS[slot];
+ flag = StoryflagManager::sInstance->getCounterOrFlag(flag);
+ if (flag != 0) {
+ return true;
+ }
}
return false;
@@ -199,22 +202,13 @@ void DowsingTarget::init() {}
void DowsingTarget::execute() {}
-// Not sure what this is
-inline static TListNode<DowsingTarget> *getNode(u8 slot, DowsingTarget *t) {
- if (t->mLink.mpNext == nullptr || t->mLink.mpPrev == nullptr) {
- return &DOWSING_LISTS[slot].mStartEnd;
- } else {
- return &t->mLink;
- }
-}
-
static bool insertDowsingTarget(DowsingTarget *target) {
u8 slot = target->getSlot();
if (slot == DowsingTarget::SLOT_NONE) {
return false;
}
- if (getNode(slot, target) != &DOWSING_LISTS[slot].mStartEnd) {
+ if (DOWSING_LISTS[slot].GetPosition(target) != DOWSING_LISTS[slot].GetEndIter()) {
return false;
}
DOWSING_LISTS[slot].insert(target);
@@ -227,7 +221,7 @@ static bool removeDowsingTarget(DowsingTarget *target) {
return false;
}
- if (getNode(slot, target) != &DOWSING_LISTS[slot].mStartEnd) {
+ if (DOWSING_LISTS[slot].GetPosition(target) != DOWSING_LISTS[slot].GetEndIter()) {
DOWSING_LISTS[slot].remove(target);
return true;
}