diff options
| author | robojumper <robojumper@gmail.com> | 2025-09-15 22:11:00 +0200 |
|---|---|---|
| committer | robojumper <robojumper@gmail.com> | 2025-09-18 14:48:02 +0200 |
| commit | e9c2ac8f1a884db5724d326dbcedf9d3d2b35b53 (patch) | |
| tree | 06332da404d9ec8333d5dc621447769f7c637a52 /include | |
| parent | f475873a904e924816bdab0398f1a62646763de0 (diff) | |
More cursor stuff WIP
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/d_cs_game.h | 18 | ||||
| -rw-r--r-- | include/toBeSorted/d_emitter.h | 6 | ||||
| -rw-r--r-- | include/toBeSorted/d_emitter_callbacks.h | 28 |
3 files changed, 36 insertions, 16 deletions
diff --git a/include/d/d_cs_game.h b/include/d/d_cs_game.h index 861a4a04..2b5980be 100644 --- a/include/d/d_cs_game.h +++ b/include/d/d_cs_game.h @@ -10,6 +10,7 @@ #include "s/s_State.hpp" #include "s/s_StateID.hpp" #include "toBeSorted/d_emitter.h" +#include "toBeSorted/d_emitter_callbacks.h" struct dCsGame_HIO_c { dCsGame_HIO_c(); @@ -35,15 +36,7 @@ struct dCsGame_HIO_c { /* 0x42 */ u8 field_0x42; }; -class EffectRelatedTmp { -public: - EffectRelatedTmp(); - virtual ~EffectRelatedTmp(); - - void doSomething(EffectsStruct *s); -}; - -class EffectRelated : public EffectRelatedTmp { +class EffectRelated : public dEmitterCallback_c { public: EffectRelated(u32 x = 0x28, f32 y = 3.5f); virtual ~EffectRelated() {} @@ -130,8 +123,6 @@ public: return sInstance; } - void setSomething(int); - bool fn_801BF5E0() const; bool fn_801BF630() const; @@ -141,6 +132,7 @@ public: public: enum CursorType_e { + NONE = 0, BOW = 6, }; @@ -342,8 +334,8 @@ public: /* 0x00C */ UI_STATE_MGR_DECLARE(lytItemCursor_c); /* 0x048 */ EffectsStruct mEffects; - /* 0x07C */ EffectRelated mEffectRelated; - /* 0x080 */ u8 field_0x80[0xC8 - 0x80]; + /* 0x07C */ dEmitterCallbackCursorTrail_c mTrailCb; + /* 0x0B0 */ u8 field_0xB0[0xC8 - 0xB0]; /* 0x0C8 */ m2d::ResAccIf_c *mpResAcc; /* 0x0CC */ d2d::LytBase_c mLyt; /* 0x15C */ dCsGameAnmGroups_c mAnmGroups; diff --git a/include/toBeSorted/d_emitter.h b/include/toBeSorted/d_emitter.h index 82b11202..3a741dc0 100644 --- a/include/toBeSorted/d_emitter.h +++ b/include/toBeSorted/d_emitter.h @@ -43,15 +43,15 @@ public: return mpEmitterCallback; } + void setEmitterCallback(dEmitterCallback_c *cb); + void setParticleCallback(dParticleCallback_c *cb); + protected: void deactivateEmitters(); void stopCalcEmitters(); void playCalcEmitters(); static void loadColors(JPABaseEmitter *emitter, const GXColor *c1, const GXColor *c2, s32 idx1, s32 idx2); - void setEmitterCallback(dEmitterCallback_c *cb); - void setParticleCallback(dParticleCallback_c *cb); - void setImmortal(); static JPABaseEmitter *GetNextEmitter(JPABaseEmitter *head); diff --git a/include/toBeSorted/d_emitter_callbacks.h b/include/toBeSorted/d_emitter_callbacks.h new file mode 100644 index 00000000..710eb0bb --- /dev/null +++ b/include/toBeSorted/d_emitter_callbacks.h @@ -0,0 +1,28 @@ +#ifndef D_EMITTER_CALLBACKS_H +#define D_EMITTER_CALLBACKS_H + +#include "m/m_vec.h" +#include "toBeSorted/d_emitter.h" + +/** + * A callback responsible for emitting the trail left by the red item cursor dot. + * Used by Bow, Gust Bellows, Clawshots, Slingshot. + */ +class dEmitterCallbackCursorTrail_c : public dEmitterCallback_c { +public: + dEmitterCallbackCursorTrail_c(u32 x = 0x28, f32 y = 3.5f); + virtual ~dEmitterCallbackCursorTrail_c() {} + + virtual void executeAfter(JPABaseEmitter *) override; + virtual void create(JPABaseEmitter *) override; + virtual void vt_0x20(f32, f32) override; + +private: + /* 0x10 */ f32 field_0x10; + /* 0x14 */ u16 field_0x14; + /* 0x16 */ u8 _0x16[0x1C - 0x16]; + /* 0x1C */ mVec3_c posNMinus1; + /* 0x28 */ mVec3_c posNMinus2; +}; + +#endif |
