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& 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)) { - for (auto& other : list) { - if (other.getType() > PouchItemType::ArmorLower) - break; - if (other.getType() == type) - other.mEquipped = false; - } - } else if (isPouchItemWeapon(type)) { + switch (type) { + case PouchItemType::Sword: + case PouchItemType::Bow: + case PouchItemType::Shield: + case PouchItemType::Arrow: for (auto& other : list) { if (other.getType() > PouchItemType::Shield) break; if (other.getType() == type) other.mEquipped = false; } + break; + case PouchItemType::ArmorHead: + case PouchItemType::ArmorUpper: + case PouchItemType::ArmorLower: + for (auto& other : list) { + 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; }