diff options
| author | robojumper <robojumper@gmail.com> | 2026-05-02 18:21:12 +0200 |
|---|---|---|
| committer | robojumper <robojumper@gmail.com> | 2026-05-10 20:05:47 +0200 |
| commit | 6046f9bd7cb506cfff17aa1327a3f135867c8ed5 (patch) | |
| tree | 3713e0e382f118b6cd111e4f706e7331bd379db4 /include | |
| parent | f0d98002982bfed70817a0d2c110c55dd7b55231 (diff) | |
dAcItem_c::{create, createHeap} OK
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/a/d_a_base.h | 5 | ||||
| -rw-r--r-- | include/d/a/d_a_item.h | 402 | ||||
| -rw-r--r-- | include/d/a/d_a_itembase.h | 11 | ||||
| -rw-r--r-- | include/d/col/bg/d_bg_s_acch.h | 2 | ||||
| -rw-r--r-- | include/d/col/c/c_cc_d.h | 39 | ||||
| -rw-r--r-- | include/d/t/d_t_force_get_flag.h | 13 | ||||
| -rw-r--r-- | include/toBeSorted/item_mdl.h | 1 | ||||
| -rw-r--r-- | include/toBeSorted/item_mdl_misc.h | 1 |
8 files changed, 428 insertions, 46 deletions
diff --git a/include/d/a/d_a_base.h b/include/d/a/d_a_base.h index 2eae40a1..f063e4e2 100644 --- a/include/d/a/d_a_base.h +++ b/include/d/a/d_a_base.h @@ -8,6 +8,7 @@ #include "m/m_allocator.h" #include "m/m_angle.h" #include "m/m_vec.h" +#include "sized_string.h" #include "toBeSorted/actor_info.h" #include "toBeSorted/raii_ptr.h" #include "toBeSorted/sound_info.h" @@ -109,8 +110,7 @@ public: /* 0xEE */ u8 mPolyAttr0; /* 0xEF */ u8 mPolyAttr1; /* 0xF0 */ u32 mJStudioActor; - /* 0xF4 */ char someStr[4]; - /* 0xF8 */ char field_0xf8[0xfc - 0xf8]; + /* 0xF4 */ SizedString<8> mSomeStr; public: /* vt 0x08 */ virtual int create(); @@ -240,6 +240,7 @@ public: void setParams2UpperByte(u32 val); static u32 buildParams2(u32 lower, u32 upper); u32 getParams2Lower() const; + u32 getFirstBitParams2() const; static dAcBase_c *findActor(char *objName, dAcBase_c *parent); static dAcBase_c *searchActor(dAcBase_c *parent); // Kinda performs the code of the first param on every actor (second param is optional parent) diff --git a/include/d/a/d_a_item.h b/include/d/a/d_a_item.h index cdaa3115..c6a22cd1 100644 --- a/include/d/a/d_a_item.h +++ b/include/d/a/d_a_item.h @@ -18,10 +18,76 @@ #include "toBeSorted/actor_event.h" #include "toBeSorted/d_emitter.h" #include "toBeSorted/dowsing_target.h" +#include "toBeSorted/item_mdl.h" class dAcItem_0xB34 { public: - virtual ~dAcItem_0xB34(); + virtual ~dAcItem_0xB34() {} + virtual void vt_0x0C() = 0; + virtual void vt_0x10() = 0; +}; + +class dAcItem_0xB34_1 : public dAcItem_0xB34 { +public: + virtual ~dAcItem_0xB34_1() {} + virtual void vt_0x0C() override; + virtual void vt_0x10() override; +}; + +class dAcItem_0xB34_2 : public dAcItem_0xB34 { +public: + virtual ~dAcItem_0xB34_2() {} + virtual void vt_0x0C() override; + virtual void vt_0x10() override; + +private: + /* 0x04 */ u8 _0x04[0x0C - 0x04]; +}; + +class dAcItem_0xB3C { +public: + virtual ~dAcItem_0xB3C() {} + virtual void vt_0x0C(u16) = 0; + virtual void vt_0x10() = 0; + virtual void vt_0x14() = 0; + virtual void vt_0x18() = 0; + +protected: + /* 0x04 */ u8 _0x04[0x08 - 0x04]; +}; + +class dAcItem_0xB3C_1 : public dAcItem_0xB3C { +public: + dAcItem_0xB3C_1(u16, u16) {} + virtual ~dAcItem_0xB3C_1(); + virtual void vt_0x0C(u16) override; + virtual void vt_0x10() override; + virtual void vt_0x14() override; + virtual void vt_0x18() override; +}; + +class dAcItem_0xB3C_2 : public dAcItem_0xB3C { +public: + dAcItem_0xB3C_2(u16 a1, u16 a2) { + mCb1 = sCb1s[a1]; + mCb2 = sCb2s[a2]; + } + virtual ~dAcItem_0xB3C_2(); + virtual void vt_0x0C(u16) override; + virtual void vt_0x10() override; + virtual void vt_0x14() override; + virtual void vt_0x18() override; + +public: + typedef void (dAcItem_0xB3C_2::*Callback1)(); + typedef bool (dAcItem_0xB3C_2::*Callback2)(); + + static Callback1 sCb1s[2]; + static Callback2 sCb2s[3]; + + /* 0x08 */ Callback1 mCb1; + /* 0x14 */ Callback2 mCb2; + /* 0x20 */ u8 _0x20[0x24 - 0x20]; }; class dAcItem_c : public dAcItemBase_c { @@ -29,6 +95,12 @@ public: dAcItem_c(); virtual ~dAcItem_c(); + virtual int create() override; + virtual bool createHeap() override; + + virtual u16 getItemIdFromParams() override; + virtual void setItemId(u16 id); + STATE_FUNC_DECLARE(dAcItem_c, Wait); STATE_FUNC_DECLARE(dAcItem_c, Carry); STATE_FUNC_DECLARE(dAcItem_c, GetBeetle); @@ -84,11 +156,35 @@ public: static bool isSlingshot(ITEM_ID item); static bool isRupee(ITEM_ID item); static bool isKeyPiece(ITEM_ID item); + static bool isTreasure2(ITEM_ID item); static bool isTreasure(ITEM_ID item); static bool isTear(ITEM_ID item); + bool isLightFruit() const; bool isSingleArrow() const; + bool isArrowBundle() const; bool isTriforce() const; + bool isGratitudeCrystal() const; + bool is5GratitudeCrystals() const; + bool isHeart() const; + bool isSmallKey() const; + bool isGreenRupee() const; + bool isBlueRupee() const; + bool isRedRupee() const; + bool isRupoor() const; + bool isSilverRupee() const; + bool isGoldRupee() const; + bool isSlingshot() const; + bool isEldinOre() const; + bool isJellyBlob() const; + bool isUnkTreasureGroup1() const; + bool isHeartPiece() const; + bool isTreasure3() const; + bool isInsect() const; + bool isHeart2() const; + bool isAnyRupee() const; + bool isAnyTear() const; + bool isBabyRattle() const; u32 getParams2Lower_shift1_0x7() const; @@ -138,7 +234,238 @@ private: static bool sIsPerformingInitialCollection; static s32 sCollectionCurrentCount; - /* 0x334 */ UNKTYPE *mpMdl; // Model has its own handling system + static s32 sGetItemPouchSlot; + static s32 sGetItemQuantity; + + static const mVec3_c sFreestandingDowsingOffset; + + typedef bool (dAcItem_c::*sStaticPtmf)(); + static const sStaticPtmf sStaticPtmfs[]; + + static const ItemInitStruct *getItemInitStructForId(u16 itemId); + const ItemInitStruct *getItemInitStruct() const; + bool isItemDropFromEnemy() const; + static u16 determineActualItemIdFromItem(u16); + u16 getItemId2() const; + static s32 getSubtypeFromParam(u32 params); + void setupUnkColliderFlags2(); + static bool hitCallback(dAcObjBase_c *i_actorA, cCcD_Obj *i_objInfA, dAcObjBase_c *i_actorB, cCcD_Obj *i_objInfB); + void fn_80253F90(bool); + void fn_80256790(); + void fn_802567D0(); + void onTouchLink(); + void fn_80255DF0(); + void fn_80254BB0(); + void setDespawnTimer(u16 timer); + void applyBoundingBox(); + s32 getTearIdx(); + void setFreestandingYOffset(f32); + void fn_8024DF30(u32 flags); + + // static PTMF callbacks + bool fn_80248020(); + bool fn_80248010(); + bool fn_80255B30(); + bool fn_80255BA0(); + bool fn_80248040(); + bool fn_80248030(); + bool fn_80255BD0(); + bool fn_80255C40(); + + // PTMF callbacks + f32 fn_80254DE0(); + f32 fn_80254DF0(); + + f32 getSmallKeyFreestandingScale(); + f32 getLowValueRupeeFreestandingScale(); + f32 getHighValueRupeeFreestandingScale(); + f32 getSlingshotFreestandingScale(); + f32 getEldinOreFreestandingScale(); + f32 getJellyBlobFreestandingScale(); + f32 getUnkTreasureGroup1FreestandingScale(); + f32 getHeartPieceFreestandingScale(); + f32 getGratitudeCrystalFreestandingScale(); + f32 getDefaultFreestandingScale(); + + f32 callGetFreestandingModelScale(); + + f32 getTreasure3Scale(); + f32 getInsectScale(); + f32 getDefaultScale(); + + f32 getHighValueRupeePickupScale(); + f32 getDefaultPickupScale(); + + void moveNormal0(); + void moveNormal1(); + void moveSpecial(); + + void fn_802555D0(); + void fn_802555F0(); + + void bounceNone(); + void bounceNormal(); + void bounceRupee(); + + void fn_802558F0(); + void fn_80255AE0(); + void fn_802558E0(); + + bool fn_80248060(); + bool fn_80248050(); + bool fn_80255D50(); + bool fn_80255DB0(); + + void setLowValueRupeeBoundingBox(); + void setHighValueRupeeBoundingBox(); + void setArrowBundleBoundingBox(); + void setDefaultBoundingBox(); + + f32 getSmallKeyGravity1(); + f32 getGreenRupeeGravity1(); + f32 getBlueRupeeGravity1(); + f32 getRedRupeeGravity1(); + f32 getHeartGravity1(); + f32 getSingleArrowGravity1(); + f32 getArrowBundleGravity1(); + f32 getSilverRupeeGravity1(); + f32 getGoldRupeeGravity1(); + f32 getRupoorGravity1(); + f32 get5BombsGravity1(); + f32 get10BombsGravity1(); + f32 getFaroreTearGravity1(); + f32 get5SeedsGravity1(); + f32 getDefaultGravity1(); + + f32 getHeartGravity2(); + + f32 getGreenRupeeGravity3(); + f32 getBlueRupeeGravity3(); + f32 getRedRupeeGravity3(); + f32 getRupoorGravity3(); + f32 getSilverRupeeGravity3(); + f32 getGoldRupeeGravity3(); + + f32 getSmallKeyGravity4(); + f32 getGreenRupeeGravity4(); + f32 getBlueRupeeGravity4(); + f32 getRedRupeeGravity4(); + f32 getHeartGravity4(); + f32 getSingleArrowGravity4(); + f32 getArrowBundleGravity4(); + f32 getSilverRupeeGravity4(); + f32 getGoldRupeeGravity4(); + f32 getRupoorGravity4(); + f32 get5BombsGravity4(); + f32 get10BombsGravity4(); + f32 getFaroreTearGravity4(); + f32 get5SeedsGravity4(); + f32 getDefaultGravit4(); + + f32 getGreenRupeeDirHitKnockback(); + f32 getBlueRupeeDirHitKnockback(); + f32 getRedRupeeDirHitKnockback(); + f32 getSilverRupeeDirHitKnockback(); + f32 getGoldRupeeDirHitKnockback(); + f32 getRupoorDirHitKnockback(); + + f32 getGreenRupeeDirHitKnockbackRand(); + f32 getBlueRupeeDirHitKnockbackRand(); + f32 getRedRupeeDirHitKnockbackRand(); + f32 getSilverRupeeDirHitKnockbackRand(); + f32 getGoldRupeeDirHitKnockbackRand(); + f32 getRupoorDirHitKnockbackRand(); + + f32 getGreenRupeeHitKnockback(); + f32 getBlueRupeeHitKnockback(); + f32 getRedRupeeHitKnockback(); + f32 getSilverRupeeHitKnockback(); + f32 getGoldRupeeHitKnockback(); + f32 getRupoorHitKnockback(); + + f32 getGreenRupeeHitKnockbackRand(); + f32 getBlueRupeeHitKnockbackRand(); + f32 getRedRupeeHitKnockbackRand(); + f32 getSilverRupeeHitKnockbackRand(); + f32 getGoldRupeeHitKnockbackRand(); + f32 getRupoorHitKnockbackRand(); + + f32 getGreenRupeeHitSquareDistance2(); + f32 getBlueRupeeHitSquareDistance2(); + f32 getRedRupeeHitSquareDistance2(); + f32 getSilverRupeeHitSquareDistance2(); + f32 getGoldRupeeHitSquareDistance2(); + f32 getRupoorHitSquareDistance2(); + f32 getHeartHitSquareDistance2(); + + f32 getGreenRupeeDirHitKnockback2(); + f32 getBlueRupeeDirHitKnockback2(); + f32 getRedRupeeDirHitKnockback2(); + f32 getSilverRupeeDirHitKnockback2(); + f32 getGoldRupeeDirHitKnockback2(); + f32 getRupoorDirHitKnockback2(); + f32 getHeartDirHitKnockback2(); + + f32 getGreenRupeeDirHitKnockbackRand2(); + f32 getBlueRupeeDirHitKnockbackRand2(); + f32 getRedRupeeDirHitKnockbackRand2(); + f32 getSilverRupeeDirHitKnockbackRand2(); + f32 getGoldRupeeDirHitKnockbackRand2(); + f32 getRupoorDirHitKnockbackRand2(); + f32 getHeartDirHitKnockbackRand2(); + + f32 getGreenRupeeHitKnockback2(); + f32 getBlueRupeeHitKnockback2(); + f32 getRedRupeeHitKnockback2(); + f32 getSilverRupeeHitKnockback2(); + f32 getGoldRupeeHitKnockback2(); + f32 getRupoorHitKnockback2(); + f32 getHeartHitKnockback2(); + + f32 getGreenRupeeHitKnockbackRand2(); + f32 getBlueRupeeHitKnockbackRand2(); + f32 getRedRupeeHitKnockbackRand2(); + f32 getSilverRupeeHitKnockbackRand2(); + f32 getGoldRupeeHitKnockbackRand2(); + f32 getRupoorHitKnockbackRand2(); + f32 getHeartHitKnockbackRand2(); + + f32 getGreenRupeeDirHitKnockback3(); + f32 getBlueRupeeDirHitKnockback3(); + f32 getRedRupeeDirHitKnockback3(); + f32 getSilverRupeeDirHitKnockback3(); + f32 getGoldRupeeDirHitKnockback3(); + f32 getRupoorDirHitKnockback3(); + f32 getHeartDirHitKnockback3(); + + f32 getGreenRupeeDirHitKnockbackRand3(); + f32 getBlueRupeeDirHitKnockbackRand3(); + f32 getRedRupeeDirHitKnockbackRand3(); + f32 getSilverRupeeDirHitKnockbackRand3(); + f32 getGoldRupeeDirHitKnockbackRand3(); + f32 getRupoorDirHitKnockbackRand3(); + f32 getHeartDirHitKnockbackRand3(); + + f32 getGreenRupeeHitKnockback3(); + f32 getBlueRupeeHitKnockback3(); + f32 getRedRupeeHitKnockback3(); + f32 getSilverRupeeHitKnockback3(); + f32 getGoldRupeeHitKnockback3(); + f32 getRupoorHitKnockback3(); + f32 getHeartHitKnockback3(); + + f32 getGreenRupeeHitKnockbackRand3(); + f32 getBlueRupeeHitKnockbackRand3(); + f32 getRedRupeeHitKnockbackRand3(); + f32 getSilverRupeeHitKnockbackRand3(); + f32 getGoldRupeeHitKnockbackRand3(); + f32 getRupoorHitKnockbackRand3(); + f32 getHeartHitKnockbackRand3(); + + f32 fn_802577C0(); + f32 fn_802577D0(); + + /* 0x334 */ dItemMdl_c *mpMdl; /* 0x338 */ dShadowCircle_c mShdw; /* 0x340 */ mVec3_c field_0x340; /* 0x34C */ nw4r::ut::Color mColorFilter; @@ -157,45 +484,45 @@ private: /* 0xA2C */ dEmitter_c mEff_0xA2C; /* 0xA60 */ dEmitter_c mEff_0xA60; /* 0xA94 */ dAcRef_c<dAcOScatterSand> mCoveredSand; - /* 0xAA0 */ dAcRef_c<dAcObjBase_c> mUnkRef; + /* 0xAA0 */ dAcRef_c<dAcObjBase_c> mForceSignRef; /* 0xAAC */ mVec3_c posCopy; /* 0xAB8 */ fLiNdBa_c mNode; /* 0xAC4 */ ActorEventRelated mEventRelated; /* 0xB14 */ DowsingTarget mDowsingTarget; /* 0xB34 */ dAcItem_0xB34 *field_0xB34[2]; - /* 0xB34 */ dAcItem_0xB34 *field_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); + /* 0xB34 */ dAcItem_0xB3C *field_0xB3C; + /* 0xB40 */ void (dAcItem_c::*mFnAction)(); + /* 0xB4C */ void (dAcItem_c::*mFnBounce)(); + /* 0xB58 */ void (dAcItem_c::*mFunc_0xB58)(); + /* 0xB64 */ void (dAcItem_c::*mFnAction3)(); + /* 0xB70 */ bool (dAcItem_c::*mFnAction4)(); + /* 0xB7C */ f32 (dAcItem_c::*mFnGetGravity1)(); + /* 0xB88 */ f32 (dAcItem_c::*mFnGetHeartGravity)(); + /* 0xB94 */ f32 (dAcItem_c::*mFnGetRupeeGravity)(); + /* 0xBA0 */ f32 (dAcItem_c::*mFnGetGravity4)(); /* 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); + /* 0xBC4 */ f32 (dAcItem_c::*mFnGetFreestandingScale)(); + /* 0xBD0 */ f32 (dAcItem_c::*mFnGetScale)(); + /* 0xBDC */ f32 (dAcItem_c::*mFnGetPickupDemoScale)(); + /* 0xBE8 */ f32 (dAcItem_c::*mFnCallGetFreestandingScale)(); + /* 0xBF4 */ f32 (dAcItem_c::*mFnGetDirHitKnockback)(); + /* 0xC00 */ f32 (dAcItem_c::*mFnGetDirHitKnockbackRand)(); + /* 0xC0C */ f32 (dAcItem_c::*mFnGetHitKnockback)(); + /* 0xC18 */ f32 (dAcItem_c::*mFnGetHitKnockbackRand)(); + /* 0xC24 */ f32 (dAcItem_c::*mFnGetHitSquareDistance2)(); + /* 0xC30 */ f32 (dAcItem_c::*mFnGetDirHitKnockback2)(); + /* 0xC3C */ f32 (dAcItem_c::*mFnGetDirHitKnockbackRand2)(); + /* 0xC48 */ f32 (dAcItem_c::*mFnGetHitKnockback2)(); + /* 0xC54 */ f32 (dAcItem_c::*mFnGetHitKnockbackRand2)(); + /* 0xC60 */ f32 (dAcItem_c::*mFnGetDirHitKnockback3)(); + /* 0xC6C */ f32 (dAcItem_c::*mFnGetDirHitKnockbackRand3)(); + /* 0xC78 */ f32 (dAcItem_c::*mFnGetHitKnockback3)(); + /* 0xC84 */ f32 (dAcItem_c::*mFnGetHitKnockbackRand3)(); + /* 0xC90 */ f32 (dAcItem_c::*mFn_0xC90)(); /* 0xC9C */ UNKTYPE (dAcItem_c::*mFunc_0xC9C)(UNKTYPE); - /* 0xCA8 */ UNKTYPE (dAcItem_c::*mFunc_0xCA8)(UNKTYPE); - /* 0xCB4 */ UNKTYPE (dAcItem_c::*mFunc_0xCB4)(UNKTYPE); + /* 0xCA8 */ void (dAcItem_c::*mFnSetBoundingBox)(); + /* 0xCB4 */ f32 (dAcItem_c::*mFn_0xCB4)(void); /* 0xCC0 */ dAcRef_c<dAcItem_c> mItemQueuePrev; /* 0xCCC */ dAcRef_c<dAcItem_c> mItemQueueNext; /* 0xCD8 */ f32 field_0xCD8; @@ -210,11 +537,11 @@ private: /* 0xD08 */ u8 _D08[0xD14 - 0xD08]; /* 0xD14 */ f32 mFreestandingOffsetH; /* 0xD18 */ f32 field_0xD18; - /* 0xD1C */ int mGetItemPouchSlot; - /* 0xD20 */ int field_0xD20; + /* 0xD1C */ s32 mGetItemPouchSlot; + /* 0xD20 */ s32 field_0xD20; /* 0xD24 */ u8 _D24[0xD2C - 0xD24]; /* 0xD2C */ u32 mFramesInAir; - /* 0xD30 */ int mItemQuantity; + /* 0xD30 */ s32 mItemQuantity; /* 0xD34 */ u32 mItemFlags; /* 0xD38 */ mAng3_c field_0xD38; /* 0xD3E */ u16 field_0xD3E; @@ -222,8 +549,7 @@ private: /* 0xD42 */ s16 field_0xD42; /* 0xD44 */ u16 mRealItemId; /* 0xD46 */ s16 mDespawnTimer; - /* 0xD48 */ u8 field_0xD48; - /* 0xD49 */ u8 field_0xD49; + /* 0xD48 */ u16 field_0xD48; /* 0xD4A */ u8 field_0xD4A; /* 0xD4B */ u8 field_0xD4B; /* 0xD4C */ u8 field_0xD4C; diff --git a/include/d/a/d_a_itembase.h b/include/d/a/d_a_itembase.h index 9f91e60d..23f64926 100644 --- a/include/d/a/d_a_itembase.h +++ b/include/d/a/d_a_itembase.h @@ -234,11 +234,17 @@ struct ItemFlagStruct { u8 mFlagKind; u8 field_0x07; }; + +struct ItemInitStruct { + u8 _0x00[0x0D - 0x00]; +}; + class dAcItemBase_c : public dAcObjBase_c { public: dAcItemBase_c() {} virtual ~dAcItemBase_c() {} virtual u16 getItemId(); + virtual u16 getItemIdFromParams() = 0; static bool isValidItemTypeIdx(int itemId); static bool getItemTypeFromId(u16 itemID, u32 *pOutType); @@ -254,9 +260,12 @@ public: return mId; } -private: +protected: u16 mId; + const ItemFlagStruct* getItemFlagStruct() const; + static const ItemFlagStruct* getItemFlagStruct(u16 id); + static const ItemFlagStruct sDefaultFlagStruct; static const ItemFlagStruct sItemFlagStructs[167]; static const u32 sItemTypeFlags[MAX_ITEM_ID - 1]; diff --git a/include/d/col/bg/d_bg_s_acch.h b/include/d/col/bg/d_bg_s_acch.h index 0d12de5d..6756420f 100644 --- a/include/d/col/bg/d_bg_s_acch.h +++ b/include/d/col/bg/d_bg_s_acch.h @@ -388,7 +388,7 @@ public: // bool ChkRoofHit() { // return MaskRoofHit(); // } - void OffClrSpeedY() { + void SetClrSpeedY() { mFlags |= CLR_SPEED_Y; } bool ChkClrSpeedY() { diff --git a/include/d/col/c/c_cc_d.h b/include/d/col/c/c_cc_d.h index 58bf05e9..23e88d40 100644 --- a/include/d/col/c/c_cc_d.h +++ b/include/d/col/c/c_cc_d.h @@ -461,6 +461,10 @@ public: void OffRPrm(u32 m) { mRPrm = (mRPrm & ~m) | m; } + + void SetCallback(cCcD_HitCallback cb) { + mHit_cb = cb; + } }; class cCcD_ObjAt : public cCcD_GAtTgCoCommonBase { @@ -491,10 +495,6 @@ public: return MskSPrm(1); } - void SetCallback(cCcD_HitCallback cb) { - mHit_cb = cb; - } - u32 MskType(u32 mask) const { return mSrc.mType & mask; } @@ -657,6 +657,10 @@ public: field_0x4B = val; } + void SetSrcField_0x0C(u16 val) { + mSrc.field_0x0C = val; + } + void SetInfo_0x1(u8 val) { mSrc.mInfo.field_0x1 = val; } @@ -665,6 +669,10 @@ public: mSrc.mInfo.field_0x2 = val; } + void OnInfo_0x2(u16 val) { + mSrc.mInfo.field_0x2 |= val; + } + public: /* 0x1C */ cCcD_SrcGObjTg mSrc; /* 0x2C */ mVec3_c mAtHitDir; @@ -858,6 +866,10 @@ public: mTg.SetFlag_0xA(flag); } + void SetTgSrcField_0x0C(u16 val) { + mTg.SetSrcField_0x0C(val); + } + bool ChkTgHit() { return mTg.MskRPrm(1) != 0 && mTg.GetActor() != nullptr; } @@ -917,6 +929,10 @@ public: mAt.SetCallback(cb); } + void SetCoCallback(cCcD_HitCallback cb) { + mCo.SetCallback(cb); + } + u32 ChkTgNoAtHitInfSet() const { return mTg.MskSPrm(0x40); } @@ -997,6 +1013,12 @@ public: void OnTgElectric() { return mTg.OnSPrm(0x40000); } + void OnTg_0x800000() { + return mTg.OnSPrm(0x800000); + } + void OnTg_0x1000000() { + return mTg.OnSPrm(0x1000000); + } void OnTg_0x8000000() { return mTg.OnSPrm(0x8000000); } @@ -1006,6 +1028,9 @@ public: void ClrTg_0x10000() { return mTg.OffSPrm(0x10000); } + void ClrTg_0x800000() { + return mTg.OffSPrm(0x800000); + } void ClrTg_0x8000000() { return mTg.OffSPrm(0x8000000); } @@ -1016,6 +1041,9 @@ public: void OnTg_0x200000() { mTg.OnSPrm(0x200000); } + void ClrTg_0x200000() { + mTg.OffSPrm(0x200000); + } void SetTg_0x4B(u8 val) { mTg.Set_0x4B(val); @@ -1026,6 +1054,9 @@ public: void SetTgInfo_0x2(u16 val) { mTg.SetInfo_0x2(val); } + void OnTgInfo_0x2(u16 val) { + mTg.OnInfo_0x2(val); + } void SetTg_0x40000000() { mTg.OnSPrm(0x40000000); } diff --git a/include/d/t/d_t_force_get_flag.h b/include/d/t/d_t_force_get_flag.h new file mode 100644 index 00000000..b2dbcba5 --- /dev/null +++ b/include/d/t/d_t_force_get_flag.h @@ -0,0 +1,13 @@ +#ifndef D_T_FORCE_GET_FLAG_H +#define D_T_FORCE_GET_FLAG_H + +#include "d/t/d_tg.h" + +class dTgForceGetFlag_c : public dTg_c { +public: + static u32 tearIdxToParam(s32 tearNumber); + +private: +}; + +#endif diff --git a/include/toBeSorted/item_mdl.h b/include/toBeSorted/item_mdl.h index 107f9980..d4771617 100644 --- a/include/toBeSorted/item_mdl.h +++ b/include/toBeSorted/item_mdl.h @@ -14,6 +14,7 @@ class dAcItem_c; // vtable at 80533eb0 class dItemMdl_c : public dMdl_c { public: + dItemMdl_c() : field_0x14(ITEM_MDL_UNK0x14_0) {} /* 0x08 */ virtual ~dItemMdl_c() {} /* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) = 0; /* 0x10 */ virtual void vt_0x10(u8) = 0; diff --git a/include/toBeSorted/item_mdl_misc.h b/include/toBeSorted/item_mdl_misc.h index a595fbcb..d34c9ff1 100644 --- a/include/toBeSorted/item_mdl_misc.h +++ b/include/toBeSorted/item_mdl_misc.h @@ -69,6 +69,7 @@ private: // Maybe a bad name because fairies etc. are also supported class dItemMdlBottle_c : public dItemMdl_c { public: + dItemMdlBottle_c() : mFlags(0) {} /* 0x08 */ virtual ~dItemMdlBottle_c() {} /* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) override; /* 0x10 */ virtual void vt_0x10(u8) override; |
