Add PauseMenuDataMgr::grabbedItemStuff() (#88)

This commit is contained in:
savage13
2022-02-26 16:42:09 -05:00
committed by GitHub
parent 17750b5225
commit a564186002
6 changed files with 73 additions and 3 deletions
+2
View File
@@ -5,6 +5,8 @@ add_subdirectory(DLC)
add_subdirectory(UI)
target_sources(uking PRIVATE
gameItemUtils.cpp
gameItemUtils.h
gameScene.cpp
gameScene.h
gameStageInfo.cpp
+36
View File
@@ -7,9 +7,11 @@
#include "Game/Actor/actWeapon.h"
#include "Game/DLC/aocManager.h"
#include "Game/UI/uiUtils.h"
#include "Game/gameItemUtils.h"
#include "Game/gameScene.h"
#include "KingSystem/ActorSystem/Profiles/actPlayerBase.h"
#include "KingSystem/ActorSystem/actActorConstDataAccess.h"
#include "KingSystem/ActorSystem/actActorHeapUtil.h"
#include "KingSystem/ActorSystem/actActorUtil.h"
#include "KingSystem/ActorSystem/actBaseProcLink.h"
#include "KingSystem/ActorSystem/actInfoCommon.h"
@@ -2782,4 +2784,38 @@ bool PauseMenuDataMgr::useItemFromRecipeAndSave(void* unk, int multiplier, Pouch
return true;
}
void PauseMenuDataMgr::grabbedItemStuff(PouchItem* item) {
auto lock = sead::makeScopedLock(mCritSection);
for (auto& cur : mItemLists.list1) {
if (&cur == item && item->mType == PouchItemType::Material) {
if (item->mValue > 1) {
item->mValue -= 1;
} else {
item->mEquipped = false;
item->mValue = 0;
}
for (auto& info : mGrabbedItems) {
if (info.item) {
if (info.item == item) {
info._9 = true;
}
} else {
info.item = item;
info._8 = true;
info._9 = false;
spawnDroppedInventoryItem(
item->getName().cstr(),
ksys::act::ActorHeapUtil::instance()->getBaseProcHeap(), -1,
SleepAfterInit::No, nullptr, SpawnViaCarryBox::Yes, 0.8, -0.8);
break;
}
}
}
updateInventoryInfo(mItemLists.list1);
saveToGameData(mItemLists.list1);
}
}
} // namespace uking::ui
+3
View File
@@ -370,6 +370,8 @@ public:
// FIXME: types
bool useItemFromRecipeAndSave(void* unk, int multiplier, PouchItem* item);
void grabbedItemStuff(PouchItem* item);
private:
// TODO: rename
struct GrabbedItemInfo {
@@ -449,6 +451,7 @@ private:
void doLoadFromGameData();
// 710096c954
void updateInventoryInfo(const sead::OffsetList<PouchItem>& list);
void updateListHeads();
void saveToGameData(const sead::OffsetList<PouchItem>& list) const;
+1
View File
@@ -0,0 +1 @@
#include "Game/gameItemUtils.h"
+28
View File
@@ -0,0 +1,28 @@
#pragma once
namespace sead {
class Heap;
} // namespace sead
namespace uking::act {
struct WeaponModifierInfo;
} // namespace uking::act
namespace uking {
enum class SleepAfterInit : bool {
Yes = true,
No = false,
};
enum class SpawnViaCarryBox : bool {
Yes = true,
No = false,
};
// 710073c5b4
void spawnDroppedInventoryItem(const char* name, sead::Heap* heap, int life,
SleepAfterInit sleep_after_init,
const uking::act::WeaponModifierInfo* weapon_modifiers,
SpawnViaCarryBox spawn_via_carry_box, float rotate_y,
float rotate_z);
} // namespace uking