Files
ss/include/d/a/d_a_item.h
T
robojumper bc1fe76fd2 Progress
2025-04-21 21:51:05 +02:00

208 lines
7.4 KiB
C++

#ifndef D_A_ITEM_H
#define D_A_ITEM_H
#include "common.h"
#include "d/a/d_a_base.h"
#include "d/a/d_a_itembase.h"
#include "d/a/obj/d_a_obj_scattersand.h"
#include "d/col/bg/d_bg_s_acch.h"
#include "d/col/c/c_cc_d.h"
#include "d/col/cc/d_cc_d.h"
#include "d/d_shadow.h"
#include "f/f_list_mg.h"
#include "f/f_list_nd.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
#include "nw4r/ut/ut_Color.h"
#include "s/s_State.hpp"
#include "toBeSorted/actor_event.h"
#include "toBeSorted/dowsing_target.h"
#include "toBeSorted/effects_struct.h"
class dAcItem_0xB34 {
public:
virtual ~dAcItem_0xB34();
};
class dAcItem_c : public dAcItemBase_c {
public:
dAcItem_c();
virtual ~dAcItem_c();
STATE_FUNC_DECLARE(dAcItem_c, Wait);
STATE_FUNC_DECLARE(dAcItem_c, Carry);
STATE_FUNC_DECLARE(dAcItem_c, GetBeetle);
STATE_FUNC_DECLARE(dAcItem_c, WaitGet);
STATE_FUNC_DECLARE(dAcItem_c, Get);
STATE_FUNC_DECLARE(dAcItem_c, WaitGetDemo);
STATE_FUNC_DECLARE(dAcItem_c, WaitForcedGetDemo);
STATE_FUNC_DECLARE(dAcItem_c, GetDemo);
STATE_FUNC_DECLARE(dAcItem_c, WaitTBoxGetDemo);
STATE_FUNC_DECLARE(dAcItem_c, ResurgeWait);
STATE_FUNC_DECLARE(dAcItem_c, WaitTurnOff);
STATE_FUNC_DECLARE(dAcItem_c, WaitSacredDewGetEffect);
static u32 createItemParams(u16 itemId, u32 subType, u32 unk, u8 unk2, u8, u8);
static void spawnItem(u16 item, u32 room, const mVec3_c &pos, const mAng3_c &rot, u32 params, u32 arg);
static void spawnDrop(u16 item, u32 room, const mVec3_c &pos, const mAng3_c &rot);
static u32 checkFlag(u32 flag);
void setItemPosition(const mVec3_c &);
void getItemFromBWheelItem();
bool isStateWait();
static s32 getTotalBombCount();
static s32 getTotalArrowCount();
static s32 getTotalSeedCount();
static s32 getTotalBombCapacity();
static s32 getTotalSeedCapacity();
static s32 getTotalArrowCapacity();
static u32 getKeyPieceCount();
static u32 getSmallKeyCount();
static bool isRupee(ITEM_ID item);
static bool isKeyPiece(ITEM_ID item);
static bool isTreasure(ITEM_ID item);
static bool getItemGetEventName(u16 item, const char **outName);
static void itemGetEventStart(dAcBase_c *);
static void itemGetEventEnd(dAcBase_c *);
enum Trial_e {
TRIAL_SKYLOFT,
TRIAL_FARON,
TRIAL_ELDIN,
TRIAL_LANAYRU,
TRIAL_NONE,
};
static Trial_e getCurrentTrial();
static void healLink(u32 amount, bool); // move to dAcPy_c
private:
/* 0x334 */ UNKTYPE *mpMdl; // Model has its own handling system
/* 0x338 */ dShadowCircle_c mShdw;
/* 0x340 */ mVec3_c mField_0x340;
/* 0x34C */ nw4r::ut::Color mColorFilter;
/* 0x350 */ f32 mLightLevelMaybe;
/* 0x354 */ u8 _354[0x35C - 0x354];
/* 0x35C */ dBgS_AcchCir mAcchCir;
/* 0x3B8 */ dBgS_ObjAcch mObjAcch;
/* 0x768 */ dCcD_Cyl mCyl;
/* 0x8B8 */ STATE_MGR_DECLARE(dAcItem_c);
/* 0x8F4 */ EffectsStruct mEff_0x8F4;
/* 0x928 */ EffectsStruct mEff_0x928;
/* 0x95C */ EffectsStruct mEff_0x95C;
/* 0x990 */ EffectsStruct mEff_0x990;
/* 0x9C4 */ EffectsStruct mEff_0x9C4;
/* 0x9F8 */ EffectsStruct mEff_0x9F8;
/* 0xA2C */ EffectsStruct mEff_0xA2C;
/* 0xA60 */ EffectsStruct mEff_0xA60;
/* 0xA94 */ dAcRef_c<dAcOScatterSand> mCoveredSand;
/* 0xAA0 */ dAcRef_c<dAcObjBase_c> mUnkRef;
/* 0xAAC */ mVec3_c posCopy;
/* 0xAB8 */ fLiNdBa_c mNode;
/* 0xAC4 */ ActorEventRelated mEventRelated;
/* 0xB14 */ DowsingTarget mDowsingTarget;
/* 0xB34 */ dAcItem_0xB34 *mField_0xB34[2];
/* 0xB34 */ dAcItem_0xB34 *mField_0xB3C;
/* 0xB40 */ UNKTYPE (dAcItem_c::*mFunc_0xB40)(UNKTYPE);
/* 0xB4C */ UNKTYPE (dAcItem_c::*mFunc_0xB4C)(UNKTYPE);
/* 0xB58 */ UNKTYPE (dAcItem_c::*mFunc_0xB58)(UNKTYPE);
/* 0xB64 */ UNKTYPE (dAcItem_c::*mFunc_0xB64)(UNKTYPE);
/* 0xB70 */ UNKTYPE (dAcItem_c::*mFunc_0xB70)(UNKTYPE);
/* 0xB7C */ UNKTYPE (dAcItem_c::*mFunc_0xB7C)(UNKTYPE);
/* 0xB88 */ UNKTYPE (dAcItem_c::*mFunc_0xB88)(UNKTYPE);
/* 0xB94 */ UNKTYPE (dAcItem_c::*mFunc_0xB94)(UNKTYPE);
/* 0xBA0 */ UNKTYPE (dAcItem_c::*mFunc_0xBA0)(UNKTYPE);
/* 0xBAC */ UNKTYPE (dAcItem_c::*mFunc_0xBAC)(UNKTYPE);
/* 0xBB8 */ UNKTYPE (dAcItem_c::*mFunc_0xBB8)(UNKTYPE);
/* 0xBC4 */ UNKTYPE (dAcItem_c::*mFunc_0xBC4)(UNKTYPE);
/* 0xBD0 */ UNKTYPE (dAcItem_c::*mFunc_0xBD0)(UNKTYPE);
/* 0xBDC */ UNKTYPE (dAcItem_c::*mFunc_0xBDC)(UNKTYPE);
/* 0xBE8 */ UNKTYPE (dAcItem_c::*mFunc_0xBE8)(UNKTYPE);
/* 0xBF4 */ UNKTYPE (dAcItem_c::*mFunc_0xBF4)(UNKTYPE);
/* 0xC00 */ UNKTYPE (dAcItem_c::*mFunc_0xC00)(UNKTYPE);
/* 0xC0C */ UNKTYPE (dAcItem_c::*mFunc_0xC0C)(UNKTYPE);
/* 0xC18 */ UNKTYPE (dAcItem_c::*mFunc_0xC18)(UNKTYPE);
/* 0xC24 */ UNKTYPE (dAcItem_c::*mFunc_0xC24)(UNKTYPE);
/* 0xC30 */ UNKTYPE (dAcItem_c::*mFunc_0xC30)(UNKTYPE);
/* 0xC3C */ UNKTYPE (dAcItem_c::*mFunc_0xC3C)(UNKTYPE);
/* 0xC48 */ UNKTYPE (dAcItem_c::*mFunc_0xC48)(UNKTYPE);
/* 0xC54 */ UNKTYPE (dAcItem_c::*mFunc_0xC54)(UNKTYPE);
/* 0xC60 */ UNKTYPE (dAcItem_c::*mFunc_0xC60)(UNKTYPE);
/* 0xC6C */ UNKTYPE (dAcItem_c::*mFunc_0xC6C)(UNKTYPE);
/* 0xC78 */ UNKTYPE (dAcItem_c::*mFunc_0xC78)(UNKTYPE);
/* 0xC84 */ UNKTYPE (dAcItem_c::*mFunc_0xC84)(UNKTYPE);
/* 0xC90 */ UNKTYPE (dAcItem_c::*mFunc_0xC90)(UNKTYPE);
/* 0xC9C */ UNKTYPE (dAcItem_c::*mFunc_0xC9C)(UNKTYPE);
/* 0xCA8 */ UNKTYPE (dAcItem_c::*mFunc_0xCA8)(UNKTYPE);
/* 0xCB4 */ UNKTYPE (dAcItem_c::*mFunc_0xCB4)(UNKTYPE);
/* 0xCC0 */ dAcRef_c<dAcItem_c> mItemQueuePrev;
/* 0xCCC */ dAcRef_c<dAcItem_c> mItemQueueNext;
/* 0xCD8 */ f32 mField_0xCD8;
/* 0xCDC */ f32 mBaseScale;
/* 0xCE0 */ f32 mCurrentScale;
/* 0xCE4 */ f32 mField_0xCE4;
/* 0xCE8 */ f32 mField_0xCE8;
/* 0xCEC */ f32 mField_0xCEC;
/* 0xCF0 */ u8 _CF0[0xD00 - 0xCF0];
/* 0xD00 */ f32 mField_0xD00;
/* 0xD04 */ f32 mField_0xD04;
/* 0xD08 */ u8 _D08[0xD14 - 0xD08];
/* 0xD14 */ f32 mFreestandingOffsetH;
/* 0xD18 */ f32 mField_0xD18;
/* 0xD1C */ int mGetItemPouchSlot;
/* 0xD20 */ int mField_0xD20;
/* 0xD24 */ u8 _D24[0xD2C - 0xD24];
/* 0xD2C */ u32 mFramesInAir;
/* 0xD30 */ int mItemQuantity;
/* 0xD34 */ u32 mItemFlags;
/* 0xD38 */ mAng3_c mField_0xD38;
/* 0xD3E */ u16 mField_0xD3E;
/* 0xD40 */ mAng mMdlRotY;
/* 0xD42 */ s16 mField_0xD42;
/* 0xD44 */ u16 mRealItemId;
/* 0xD46 */ s16 mDespawnTimer;
/* 0xD48 */ u8 mField_0xD48;
/* 0xD49 */ u8 mField_0xD49;
/* 0xD4A */ u8 mField_0xD4A;
/* 0xD4B */ u8 mField_0xD4B;
/* 0xD4C */ u8 mField_0xD4C;
/* 0xD4D */ u8 mField_0xD4D;
/* 0xD4E */ u8 mMdlScaleType;
/* 0xD4F */ u8 mbNoDespawn;
/* 0xD50 */ u8 mbNoGravity;
/* 0xD51 */ u8 mField_0xD51;
/* 0xD52 */ u8 mField_0xD52;
/* 0xD53 */ u8 mField_0xD53;
/* 0xD54 */ u8 mbIsWaiting;
/* 0xD55 */ u8 mField_0xD55;
/* 0xD56 */ u8 mField_0xD56;
/* 0xD57 */ u8 mField_0xD57;
/* 0xD58 */ u8 mField_0xD58;
/* 0xD59 */ u8 mField_0xD59;
/* 0xD5A */ u8 mField_0xD5A;
/* 0xD5B */ u8 mField_0xD5B;
/* 0xD5C */ u8 mField_0xD5C;
/* 0xD5D */ bool mbShowItemLighting;
/* 0xD5E */ u8 mField_0xD5E;
/* 0xD5F */ u8 mField_0xD5F;
/* 0xD60 */ u8 mField_0xD60;
/* 0xD61 */ u8 mField_0xD61;
/* 0xD62 */ u8 mField_0xD62;
/* 0xD63 */ u8 mField_0xD63;
/* 0xD64 */ u8 mField_0xD64;
/* 0xD65 */ u8 mField_0xD65;
/* 0xD66 */ u8 mField_0xD66;
/* 0xD67 */ u8 mField_0xD67;
public:
static fLiMgBa_c sItemList;
};
#endif