#ifndef D_BG_D_BG_S_H #define D_BG_D_BG_S_H #include "SSystem/SComponent/c_bg_s_gnd_chk.h" #include "SSystem/SComponent/c_bg_s_lin_chk.h" #include "SSystem/SComponent/c_bg_s_poly_info.h" #include "d/bg/d_bg_w.h" #include "dolphin/types.h" #include "f_op/f_op_actor.h" struct cBgW_BgId { /* 802681C8 */ void Release(); /* 802681D4 */ void ChkUsed() const; }; class cBgS_ChkElm { private: /* 0x00 */ dBgW_Base* bgw_base_pointer; /* 0x04 */ u8 used; /* 0x05 */ u8 padding[3]; /* 0x08 */ u32 field_0x8; /* 0x0C */ void* actor_pointer; /* 0x10 vtable */ public: cBgS_ChkElm(void) { this->Init(); } virtual ~cBgS_ChkElm() {} void Init(); virtual void Regist2(dBgW_Base*, unsigned int, void*); void Release(); }; // Size = 0x14 STATIC_ASSERT(sizeof(cBgS_ChkElm) == 0x14); class cBgS { private: /* 0x0000 */ cBgS_ChkElm cbgs_elements[256]; /* 0x1400 vtable */ public: cBgS() {} virtual ~cBgS() {} void Regist(dBgW_Base*, unsigned int, void*); void Release(dBgW_Base*); virtual void Ct(); virtual void Dt(); void LineCross(cBgS_LinChk*); void GroundCross(cBgS_GndChk*); void ConvDzb(void*); void GetActorPointer(int) const; void GetBgWBasePointer(cBgS_PolyInfo const&) const; void ChkPolySafe(cBgS_PolyInfo const&); void GetGrpRoomId(cBgS_PolyInfo const&) const; void GetTriPla(cBgS_PolyInfo const&, cM3dGPla*) const; void GetTriPnt(cBgS_PolyInfo const&, cXyz*, cXyz*, cXyz*) const; void ShdwDraw(cBgS_ShdwDraw*); void GetGrpInf(cBgS_PolyInfo const&) const; }; // Size = 0x1404 class dBgS_HIO { /* 0x00 */ u8 vtable[4]; /* 0x04 */ u8 field_0x4[2]; /* 0x06 */ u16 field_0x6; /* 0x08 */ u16 field_0x8; /* 0x0A */ u8 field_0xa[2]; /* 0x0C */ cXyz field_0xc; /* 0x18 */ cXyz field_0x18; /* 0x24 */ cXyz field_0x24; /* 0x30 */ u8 field_0x30[4]; }; class dBgS_Acch; class dBgS : public cBgS { public: dBgS() {} ~dBgS() {} void Ct(); void Dt(); void ClrMoveFlag(); void Move(); void Regist(dBgW_Base*, fopAc_ac_c*); void ChkMoveBG(cBgS_PolyInfo const&); void ChkMoveBG_NoDABg(cBgS_PolyInfo const&); void GetExitId(cBgS_PolyInfo const&); void GetPolyColor(cBgS_PolyInfo const&); void GetHorseNoEntry(cBgS_PolyInfo const&); void GetSpecialCode(cBgS_PolyInfo const&); void GetMagnetCode(cBgS_PolyInfo const&); void GetMonkeyBarsCode(cBgS_PolyInfo const&); void GetUnderwaterRoofCode(cBgS_PolyInfo const&); void GetWallCode(cBgS_PolyInfo const&); void GetPolyAtt0(cBgS_PolyInfo const&); void GetPolyAtt1(cBgS_PolyInfo const&); void GetGroundCode(cBgS_PolyInfo const&); void GetCamMoveBG(cBgS_PolyInfo const&); void GetRoomCamId(cBgS_PolyInfo const&); void GetRoomPathId(cBgS_PolyInfo const&); void GetRoomPathPntNo(cBgS_PolyInfo const&); void GetGrpSoundId(cBgS_PolyInfo const&); void ChkGrpInf(cBgS_PolyInfo const&, u32); void GetRoomId(cBgS_PolyInfo const&); void GetPolyAttackThrough(cBgS_PolyInfo const&); void ChkPolyHSStick(cBgS_PolyInfo const&); void WallCorrect(dBgS_Acch*); void WallCorrectSort(dBgS_Acch*); void RoofChk(dBgS_RoofChk*); void SplGrpChk(dBgS_SplGrpChk*); void 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 PushPullCallBack(cBgS_PolyInfo const&, fopAc_ac_c*, s16, dBgW_Base::PushPullLabel); private: // /* 0x0000 */ cBgS cbgs; // /* 0x1400 */ void* vtable; }; #endif /* D_BG_D_BG_S_H */