mirror of
https://github.com/zeldaret/botw
synced 2026-09-03 09:59:44 -04:00
Implement CookingMgr class (#113)
* Added CookingMgr fields and started on ctor * Implemented CookItem::copy * Implemented CookingMgr dtor * Marked CookingMgr createInstance as matching * Implemented CookingMgr::getCookItem * Added CookingMgr::cook decl * Added CookingMgr method decls * Replaced part of CookingMgr with sead::FixedObjArray * Added line separators in cookManager.h * Defined structs Ingredient and BoostArg in CookingMgr * Defined structs CookArg and CookIngredient * Renamed some fields of CookingMgr * Added struct CookingMgr::CookingEffectEntry * Started implementing CookingMgr::init * Set more entries in init * Set field _548 * Set field default values in init * Loaded string values from config * Set mCookingEffectEntries in init * Added conditional mConfig allocation * Added FixedTreeMap class to sead * Used FixedTreeMap in CookingMgr * Set CookingMgr constructor to default and marked it as matching * Removed field _31C from CookingMgr * Updated sead * Cleared _548 before filling * Used name hash for _548 keys * Fixed path setup * Changed type of _548 to sead::FixedTreeMap<u32, u32, 13> * Set mNMSSR to correct values * Fixed field init order * Rearranged variables * Swapped entry_hash comparisons * Changed CRC32 names and index values * Cast i to u64 * Renamed static crc32 variables * Renamed _548 to mCookingEffectNameIdMap * Marked static vars as const and used decimal numbers * Used sead::SafeArray for mNMMR and mNMSSR * Rearranged mNMMR and mNMSSR conditions * Removed size check from mNMMR and mNMSSR conditions * Removed size check from CEI conditions * Renamed mRes2 to mResHandle * Renamed cook args * Moved crc32 statics into Constants struct * Marked CookingMgr::init as matching * Renamed Constants to Crc32Constants * Added cookFail and cookFailForMissingConfig * Added NumIngredientsMax, NumEffects, and NumEffectSlots constants * Renamed getCookItem to setCookItem * Renamed x to getCookItem * Implemented getCookItem * Made setCookItem take a const ref * Decompiled cookCalcItemPrice * Marked cookCalcItemPrice as const * Fixed both cookFail and cookFailForMissingConfig * Added CookItem::reset * Added CookingMgr::resetCookItem * Moved ctor and dtor below static variables * Changed cookFailForMissingConfig arg to sead::SafeString * Started on cookCalcBoost * Moved CookItem into cookManager.h * Moved Cooking into Game * Moved CookingMgr to uking namespace * Inlined CookItem::reset * Renamed CookItem members * Fixed CookItem mangled names in uking_functions.csv * Added enum class CookEffectId * Moved CookingMgr ctor below disposer impl * Updated sead * Started on cookHandleBoostSuccessInner * Made changes to cookCalcBoost and cookHandleBoostSuccessInner * Extracted cookHandleBoostMonsterExtractInner * Removed found_monster_extract in cookCalcBoost * Marked cookCalcBoost as matching * Got cookHandleBoostMonsterExtractInner matching * Made changes to cookHandleBoostSuccessInner * Renamed discriminator to bonus in cookHandleBoostSuccessInner * Added CookingMgr::cookCalcSpiceBoost * Made changes to CookingMgr::cookCalcSpiceBoost * Added CookingMgr::cookCalcPotencyBoost * Mostly matched CookingMgr::cookCalcPotencyBoost * Added CookingMgr::getCookEffectId * Used getCookEffectId in cookCalcPotencyBoost * Set access modifiers in CookingMgr * Made cookCalcPotencyBoost const-correct * Marked global init as mismatching * Renamed CookingMgr functions in uking_functions.csv * Added CookingMgr::prepareCookArg * Added IngredientArray type * Added cookWithItems * Added CookingMgr::prepareCookArg * Fixed getCookEffectId * Fixed cookCalcPotencyBoost * Made changes to prepareCookArg * Got cookWithItems matching * Marked vars const * Removed commented-out destructor and UnkItem * Renamed CookIngredient._58 to count * Started on CookingMgr::cook * Extracted cookAdjustItem * Fixed ingredient setup * Extracted actor_info_data * Fixed some control flow for single ingredients * Fixed more control flow for single ingredients * Handled no effect and empty actor name * Renamed Ingredient::_10 to used_in_recipe * Fixed recipe control flow * Matched cookAdjustItem * Fixed InfoData instance uses * Removed BAD_RECIPE label * Rearranged to remove goto * Added cookCalcRecipeBoost * Extracted getCookEffectId * Extracted isCookFailure and isMedicine * Extracted getCookEffectIdFromTreeMap * Extracted findIngredientByName and findIngredientByTag * Marked nonmatching functions * Added resetArgCookData * Matched resetArgCookData and prepareCookArg * Added fields and handleMessage to CookPotRoot * Started on CookPotRoot::init_ * Added hasMonsterExtract * Added to CookPotRoot::handleMessage_ * Removed Ingredient::_4 field * Renamed CookItem::_224 to is_crit * Renamed CookingEffectEntry members * Renamed CookingMgr fields * Changed comparison in cook * Renamed actor_tag_iter to hash_iter and added num checks * Got cookCalcSpiceBoost closer to matching * Removed int_val init from cookCalcSpiceBoost * Inlined actor_data * Added `using namespace ksys::act` * Moved int_val outside loop * Marked cookCalcSpiceBoost as matching * Rearranged cookHandleBoostSuccessInner * Renamed cookCalcPotencyBoost to cookCalcIngredientsBoost * Renamed stamina_recover to vitality_boost * Renamed CookItem args to cook_item * Renamed cookFailForMissingConfig arg * Used IngredientArray in findIngredient functions * Renamed crit functions * Renamed getCookEffectId arg * Renamed getCookEffectId to getCookEffectIdByName * Added SetCookItemInDemo::oneShot_ * Matched SetCookItemInDemo::oneShot_ * Added comment about CookArg constructor and formatted * Removed TODO from CookingMgr * Marked WIP functions as non-matching * Fixed formatting * Matched sead::SafeArray<uking::CookIngredient, 5>::SafeArray * Added BoostArg default member initializers * Used auto for cooking_mgr in CookPotRoot::handleMessage_ * Used designated initializers for boost_arg and added whitespace * Used angle brackets for sead import * Removed [[maybe_unused]] from declaration * Used safeDelete * Inverted condition in CookingMgr::cookCalcCritBoost * Added getCookingEffectEntry getter and moved CookingEffectEntry up * Cleaned up CookingMgr::cookCalcSpiceBoost * Used loops to init ingredient num members * Converted CookingMgr fields to s32 * Cleaned up CookingMgr::cookCalcItemPrice * Renamed CookItem::item_price to sell_price * Used min and max in CookingMgr::cookCalcItemPrice * Inlined count vars in CookingMgr::cookCalcItemPrice * Removed explicit casts in CookingMgr::cookCalcItemPrice * Cleaned up and reformatted CookingMgr::cookCalcIngredientsBoost * Added casts back into CookingMgr::cookCalcItemPrice to silence warnings
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
#include <math/seadMathCalcCommon.h>
|
||||
#include <prim/seadScopedLock.h>
|
||||
#include "Game/Actor/actWeapon.h"
|
||||
#include "Game/Cooking/cookManager.h"
|
||||
#include "Game/DLC/aocManager.h"
|
||||
#include "Game/UI/uiUtils.h"
|
||||
#include "Game/gameItemUtils.h"
|
||||
@@ -17,7 +18,6 @@
|
||||
#include "KingSystem/ActorSystem/actInfoCommon.h"
|
||||
#include "KingSystem/ActorSystem/actInfoData.h"
|
||||
#include "KingSystem/ActorSystem/actPlayerInfo.h"
|
||||
#include "KingSystem/Cooking/cookItem.h"
|
||||
#include "KingSystem/GameData/gdtCommonFlagsUtils.h"
|
||||
#include "KingSystem/GameData/gdtSpecialFlags.h"
|
||||
#include "KingSystem/System/PlayReportMgr.h"
|
||||
@@ -1017,30 +1017,30 @@ void PauseMenuDataMgr::saveToGameData(const sead::OffsetList<PouchItem>& list) c
|
||||
}
|
||||
}
|
||||
|
||||
void PauseMenuDataMgr::cookItemGet(const ksys::CookItem& cook_item) {
|
||||
void PauseMenuDataMgr::cookItemGet(const uking::CookItem& cook_item) {
|
||||
const auto* info = ksys::act::InfoData::instance();
|
||||
if (!info->hasTag(cook_item.name.cstr(), ksys::act::tags::CookResult))
|
||||
if (!info->hasTag(cook_item.actor_name.cstr(), ksys::act::tags::CookResult))
|
||||
return;
|
||||
|
||||
const auto lock = sead::makeScopedLock(mCritSection);
|
||||
auto& lists = mItemLists;
|
||||
|
||||
ksys::PlayReportMgr::instance()->reportDebug("PouchGet", cook_item.name);
|
||||
const auto type = getType(cook_item.name);
|
||||
addToPouch(cook_item.name, type, lists, 1, false);
|
||||
ksys::PlayReportMgr::instance()->reportDebug("PouchGet", cook_item.actor_name);
|
||||
const auto type = getType(cook_item.actor_name);
|
||||
addToPouch(cook_item.actor_name, type, lists, 1, false);
|
||||
setCookDataOnLastAddedItem(cook_item);
|
||||
saveToGameData(lists.list1);
|
||||
}
|
||||
|
||||
void PauseMenuDataMgr::setCookDataOnLastAddedItem(const ksys::CookItem& cook_item) {
|
||||
void PauseMenuDataMgr::setCookDataOnLastAddedItem(const uking::CookItem& cook_item) {
|
||||
if (!mLastAddedItem)
|
||||
return;
|
||||
|
||||
mLastAddedItem->getCookData().setStaminaRecoverY(cook_item.stamina_recover_y);
|
||||
mLastAddedItem->getCookData().setStaminaRecoverX(cook_item.stamina_recover_x);
|
||||
mLastAddedItem->getCookData().setCookEffect1(cook_item.cook_effect_1);
|
||||
const int y = cook_item.cook_effect_0_y;
|
||||
const int x = cook_item.cook_effect_0_x;
|
||||
mLastAddedItem->getCookData().setStaminaRecoverY(cook_item.effect_time);
|
||||
mLastAddedItem->getCookData().setStaminaRecoverX(cook_item.life_recover);
|
||||
mLastAddedItem->getCookData().setCookEffect1(cook_item.sell_price);
|
||||
const int y = cook_item.vitality_boost;
|
||||
const CookEffectId x = cook_item.effect_id;
|
||||
mLastAddedItem->getCookData().setCookEffect0({float(x), float(y)});
|
||||
for (s32 i = 0; i < cook_item.ingredients.size(); ++i)
|
||||
mLastAddedItem->setIngredient(i, cook_item.ingredients[i]);
|
||||
|
||||
@@ -27,9 +27,9 @@ enum class WeaponModifier : u32;
|
||||
struct WeaponModifierInfo;
|
||||
} // namespace uking::act
|
||||
|
||||
namespace ksys {
|
||||
namespace uking {
|
||||
struct CookItem;
|
||||
}
|
||||
} // namespace uking
|
||||
|
||||
namespace uking::ui {
|
||||
|
||||
@@ -262,9 +262,9 @@ public:
|
||||
bool isWeaponSectionFull(const sead::SafeString& get_flag) const;
|
||||
|
||||
void itemGet(const sead::SafeString& name, int value, const act::WeaponModifierInfo* modifier);
|
||||
void cookItemGet(const ksys::CookItem& cook_item);
|
||||
void cookItemGet(const uking::CookItem& cook_item);
|
||||
|
||||
void setCookDataOnLastAddedItem(const ksys::CookItem& cook_item);
|
||||
void setCookDataOnLastAddedItem(const uking::CookItem& cook_item);
|
||||
|
||||
void autoEquipLastAddedItem();
|
||||
const sead::SafeString& autoEquip(PouchItem* item, const sead::OffsetList<PouchItem>& list);
|
||||
|
||||
Reference in New Issue
Block a user