mirror of
https://github.com/zeldaret/ss
synced 2026-09-02 01:43:04 -04:00
Refactoring
This commit is contained in:
+4
-4
@@ -27,14 +27,14 @@ public:
|
||||
/* 800509e0 */ static void initLoader();
|
||||
/* 80050a00 */ static dBase_c *createBase(ProfileName, dBase_c *, u32, u8);
|
||||
/* 80050a10 */ static dBase_c *createRoot(ProfileName, u32, u8);
|
||||
|
||||
|
||||
inline bool isBasePropertyFlag(u32 flag) const {
|
||||
return (baseProperties & flag) != 0;
|
||||
}
|
||||
private:
|
||||
/* 800509c0 */ static int loadAsyncCallback();
|
||||
/* 800509d0 */ static void unloadCallback();
|
||||
|
||||
inline bool isProcControlFlag(u32 flag) const {
|
||||
return (baseProperties & flag) != 0;
|
||||
}
|
||||
|
||||
public:
|
||||
/* 805750c0 */ static u32 s_ExecuteControlFlags;
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
#include "d/col/bg/d_bg_s.h"
|
||||
#include "d/col/cc/d_cc_s.h"
|
||||
#include "d/d_base.h"
|
||||
#include "d/d_bzs_types.h"
|
||||
#include "d/d_dylink.h"
|
||||
#include "d/d_fader.h"
|
||||
#include "d/d_bzs_types.h"
|
||||
#include "egg/gfx/eggScreen.h"
|
||||
#include "m/m_allocator.h"
|
||||
#include "m/m_dvd.h"
|
||||
@@ -48,6 +48,8 @@ public:
|
||||
STATE_FUNC_DECLARE(dStageMgr_c, RestartScene);
|
||||
|
||||
public:
|
||||
u8 getGlobalAlpha() const;
|
||||
|
||||
bool isAreaTypeNormal() const;
|
||||
bool isAreaTypeDungeon() const;
|
||||
bool isAreaTypeSky() const;
|
||||
@@ -119,7 +121,7 @@ public:
|
||||
void setStif(const STIF *stif);
|
||||
s16 getFlagIndex() const;
|
||||
|
||||
void setDemoName(const SizedString<16>& name) {
|
||||
void setDemoName(const SizedString<16> &name) {
|
||||
mDemoName = name;
|
||||
}
|
||||
|
||||
@@ -169,16 +171,16 @@ private:
|
||||
/* 0x7814 */ dParticle::tex_c mParticleTex[2];
|
||||
// ...
|
||||
/* 0x7930 */ dFader_c mFader;
|
||||
|
||||
|
||||
/* 0x7954 */ u16 mPcamCount;
|
||||
/* 0x7956 */ u16 mLyseCount;
|
||||
/* 0x7958 */ u16 mRmplCount;
|
||||
|
||||
|
||||
/* 0x795C */ const PCAM *mpPcam;
|
||||
/* 0x7960 */ const LYSE *mpLyse;
|
||||
/* 0x7964 */ const STIF *mpStif;
|
||||
/* 0x7968 */ const RMPL *mpRmpl;
|
||||
|
||||
|
||||
/* 0x799C */ mDvd_callback_c *mpDvdCallback;
|
||||
/* 0x79A0 */ mDvd_callback_c *mpDvdCallback2;
|
||||
|
||||
|
||||
@@ -177,6 +177,8 @@ private:
|
||||
|
||||
class UnkProc : public m3d::proc_c {
|
||||
public:
|
||||
bool create(int prioOpa, int prioXlu, mAllocator_c *alloc);
|
||||
bool createXlu(int prioXlu, mAllocator_c *alloc);
|
||||
private:
|
||||
};
|
||||
|
||||
@@ -188,8 +190,6 @@ public:
|
||||
}
|
||||
|
||||
virtual int entry() override;
|
||||
bool create(int prioOpa, int prioXlu, mAllocator_c *alloc);
|
||||
bool createXlu(int prioXlu, mAllocator_c *alloc);
|
||||
|
||||
virtual void drawOpa() override {
|
||||
doDraw();
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
#include "common.h"
|
||||
#include "d/d_base.h"
|
||||
#include "m/m2d.h"
|
||||
#include "m/m3d/m_proc.h"
|
||||
#include "m/m_allocator.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_color.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "toBeSorted/d_d3d.h"
|
||||
@@ -29,14 +29,16 @@ class dEmitterBase_c {
|
||||
public:
|
||||
dEmitterBase_c() : mpEmitterHead(nullptr), mpEmitterCallback(nullptr), mpParticleCallback(nullptr) {}
|
||||
|
||||
bool createEmitters(
|
||||
u16 effectResourceId, const mVec3_c &position, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
|
||||
const GXColor *c2, s32 idx1, s32 idx2
|
||||
);
|
||||
|
||||
protected:
|
||||
void deactivateEmitters();
|
||||
void stopCalcEmitters();
|
||||
void playCalcEmitters();
|
||||
bool createEmitters(
|
||||
u16 effectResourceId, const mVec3_c &position, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1, const GXColor *c2, s32 idx1, s32 idx2
|
||||
);
|
||||
static u16 fn_80028900(u16);
|
||||
static s32 getGroupId(u16);
|
||||
static void loadColors(JPABaseEmitter *emitter, const GXColor *c1, const GXColor *c2, s32 idx1, s32 idx2);
|
||||
|
||||
void setEmitterCallback(dEmitterCallback_c *cb);
|
||||
@@ -53,6 +55,7 @@ protected:
|
||||
/* 0x14 */ TListNode<dEmitterBase_c> mParticleCallbackNode;
|
||||
|
||||
public:
|
||||
// vtable at 0x1C
|
||||
virtual ~dEmitterBase_c();
|
||||
|
||||
void stopDrawParticles();
|
||||
@@ -68,13 +71,22 @@ public:
|
||||
void setAwayFromCenterSpeed(f32 speed);
|
||||
void setVolumeSize(u16 size);
|
||||
void setLifeTime(s16 lifetime);
|
||||
void attachEmitterCallbackId(s32 id); // corresponds to setup at 80028a80
|
||||
void attachEmitterCallbackId(s32 id); // corresponds to setup at 80028a80
|
||||
void bindShpEmitter(s32 id, bool unused); // corresponds to setup at 8002b6b0
|
||||
};
|
||||
|
||||
// Suggested name: dEmitter_c
|
||||
class EffectsStruct : public dEmitterBase_c {
|
||||
public:
|
||||
enum Flags_e {
|
||||
EMITTER_0x1 = 0x1,
|
||||
EMITTER_0x2 = 0x2,
|
||||
EMITTER_0x4 = 0x4,
|
||||
EMITTER_Fading = 0x8,
|
||||
EMITTER_0x10 = 0x10,
|
||||
EMITTER_0x20 = 0x20,
|
||||
};
|
||||
|
||||
// vt at 0x1C
|
||||
EffectsStruct();
|
||||
EffectsStruct(dBase_c *);
|
||||
@@ -86,6 +98,8 @@ public:
|
||||
|
||||
void addToActiveEmittersList(u16 resourceId, bool bFlags);
|
||||
void removeFromActiveEmittersList();
|
||||
void execute();
|
||||
void setFading(u8 lifetime);
|
||||
|
||||
void remove(bool bForceDeleteEmitters);
|
||||
void fn_80029920(u16 effect, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, void *, void *);
|
||||
@@ -94,22 +108,46 @@ public:
|
||||
void fn_80029A10(u16 effect, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, void *, void *);
|
||||
void fn_80029A70(u16 effect, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, void *, void *);
|
||||
|
||||
static void fn_800298C0(u16 effect, mVec3_c *pos, void *, void *, void *, void *);
|
||||
|
||||
bool hasEmitters() const {
|
||||
return mpEmitterHead != 0;
|
||||
}
|
||||
|
||||
protected:
|
||||
bool checkFlag(u32 flag) const {
|
||||
return mFlags & flag;
|
||||
}
|
||||
|
||||
void onFlag(u32 flag) {
|
||||
mFlags |= flag;
|
||||
}
|
||||
|
||||
void offFlag(u32 flag) {
|
||||
mFlags &= ~flag;
|
||||
}
|
||||
|
||||
void realizeAlpha();
|
||||
bool areAllEmittersDone();
|
||||
|
||||
protected:
|
||||
bool canReuse(u16 resourceId) const {
|
||||
return hasEmitters() && !checkFlag(EMITTER_0x2) && mEffect == resourceId;
|
||||
}
|
||||
|
||||
bool createEffect(
|
||||
bool bFlags, u16 resourceId, const mVec3_c &pos, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
|
||||
const GXColor *c2
|
||||
);
|
||||
|
||||
static bool shouldBePaused(dBase_c *owner);
|
||||
bool getOwnerPolyAttrs(s32 *pOut1, s32 *pOut2);
|
||||
|
||||
public:
|
||||
/* 0x24 */ TListNode<EffectsStruct> mNode;
|
||||
|
||||
protected:
|
||||
/* 0x28 */ dBase_c *mpOwner;
|
||||
/* 0x2C */ u8 field_0x2C;
|
||||
/* 0x2D */ u8 _0x2D[0x30 - 0x2D];
|
||||
/* 0x2C */ u8 mFadeTimer;
|
||||
/* 0x2D */ u8 mFadeDuration;
|
||||
/* 0x2E */ u8 _0x2D[0x30 - 0x2E];
|
||||
/* 0x30 */ u16 mFlags;
|
||||
/* 0x32 */ u16 mEffect;
|
||||
};
|
||||
@@ -171,7 +209,7 @@ public:
|
||||
/* 0x04 */ ParticleCallbackList mEmitterList;
|
||||
};
|
||||
|
||||
class dParticleFogProc_c : public d3d::EggTextureProc {
|
||||
class dParticleFogProc_c : public d3d::UnkProc {
|
||||
public:
|
||||
virtual ~dParticleFogProc_c() {}
|
||||
virtual void drawOpa() override {
|
||||
@@ -189,7 +227,7 @@ private:
|
||||
/* 0x1C */ bool field_0x1C;
|
||||
};
|
||||
|
||||
class dEffect2D_c : m2d::Base_c {
|
||||
class dEffect2D_c : public m2d::Base_c {
|
||||
public:
|
||||
dEffect2D_c() : m2d::Base_c(0x80) {}
|
||||
/* vt 0x08 */ virtual ~dEffect2D_c() {}
|
||||
@@ -201,11 +239,13 @@ private:
|
||||
/* 0x10 */ u32 mGroupId;
|
||||
};
|
||||
|
||||
class dJEffEmitterCallback_c : public dEmitterCallback_c {
|
||||
class dMassObjEmitterCallback_c : public dEmitterCallback_c {
|
||||
public:
|
||||
virtual ~dJEffEmitterCallback_c() {}
|
||||
virtual ~dMassObjEmitterCallback_c() {}
|
||||
virtual void executeAfter(JPABaseParticle *);
|
||||
|
||||
void execute();
|
||||
|
||||
/* 0x010 */ mVec3_c field_0x010[0x32];
|
||||
/* 0x268 */ mVec3_c field_0x268[0x32];
|
||||
/* 0x4C0 */ u8 _0x4C0[0x650 - 0x4C0];
|
||||
@@ -265,23 +305,59 @@ public:
|
||||
void init(const char *mdlName, const char *arcName, bool priority);
|
||||
void clear();
|
||||
void remove();
|
||||
void draw() {
|
||||
mProc.entry();
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x04 */ dShpEmitterProc mProc;
|
||||
/* 0xA0 */ s32 field_0xA0;
|
||||
};
|
||||
|
||||
class dJEffManager_c : public dEmitterBase_c {
|
||||
class dMassObjEmitter_c : public dEmitterBase_c {
|
||||
public:
|
||||
dJEffManager_c() : field_0x670(-1), field_0x67C(-1) {}
|
||||
virtual ~dJEffManager_c() {
|
||||
dMassObjEmitter_c() {}
|
||||
virtual ~dMassObjEmitter_c() {
|
||||
remove();
|
||||
}
|
||||
|
||||
void create(u16 resourceId);
|
||||
void remove();
|
||||
|
||||
mColor getField_0x67C() const {
|
||||
return field_0x67C;
|
||||
}
|
||||
|
||||
void execute() {
|
||||
mCallback.execute();
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x020 */ dMassObjEmitterCallback_c mCallback;
|
||||
/* 0x670 */ mColor field_0x670;
|
||||
/* 0x674 */ u8 _0x674[0x67C - 0x674];
|
||||
/* 0x67C */ mColor field_0x67C;
|
||||
};
|
||||
|
||||
class dJEffManager_c {
|
||||
public:
|
||||
static bool createEffManagers();
|
||||
static void removeEffManagers();
|
||||
static void draw(const JPADrawInfo *info, u32 groupId);
|
||||
static void draw();
|
||||
static void execute();
|
||||
static void setupEffects();
|
||||
static dEmitterBase_c *spawnEffect(
|
||||
u16 effectResourceId, const mVec3_c &position, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
|
||||
const GXColor *c2, s32 idx1, s32 idx2
|
||||
);
|
||||
static dEmitterBase_c *spawnUIEffect(
|
||||
u16 effectResourceId, const mVec3_c &position, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
|
||||
const GXColor *c2
|
||||
);
|
||||
static dEmitterBase_c *spawnEffect(
|
||||
u16 effectResourceId, const mMtx_c &transform, const GXColor *c1, const GXColor *c2, s32 idx1, s32 idx2
|
||||
);
|
||||
|
||||
enum Fx_e {
|
||||
TsuboA,
|
||||
@@ -334,16 +410,16 @@ public:
|
||||
};
|
||||
|
||||
private:
|
||||
void create(u16 resourceId);
|
||||
void remove();
|
||||
static dEmitterBase_c *spawnEffectInternal(
|
||||
u16 effectResourceId, const mVec3_c &position, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
|
||||
const GXColor *c2, s32 idx1, s32 idx2
|
||||
);
|
||||
static dEmitterBase_c *spawnEffectInternal(
|
||||
u16 effectResourceId, const mMtx_c &transform, const GXColor *c1, const GXColor *c2, s32 idx1, s32 idx2
|
||||
);
|
||||
|
||||
static mHeapAllocator_c *ms_allocator;
|
||||
static dJEffManager_c *sManagers;
|
||||
|
||||
/* 0x01C */ dJEffEmitterCallback_c mCallback;
|
||||
/* 0x670 */ s32 field_0x670;
|
||||
/* 0x674 */ u8 _0x674[0x67C - 0x674];
|
||||
/* 0x674 */ s32 field_0x67C;
|
||||
static dMassObjEmitter_c *sManagers;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user