summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-09-15 22:11:00 +0200
committerrobojumper <robojumper@gmail.com>2025-09-18 14:48:02 +0200
commite9c2ac8f1a884db5724d326dbcedf9d3d2b35b53 (patch)
tree06332da404d9ec8333d5dc621447769f7c637a52 /include
parentf475873a904e924816bdab0398f1a62646763de0 (diff)
More cursor stuff WIP
Diffstat (limited to 'include')
-rw-r--r--include/d/d_cs_game.h18
-rw-r--r--include/toBeSorted/d_emitter.h6
-rw-r--r--include/toBeSorted/d_emitter_callbacks.h28
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