summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPistonight <pistonknight@outlook.com>2025-05-01 21:07:34 -0700
committerPistonight <pistonknight@outlook.com>2025-05-02 20:26:00 -0700
commit56ef34dc6b829febefcd2e9e4db92b4ece44c33b (patch)
treecc1d63880480358f4adefce7a3d9a29f391abf5a
parent7facffb1d6a71402c6cd143bcd8034a0f4002dca (diff)
match PMDM autoEquip and unequipAll
-rw-r--r--data/uking_functions.csv4
-rw-r--r--src/Game/UI/uiPauseMenuDataMgr.cpp40
2 files changed, 26 insertions, 18 deletions
diff --git a/data/uking_functions.csv b/data/uking_functions.csv
index 04d0f44e..f8a15783 100644
--- a/data/uking_functions.csv
+++ b/data/uking_functions.csv
@@ -56389,8 +56389,8 @@ Address,Quality,Size,Name
0x0000007100970060,O,000248,_ZN5uking2ui16PauseMenuDataMgr11cookItemGetERKNS_8CookItemE
0x0000007100970158,O,000268,_ZN5uking2ui16PauseMenuDataMgr26setCookDataOnLastAddedItemERKNS_8CookItemE
0x0000007100970264,O,000116,_ZN5uking2ui16PauseMenuDataMgr22autoEquipLastAddedItemEv
-0x00000071009702d8,m,000268,_ZN5uking2ui16PauseMenuDataMgr9autoEquipEPNS0_9PouchItemERKN4sead10OffsetListIS2_EE
-0x00000071009703e4,m,000216,_ZN5uking2ui16PauseMenuDataMgr10unequipAllENS0_13PouchItemTypeE
+0x00000071009702d8,O,000268,_ZN5uking2ui16PauseMenuDataMgr9autoEquipEPNS0_9PouchItemERKN4sead10OffsetListIS2_EE
+0x00000071009703e4,O,000216,_ZN5uking2ui16PauseMenuDataMgr10unequipAllENS0_13PouchItemTypeE
0x00000071009704bc,O,001352,_ZN5uking2ui16PauseMenuDataMgr10removeItemERKN4sead14SafeStringBaseIcEE
0x0000007100970a04,O,000896,_ZN5uking2ui16PauseMenuDataMgr22removeWeaponIfEquippedERKN4sead14SafeStringBaseIcEE
0x0000007100970d84,O,000512,_ZN5uking2ui16PauseMenuDataMgr11removeArrowERKN4sead14SafeStringBaseIcEEi
diff --git a/src/Game/UI/uiPauseMenuDataMgr.cpp b/src/Game/UI/uiPauseMenuDataMgr.cpp
index 87cc7f0e..11e6dc93 100644
--- a/src/Game/UI/uiPauseMenuDataMgr.cpp
+++ b/src/Game/UI/uiPauseMenuDataMgr.cpp
@@ -1054,7 +1054,6 @@ void PauseMenuDataMgr::autoEquipLastAddedItem() {
}
}
-// NON_MATCHING: branching
const sead::SafeString& PauseMenuDataMgr::autoEquip(PouchItem* item,
const sead::OffsetList<PouchItem>& list) {
const auto type = item->getType();
@@ -1064,20 +1063,30 @@ const sead::SafeString& PauseMenuDataMgr::autoEquip(PouchItem* item,
if (type >= PouchItemType::Material)
return sead::SafeString::cEmptyString;
- if (isPouchItemArmor(type)) {
+ switch (type) {
+ case PouchItemType::Sword:
+ case PouchItemType::Bow:
+ case PouchItemType::Shield:
+ case PouchItemType::Arrow:
for (auto& other : list) {
- if (other.getType() > PouchItemType::ArmorLower)
+ if (other.getType() > PouchItemType::Shield)
break;
if (other.getType() == type)
other.mEquipped = false;
}
- } else if (isPouchItemWeapon(type)) {
+ break;
+ case PouchItemType::ArmorHead:
+ case PouchItemType::ArmorUpper:
+ case PouchItemType::ArmorLower:
for (auto& other : list) {
- if (other.getType() > PouchItemType::Shield)
+ if (other.getType() > PouchItemType::ArmorLower)
break;
if (other.getType() == type)
other.mEquipped = false;
}
+ break;
+ default:
+ break;
}
item->mEquipped = true;
@@ -1086,7 +1095,6 @@ const sead::SafeString& PauseMenuDataMgr::autoEquip(PouchItem* item,
return sead::SafeString::cEmptyString;
}
-// NON_MATCHING: harmless reordering
void PauseMenuDataMgr::unequipAll(PouchItemType type) {
const auto lock = sead::makeScopedLock(mCritSection);
@@ -1094,19 +1102,18 @@ void PauseMenuDataMgr::unequipAll(PouchItemType type) {
return;
for (auto& item : getItems()) {
- if (type == PouchItemType::Invalid) {
- if (item.getType() > PouchItemType::ArmorLower)
- break;
- if (item.isEquipped() && item.getType() != PouchItemType::Arrow)
- item.mEquipped = false;
+ if (item.getType() > PouchItemType::ArmorLower)
+ break;
+ if (!item.isEquipped())
+ continue;
- } else {
- if (item.getType() > PouchItemType::ArmorLower)
- break;
- if (item.isEquipped() && item.getType() == type) {
+ if (type == PouchItemType::Invalid) {
+ if (item.getType() != PouchItemType::Arrow) {
item.mEquipped = false;
- break;
}
+ } else if (item.getType() == type) {
+ item.mEquipped = false;
+ break;
}
}
}
@@ -2207,6 +2214,7 @@ const sead::SafeString* PauseMenuDataMgr::getEquippedItemName(PouchItemType type
if (item->isEquipped() && item->getType() == type)
return &item->getName();
}
+
return nullptr;
}