diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 567917b5..527d517d 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -56412,8 +56412,8 @@ Address,Quality,Size,Name 0x000000710097a4fc,O,000204,_ZNK5uking2ui16PauseMenuDataMgr21countAlreadyDyedArmorEv 0x000000710097a5c8,U,000516,PauseMenuDataMgr::armorShopStuff 0x000000710097a7cc,U,000376,PauseMenuDataMgr::x_31 -0x000000710097a944,U,000184,PauseMenuDataMgr::x_32 -0x000000710097a9fc,U,000092,PauseMenuDataMgr::x_33 +0x000000710097a944,O,000184,_ZN5uking2ui16PauseMenuDataMgr11equipWeaponEPNS0_9PouchItemE +0x000000710097a9fc,O,000092,_ZN5uking2ui16PauseMenuDataMgr7unequipEPNS0_9PouchItemE 0x000000710097aa58,O,000124,_ZNK5uking2ui16PauseMenuDataMgr23getNextGrabbedItemIndexEv 0x000000710097aad4,O,000096,_ZNK5uking2ui16PauseMenuDataMgr18canGrabAnotherItemEv 0x000000710097ab34,U,000616,PauseMenuDataMgr::__auto3 diff --git a/src/Game/UI/uiPauseMenuDataMgr.cpp b/src/Game/UI/uiPauseMenuDataMgr.cpp index b3997c5e..3d1f6569 100644 --- a/src/Game/UI/uiPauseMenuDataMgr.cpp +++ b/src/Game/UI/uiPauseMenuDataMgr.cpp @@ -2749,4 +2749,28 @@ void PauseMenuDataMgr::updateDivineBeastClearFlags(int num_cleared_beasts) { } } +void PauseMenuDataMgr::equipWeapon(PouchItem* weapon) { + if (!weapon) { + return; + } + auto lock = sead::makeScopedLock(mCritSection); + auto* item = mItemLists.list1.nth(0); + while (item && item->isWeapon()) { + if (item->mType == weapon->mType) { + item->mEquipped = false; + } + item = mItemLists.list1.next(item); + } + weapon->mEquipped = true; + saveToGameData(mItemLists.list1); +} + +void PauseMenuDataMgr::unequip(PouchItem* item) { + if (!item) { + return; + } + auto lock = sead::makeScopedLock(mCritSection); + item->mEquipped = false; + saveToGameData(mItemLists.list1); +} } // namespace uking::ui diff --git a/src/Game/UI/uiPauseMenuDataMgr.h b/src/Game/UI/uiPauseMenuDataMgr.h index 88c4235f..a141fce9 100644 --- a/src/Game/UI/uiPauseMenuDataMgr.h +++ b/src/Game/UI/uiPauseMenuDataMgr.h @@ -363,6 +363,9 @@ public: PouchCategory getCategoryToSort() const { return mCategoryToSort; } + void equipWeapon(PouchItem* weapon); + void unequip(PouchItem* item); + private: // TODO: rename struct GrabbedItemInfo {