d_bg_s_movebg_actor OK (#23)

This commit is contained in:
TakaRikka
2023-09-12 18:29:15 -07:00
committed by GitHub
parent 4804a9e023
commit b034aecce0
8 changed files with 317 additions and 98 deletions
+1 -5
View File
@@ -11,6 +11,7 @@
#include "d/d_drawlist.h"
#include "f_op/f_op_actor_mng.h"
#include "m_Do/m_Do_ext.h"
#include "d/d_bg_w.h"
class mDoExt_MtxCalcOldFrame;
class daPy_matAnm_c;
@@ -242,11 +243,6 @@ struct MagicArmorAuraEntry {
class daPy_anmIndex_c;
class dBgW {
public:
enum PushPullLabel {};
};
class daPy_lk_c : public daPy_py_c {
public:
enum HEAP_TYPE {};
+39 -35
View File
@@ -1,9 +1,10 @@
#ifndef D_BG_D_BG_S_H
#define D_BG_D_BG_S_H
#include "global.h"
#include "SSystem/SComponent/c_sxyz.h"
#include "SSystem/SComponent/c_xyz.h"
#include "d/d_bg_w.h"
#include "global.h"
class cBgS_LinChk;
class cBgS_GndChk;
@@ -12,7 +13,6 @@ class cM3dGPla;
class cBgS_ShdwDraw;
class dBgW;
class fopAc_ac_c;
class dBgW_Base;
class dBgS_Acch;
class dBgS_RoofChk;
class dBgS_SplGrpChk;
@@ -20,19 +20,19 @@ class dBgS_SphChk;
class cBgS_ChkElm {
public:
/* 0x00 */ dBgW_Base* m_bgw_base_ptr;
/* 0x00 */ cBgW* m_bgw_base_ptr;
/* 0x04 */ bool m_used;
/* 0x08 */ u32 m_actor_id;
/* 0x0C */ fopAc_ac_c* m_actor_ptr;
/* 0x10 vtable */
public:
cBgS_ChkElm() { this->Init(); }
cBgS_ChkElm() { Init(); }
void Init();
void Release();
virtual ~cBgS_ChkElm() {}
virtual void Regist2(dBgW_Base*, unsigned int, void*);
virtual void Regist2(cBgW*, u32, void*);
bool ChkUsed() const { return m_used; }
}; // Size: 0x14
@@ -55,7 +55,7 @@ public:
f32 GroundCross(cBgS_GndChk*);
static void* ConvDzb(void*);
fopAc_ac_c* GetActorPointer(int) const;
dBgW_Base* GetBgWPointer(cBgS_PolyInfo&) const;
cBgW* GetBgWPointer(cBgS_PolyInfo&) const;
bool ChkPolySafe(cBgS_PolyInfo&);
void GetTriGrp(int, int) const;
void GetGrpToRoomId(int, int) const;
@@ -76,43 +76,47 @@ class dBgS : public cBgS {
public:
dBgS() {}
~dBgS() {}
void Ct();
void Dt();
void ClrMoveFlag();
void Move();
bool Regist(dBgW_Base*, fopAc_ac_c*);
bool ChkMoveBG(cBgS_PolyInfo const&);
bool ChkMoveBG_NoDABg(cBgS_PolyInfo const&);
s32 GetExitId(cBgS_PolyInfo const&);
s32 GetPolyColor(cBgS_PolyInfo const&);
BOOL GetHorseNoEntry(cBgS_PolyInfo const&);
int GetSpecialCode(cBgS_PolyInfo const&);
int GetMagnetCode(cBgS_PolyInfo const&);
int GetMonkeyBarsCode(cBgS_PolyInfo const&);
u32 GetUnderwaterRoofCode(cBgS_PolyInfo const&);
s32 GetWallCode(cBgS_PolyInfo const&);
int GetPolyAtt0(cBgS_PolyInfo const&);
int GetPolyAtt1(cBgS_PolyInfo const&);
int GetGroundCode(cBgS_PolyInfo const&);
s32 GetCamMoveBG(cBgS_PolyInfo const&);
s32 GetRoomCamId(cBgS_PolyInfo const&);
s32 GetRoomPathId(cBgS_PolyInfo const&);
s32 GetRoomPathPntNo(cBgS_PolyInfo const&);
u8 GetGrpSoundId(cBgS_PolyInfo const&);
u32 ChkGrpInf(cBgS_PolyInfo const&, u32);
s32 GetRoomId(cBgS_PolyInfo const&);
bool GetPolyAttackThrough(cBgS_PolyInfo const&);
u32 ChkPolyHSStick(cBgS_PolyInfo const&);
bool Regist(cBgW*, fopAc_ac_c*);
bool ChkMoveBG(cBgS_PolyInfo&);
bool ChkMoveBG_NoDABg(cBgS_PolyInfo&);
int GetPolyId0(int, int, int, u32, u32);
int GetPolyCamId(int, int);
int GetMtrlSndId(cBgS_PolyInfo&);
int GetExitId(cBgS_PolyInfo&);
int GetPolyColor(cBgS_PolyInfo&);
int GetGrpRoomInfId(cBgS_PolyInfo&);
u8 GetGrpSoundId(cBgS_PolyInfo&);
u32 ChkGrpInf(cBgS_PolyInfo&, u32);
int GetPolyId1(int, int, int, u32, u32);
void GetLinkNo(cBgS_PolyInfo&);
int GetWallCode(cBgS_PolyInfo&);
int GetSpecialCode(cBgS_PolyInfo&);
void GetAttributeCodeDirect(cBgS_PolyInfo&);
void GetAttributeCode(cBgS_PolyInfo&);
void GetGroundCode(cBgS_PolyInfo&);
void GetPolyId2(int, int, int, u32, u32);
int GetCamMoveBG(cBgS_PolyInfo&);
int GetRoomCamId(cBgS_PolyInfo&);
int GetRoomPathId(cBgS_PolyInfo&);
int GetRoomPathPntNo(cBgS_PolyInfo&);
int GetRoomId(cBgS_PolyInfo&);
u32 ChkPolyHSStick(cBgS_PolyInfo&);
void LineCrossNonMoveBG(cBgS_LinChk*);
void WallCorrect(dBgS_Acch*);
void WallCorrectSort(dBgS_Acch*);
f32 RoofChk(dBgS_RoofChk*);
bool SplGrpChk(dBgS_SplGrpChk*);
bool SphChk(dBgS_SphChk*, void*);
void MoveBgCrrPos(cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*, bool, bool);
void MoveBgTransPos(cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*);
void MoveBgMatrixCrrPos(cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*);
void RideCallBack(cBgS_PolyInfo const&, fopAc_ac_c*);
void ArrowStickCallBack(cBgS_PolyInfo const&, fopAc_ac_c*, cXyz&);
void WallCrrPos(dBgS_CrrPos*);
void MoveBgCrrPos(cBgS_PolyInfo&, bool, cXyz*, csXyz*, csXyz*);
void MoveBgTransPos(cBgS_PolyInfo&, bool, cXyz*, csXyz*, csXyz*);
void MoveBgMatrixCrrPos(cBgS_PolyInfo&, bool, cXyz*, csXyz*, csXyz*);
void RideCallBack(cBgS_PolyInfo&, fopAc_ac_c*);
void PushPullCallBack(cBgS_PolyInfo&, fopAc_ac_c*, short, dBgW::PushPullLabel);
bool WaterChk(dBgS_SplGrpChk* chk) { return SplGrpChk(chk); }
}; // Size: 0x1404
+38
View File
@@ -0,0 +1,38 @@
#ifndef D_BG_S_MOVEBG_ACTOR_H
#define D_BG_S_MOVEBG_ACTOR_H
#include "SSystem/SComponent/c_bg_s_poly_info.h"
#include "f_op/f_op_actor_mng.h"
class dBgW;
typedef void (*MoveBGActor_SetFunc)(dBgW*, void*, cBgS_PolyInfo&, bool, cXyz*, csXyz*,
csXyz*);
class dBgS_MoveBgActor : public fopAc_ac_c {
public:
/* 0x290 */ dBgW* mpBgW;
/* 0x294 */ Mtx mBgMtx;
dBgS_MoveBgActor();
int MoveBGCreateHeap();
int MoveBGCreate(char const*, int, MoveBGActor_SetFunc, u32);
int MoveBGDelete();
int MoveBGExecute();
int MoveBGDraw() { return Draw(); }
virtual int CreateHeap() { return 1; }
virtual int Create() { return 1; }
virtual int Execute(Mtx**) { return 1; }
virtual int Draw() { return 1; }
virtual int Delete() { return 1; }
virtual int IsDelete() { return 1; }
virtual int ToFore() { return 1; }
virtual int ToBack() { return 1; }
static const char* m_name;
static int m_dzb_id;
static MoveBGActor_SetFunc m_set_func;
};
#endif /* D_BG_S_MOVEBG_ACTOR_H */
+64
View File
@@ -0,0 +1,64 @@
#ifndef D_BG_W_H
#define D_BG_W_H
#include "SSystem/SComponent/c_bg_w.h"
class dBgS_Acch;
class cM3dGPla;
class dBgS_RoofChk;
class dBgS_SplGrpChk;
class dBgS_SphChk;
class cM3dGTri;
class dBgS_CrrPos;
class dBgW;
typedef void (*dBgW_CrrFunc)(dBgW*, void*, cBgS_PolyInfo&, bool, cXyz*, csXyz*, csXyz*);
class dBgW : public cBgW {
public:
enum PushPullLabel {};
dBgW();
void Move();
void positionWallCorrect(dBgS_Acch*, f32, cM3dGPla&, cXyz*, f32);
void RwgWallCorrect(dBgS_Acch*, u16);
void WallCorrectRp(dBgS_Acch*, int);
void WallCorrectGrpRp(dBgS_Acch*, int, int);
void RwgRoofChk(u16, dBgS_RoofChk*);
void RoofChkRp(dBgS_RoofChk*, int);
void RoofChkGrpRp(dBgS_RoofChk*, int, int);
void RwgSplGrpChk(u16, dBgS_SplGrpChk*);
void SplGrpChkRp(dBgS_SplGrpChk*, int);
void SplGrpChkGrpRp(dBgS_SplGrpChk*, int, int);
void RwgSphChk(u16, dBgS_SphChk*, void*);
void SphChkRp(dBgS_SphChk*, void*, int);
void SphChkGrpRp(dBgS_SphChk*, void*, int, int);
void positionWallCrrPos(cM3dGTri&, dBgS_CrrPos*, cXyz*, f32, f32);
void RwgWallCrrPos(u16, dBgS_CrrPos*);
void WallCrrPosRp(dBgS_CrrPos*, int);
void WallCrrPosGrpRp(dBgS_CrrPos*, int, int);
void WallCrrPos(dBgS_CrrPos*);
void ChangeAttributeCodeByPathPntNo(int, u32);
virtual ~dBgW() {}
virtual void ChkPolyThrough(int, cBgS_PolyPassChk*);
virtual void ChkShdwDrawThrough(int, cBgS_PolyPassChk*);
virtual void ChkGrpThrough(int, cBgS_GrpPassChk*, int);
virtual void CrrPos(cBgS_PolyInfo&, void*, bool, cXyz*, csXyz*, csXyz*);
virtual void TransPos(cBgS_PolyInfo&, void*, bool, cXyz*, csXyz*, csXyz*);
virtual void MatrixCrrPos(cBgS_PolyInfo&, void*, bool, cXyz*, csXyz*, csXyz*);
void SetCrrFunc(dBgW_CrrFunc func) { m_crr_func = func; }
/* 0xA8 */ dBgW_CrrFunc m_crr_func;
/* 0xAC */ s16 mOldRotY;
/* 0xAE */ s16 mRotYDelta;
/* 0xB0 */ void* mpRideCb;
/* 0xB4 */ void* mpPushPullCb;
/* 0xB8 */ s16 mRoomNo;
/* 0xBA */ u8 mFlag;
/* 0xBB */ u8 mRoomNo2;
};
#endif /* D_BG_W_H */