mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-28 08:24:59 -04:00
d_a_sea start
This commit is contained in:
@@ -87,6 +87,7 @@ struct cXyz : Vec {
|
||||
}
|
||||
|
||||
void setall(f32 f) { set(f, f, f); }
|
||||
void zero() { x = y = z = 0.0f; }
|
||||
|
||||
void setMin(const cXyz& other) {
|
||||
if (x > other.x) {
|
||||
|
||||
+18
-27
@@ -13,9 +13,9 @@ public:
|
||||
/* 0x54 */ /* vtable */
|
||||
|
||||
public:
|
||||
void Pos2Index(f32, f32*);
|
||||
void GetHeight(f32, f32);
|
||||
void GetHeight(int, int);
|
||||
int Pos2Index(f32, f32*);
|
||||
u32 GetHeight(f32, f32);
|
||||
u32 GetHeight(int, int);
|
||||
void GetArea(int, int, f32*, f32*, f32*, f32*);
|
||||
void SetInf();
|
||||
virtual ~daSea_WaterHeightInfo_Mng() {}
|
||||
@@ -26,7 +26,6 @@ struct daSea_WaveInfo__Table {
|
||||
/* 0x00 */ f32 mHeight;
|
||||
/* 0x04 */ f32 mKm;
|
||||
/* 0x08 */ s16 mPhase;
|
||||
/* 0x0A */ u8 m0A[0x0C - 0x0A];
|
||||
/* 0x0C */ f32 mScaleX;
|
||||
/* 0x10 */ f32 mScaleZ;
|
||||
/* 0x14 */ int mCounterMax;
|
||||
@@ -44,49 +43,49 @@ public:
|
||||
daSea_WaveInfo();
|
||||
virtual ~daSea_WaveInfo();
|
||||
void AddCounter();
|
||||
void GetRatio(int);
|
||||
void GetKm(int);
|
||||
void GetScale(f32);
|
||||
f32 GetRatio(int);
|
||||
f32 GetKm(int);
|
||||
f32 GetScale(f32);
|
||||
};
|
||||
|
||||
class daSea_packet_c : public J3DPacket {
|
||||
public:
|
||||
void create(cXyz&);
|
||||
bool create(cXyz&);
|
||||
void CleanUp();
|
||||
daSea_packet_c();
|
||||
void SetFlat();
|
||||
void ClrFlat();
|
||||
void CalcFlatInterTarget(cXyz&);
|
||||
f32 CalcFlatInterTarget(cXyz&);
|
||||
void CalcFlatInter();
|
||||
void SetCullStopFlag();
|
||||
void CheckRoomChange();
|
||||
void execute(cXyz&);
|
||||
void draw();
|
||||
~daSea_packet_c();
|
||||
~daSea_packet_c() {}
|
||||
|
||||
public:
|
||||
/* 0x010 */ daSea_WaterHeightInfo_Mng mWaterHeightMgr;
|
||||
/* 0x068 */ daSea_WaveInfo mWaveInfo;
|
||||
/* 0x094 */ JGeometry::TVec3<f32> mPlayerPos;
|
||||
/* 0x094 */ cXyz mPlayerPos;
|
||||
/* 0x0A0 */ int mIdxX;
|
||||
/* 0x0A4 */ int mIdxZ;
|
||||
/* 0x0A8 */ f32 mFlatInter;
|
||||
/* 0x0AC */ f32 mFlatTarget;
|
||||
/* 0x0B0 */ f32 mFlatInterCounter;
|
||||
/* 0x0B4 */ _GXTexObj mTexSea0;
|
||||
/* 0x0D4 */ _GXTexObj mTexSea1;
|
||||
/* 0x0F4 */ _GXTexObj mpTexWyurayura;
|
||||
/* 0x0B4 */ GXTexObj mTexSea0;
|
||||
/* 0x0D4 */ GXTexObj mTexSea1;
|
||||
/* 0x0F4 */ GXTexObj mpTexWyurayura;
|
||||
/* 0x114 */ f32 mDrawMinX;
|
||||
/* 0x118 */ f32 mDrawMinZ;
|
||||
/* 0x11C */ f32 mDrawMaxX;
|
||||
/* 0x120 */ f32 mDrawMaxZ;
|
||||
/* 0x124 */ float* mpHeightTable;
|
||||
/* 0x128 */ JGeometry::TVec3<f32> mCurPos;
|
||||
/* 0x134 */ JGeometry::TVec3<f32>* mpDrawVtx;
|
||||
/* 0x138 */ u8 mbIsDelete;
|
||||
/* 0x124 */ f32* mpHeightTable;
|
||||
/* 0x128 */ cXyz mCurPos;
|
||||
/* 0x134 */ cXyz* mpDrawVtx;
|
||||
/* 0x138 */ u8 mInitFlag;
|
||||
/* 0x139 */ u8 mCullStopFlag;
|
||||
/* 0x13A */ u8 m13A;
|
||||
/* 0x13B */ u8 m13B[0x13C - 0x13B];
|
||||
/* 0x13B */ u8 m13B;
|
||||
/* 0x13C */ int mRoomNo;
|
||||
/* 0x140 */ int mFlags;
|
||||
/* 0x144 */ s16 mAnimCounter;
|
||||
@@ -97,19 +96,11 @@ public:
|
||||
|
||||
class sea_class;
|
||||
|
||||
void get_wave_max(int);
|
||||
void calcMinMax(int, f32*, f32*);
|
||||
void daSea_Init();
|
||||
void daSea_ChkAreaBeforePos(f32, f32);
|
||||
bool daSea_ChkArea(f32, f32);
|
||||
f32 daSea_calcWave(f32, f32);
|
||||
void daSea_GetPoly(void*, void (*)(void*, cXyz&, cXyz&, cXyz&), const cXyz&, const cXyz&);
|
||||
void daSea_execute(cXyz&);
|
||||
void daSea_Draw(sea_class*);
|
||||
void daSea_Execute(sea_class*);
|
||||
void daSea_IsDelete(sea_class*);
|
||||
void daSea_Delete(sea_class*);
|
||||
void CheckCreateHeap(fopAc_ac_c*);
|
||||
void daSea_Create(fopAc_ac_c*);
|
||||
|
||||
#endif /* D_A_SEA_H */
|
||||
|
||||
@@ -219,6 +219,7 @@ struct dStage_Mult_info {
|
||||
/* 0x4 */ f32 mTransY;
|
||||
/* 0x8 */ s16 mAngle;
|
||||
/* 0xA */ u8 mRoomNo;
|
||||
/* 0xB */ u8 mWaveMax;
|
||||
}; // Size: 0xC
|
||||
|
||||
class dStage_Multi_c {
|
||||
|
||||
@@ -307,8 +307,8 @@ inline fopAc_ac_c* fopAcM_SearchByID(u32 id) {
|
||||
return (fopAc_ac_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)fpcSch_JudgeByID, &id);
|
||||
}
|
||||
|
||||
inline fopAc_ac_c* fopAcM_SearchByName(s16 proc_id) {
|
||||
return (fopAc_ac_c*)fopAcIt_Judge(fpcSch_JudgeForPName, &proc_id);
|
||||
inline fopAc_ac_c* fopAcM_SearchByName(s16 procName) {
|
||||
return (fopAc_ac_c*)fopAcIt_Judge(fpcSch_JudgeForPName, &procName);
|
||||
}
|
||||
|
||||
inline void dComIfGs_onItem(int bitNo, int roomNo);
|
||||
|
||||
+282
-49
@@ -4,48 +4,142 @@
|
||||
//
|
||||
|
||||
#include "d/actor/d_a_sea.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/d_stage.h"
|
||||
#include "m_Do/m_Do_lib.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
|
||||
class sea_class : public fopAc_ac_c {
|
||||
/* 0x290 */ u32 field_0x290;
|
||||
/* 0x294 */ u32 field_0x294;
|
||||
};
|
||||
|
||||
daSea_packet_c l_cloth;
|
||||
|
||||
f32 daSea_packet_c::BASE_HEIGHT = 1.0;
|
||||
|
||||
daSea_WaveInfo__Table wi_prm_ocean[4] = {
|
||||
{
|
||||
2.5f, // mHeight
|
||||
7.352941E-5f, // mKm
|
||||
0, // mPhase
|
||||
0.98f, // mScaleX
|
||||
0.2f, // mScaleZ
|
||||
200, // mCounterMax
|
||||
},
|
||||
{
|
||||
2.5f, // mHeight
|
||||
8.928571E-5f, // mKm
|
||||
4000, // mPhase
|
||||
0.2f, // mScaleX
|
||||
0.98f, // mScaleZ
|
||||
190, // mCounterMax
|
||||
},
|
||||
{
|
||||
2.5f, // mHeight
|
||||
1.13636364E-4f, // mKm
|
||||
8000, // mPhase
|
||||
-0.98f, // mScaleX
|
||||
0.2f, // mScaleZ
|
||||
210, // mCounterMax
|
||||
},
|
||||
{
|
||||
2.5f, // mHeight
|
||||
1.5625E-4f, // mKm
|
||||
12000, // mPhase
|
||||
0.2f, // mScaleX
|
||||
-0.98f, // mScaleZ
|
||||
180, // mCounterMax
|
||||
},
|
||||
};
|
||||
|
||||
u8 pos_around[16] = {
|
||||
0xFF, 0xFF, 0x00, 0XFF,
|
||||
0x01, 0xFF, 0x01, 0x00,
|
||||
0x01, 0x01, 0x00, 0x01,
|
||||
0xFF, 0x01, 0xFF, 0x00,
|
||||
};
|
||||
|
||||
/* 8015B0A4-8015B0FC .text Pos2Index__25daSea_WaterHeightInfo_MngFfPf */
|
||||
void daSea_WaterHeightInfo_Mng::Pos2Index(f32, f32*) {
|
||||
/* Nonmatching */
|
||||
int daSea_WaterHeightInfo_Mng::Pos2Index(f32 v, f32* dst) {
|
||||
int idx = (v + 450000.0f) / 100000.0f;
|
||||
if (dst != NULL)
|
||||
*dst = (v + 450000.0f) - idx * 100000.0f;
|
||||
return idx;
|
||||
}
|
||||
|
||||
/* 8015B0FC-8015B164 .text GetHeight__25daSea_WaterHeightInfo_MngFff */
|
||||
void daSea_WaterHeightInfo_Mng::GetHeight(f32, f32) {
|
||||
/* Nonmatching */
|
||||
u32 daSea_WaterHeightInfo_Mng::GetHeight(f32 x, f32 z) {
|
||||
int xi = Pos2Index(x, NULL);
|
||||
int zi = Pos2Index(z, NULL);
|
||||
return GetHeight(xi, zi);
|
||||
}
|
||||
|
||||
/* 8015B164-8015B1E8 .text get_wave_max__Fi */
|
||||
void get_wave_max(int) {
|
||||
/* Nonmatching */
|
||||
int get_wave_max(int roomNo) {
|
||||
dStage_Multi_c * multi = dComIfGp_getStage().getMulti();
|
||||
if (multi == NULL)
|
||||
return 10;
|
||||
|
||||
dStage_Mult_info* entry = multi->m_entries;
|
||||
for (int i = 0; i < multi->num; i++, entry++)
|
||||
if (roomNo == entry->mRoomNo)
|
||||
return entry->mWaveMax;
|
||||
|
||||
return 10;
|
||||
}
|
||||
|
||||
/* 8015B1E8-8015B288 .text GetHeight__25daSea_WaterHeightInfo_MngFii */
|
||||
void daSea_WaterHeightInfo_Mng::GetHeight(int, int) {
|
||||
/* Nonmatching */
|
||||
u32 daSea_WaterHeightInfo_Mng::GetHeight(int x, int z) {
|
||||
if (x < 0 || 9 <= x || z < 0 || 9 <= z)
|
||||
return 10;
|
||||
|
||||
if (dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == 7) {
|
||||
return mHeight[z][x];
|
||||
} else {
|
||||
return get_wave_max(dComIfGp_roomControl_getStayNo());
|
||||
}
|
||||
}
|
||||
|
||||
/* 8015B288-8015B2D0 .text calcMinMax__FiPfPf */
|
||||
void calcMinMax(int, f32*, f32*) {
|
||||
/* Nonmatching */
|
||||
void calcMinMax(int v, f32* min, f32* max) {
|
||||
*min = v * 100000.0f - 450000.0f;
|
||||
*max = *min + 100000.0f;
|
||||
}
|
||||
|
||||
/* 8015B2D0-8015B328 .text GetArea__25daSea_WaterHeightInfo_MngFiiPfPfPfPf */
|
||||
void daSea_WaterHeightInfo_Mng::GetArea(int, int, f32*, f32*, f32*, f32*) {
|
||||
/* Nonmatching */
|
||||
void daSea_WaterHeightInfo_Mng::GetArea(int x, int z, f32* minX, f32* minZ, f32* maxX, f32* maxZ) {
|
||||
calcMinMax(x, minX, maxX);
|
||||
calcMinMax(z, minZ, maxZ);
|
||||
}
|
||||
|
||||
/* 8015B328-8015B3FC .text SetInf__25daSea_WaterHeightInfo_MngFv */
|
||||
void daSea_WaterHeightInfo_Mng::SetInf() {
|
||||
/* Nonmatching */
|
||||
dStage_Multi_c * multi = dComIfGp_getStage().getMulti();
|
||||
|
||||
for (s32 i = 0; i < 9; i++)
|
||||
for (s32 j = 0; j < 9; j++)
|
||||
mHeight[i][j] = 10;
|
||||
|
||||
if (multi != NULL) {
|
||||
s32 roomNo = 1;
|
||||
for (s32 i = 1; i < 8; i++) {
|
||||
for (s32 j = 1; j < 8; j++) {
|
||||
mHeight[i][j] = get_wave_max(roomNo);
|
||||
roomNo++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 8015B3FC-8015B43C .text __ct__14daSea_WaveInfoFv */
|
||||
daSea_WaveInfo::daSea_WaveInfo() {
|
||||
/* Nonmatching */
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(mCounters); i++) {
|
||||
m04[i] = 0.0f;
|
||||
mCounters[i] = 0;
|
||||
}
|
||||
mCurScale = 1.0f;
|
||||
}
|
||||
|
||||
/* 8015B43C-8015B484 .text __dt__14daSea_WaveInfoFv */
|
||||
@@ -55,32 +149,77 @@ daSea_WaveInfo::~daSea_WaveInfo() {
|
||||
|
||||
/* 8015B484-8015B4D4 .text AddCounter__14daSea_WaveInfoFv */
|
||||
void daSea_WaveInfo::AddCounter() {
|
||||
/* Nonmatching */
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(mCounters); i++) {
|
||||
mCounters[i]++;
|
||||
if (mCounters[i] >= mWaveInfoTable[i].mCounterMax)
|
||||
mCounters[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8015B4D4-8015B530 .text GetRatio__14daSea_WaveInfoFi */
|
||||
void daSea_WaveInfo::GetRatio(int) {
|
||||
/* Nonmatching */
|
||||
f32 daSea_WaveInfo::GetRatio(int idx) {
|
||||
return (f32)mCounters[idx] / (f32)mWaveInfoTable[idx].mCounterMax;
|
||||
}
|
||||
|
||||
/* 8015B530-8015B54C .text GetKm__14daSea_WaveInfoFi */
|
||||
void daSea_WaveInfo::GetKm(int) {
|
||||
/* Nonmatching */
|
||||
f32 daSea_WaveInfo::GetKm(int idx) {
|
||||
return mWaveInfoTable[idx].mKm * 6.28f;
|
||||
}
|
||||
|
||||
/* 8015B54C-8015B56C .text GetScale__14daSea_WaveInfoFf */
|
||||
void daSea_WaveInfo::GetScale(f32) {
|
||||
/* Nonmatching */
|
||||
f32 daSea_WaveInfo::GetScale(f32 v) {
|
||||
mCurScale += (v - mCurScale) / 100.0f;
|
||||
return mCurScale;
|
||||
}
|
||||
|
||||
/* 8015B56C-8015B7A0 .text create__14daSea_packet_cFR4cXyz */
|
||||
void daSea_packet_c::create(cXyz&) {
|
||||
bool daSea_packet_c::create(cXyz& pos) {
|
||||
/* Nonmatching */
|
||||
BASE_HEIGHT = 1.0f;
|
||||
BASE_HEIGHT = pos.y + 1.0f;
|
||||
|
||||
mFlatInter = 0.0f;
|
||||
mpHeightTable = new f32[65 * 65];
|
||||
if (mpHeightTable == NULL)
|
||||
return true;
|
||||
|
||||
mWaterHeightMgr.SetInf();
|
||||
mWaveInfo.mWaveInfoTable = wi_prm_ocean;
|
||||
CleanUp();
|
||||
mInitFlag = true;
|
||||
mRoomNo = -1;
|
||||
mFlags = 0;
|
||||
mAnimCounter = 0;
|
||||
|
||||
ResTIMG* timg = (ResTIMG*)dComIfG_getObjectRes("Always", ALWAYS_BTI_B_SEA_TEX0AND2);
|
||||
GXInitTexObj(&mTexSea0, (char*)timg + timg->imageOffset, timg->width, timg->height,
|
||||
(GXTexFmt)timg->format, (GXTexWrapMode)timg->wrapS, (GXTexWrapMode)timg->wrapT,
|
||||
(GXBool)(timg->mipmapCount > 1));
|
||||
GXInitTexObjLOD(&mTexSea0, (GXTexFilter)timg->minFilter, (GXTexFilter)timg->magFilter,
|
||||
timg->minLOD * 0.125f, timg->maxLOD * 0.125f, 0.9f,
|
||||
(GXBool)timg->biasClamp, (GXBool)timg->doEdgeLOD,
|
||||
(GXAnisotropy)timg->maxAnisotropy);
|
||||
GXInitTexObj(&mTexSea1, (char*)timg + timg->imageOffset, timg->width, timg->height,
|
||||
(GXTexFmt)timg->format, (GXTexWrapMode)timg->wrapS, (GXTexWrapMode)timg->wrapT,
|
||||
(GXBool)(timg->mipmapCount > 1));
|
||||
GXInitTexObjLOD(&mTexSea1, (GXTexFilter)timg->minFilter, (GXTexFilter)timg->magFilter,
|
||||
timg->minLOD * 0.125f, timg->maxLOD * 0.125f, 0.0f,
|
||||
(GXBool)timg->biasClamp, (GXBool)timg->doEdgeLOD,
|
||||
(GXAnisotropy)timg->maxAnisotropy);
|
||||
|
||||
timg = (ResTIMG*)dComIfG_getObjectRes("Always", ALWAYS_BTI_B_WYURAYURA_TEX1);
|
||||
mDoLib_setResTimgObj(timg, &mpTexWyurayura, 0, NULL);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 8015B7A0-8015B7E4 .text CleanUp__14daSea_packet_cFv */
|
||||
void daSea_packet_c::CleanUp() {
|
||||
/* Nonmatching */
|
||||
s32 idx = 0;
|
||||
for (s32 i = 0; i < 65; i++)
|
||||
for (s32 j = 0; j < 65; j++)
|
||||
mpHeightTable[idx++] = BASE_HEIGHT;
|
||||
mCurPos.zero();
|
||||
}
|
||||
|
||||
/* 8015B7E4-8015B84C .text __ct__14daSea_packet_cFv */
|
||||
@@ -90,27 +229,47 @@ daSea_packet_c::daSea_packet_c() {
|
||||
|
||||
/* 8015B84C-8015B86C .text SetFlat__14daSea_packet_cFv */
|
||||
void daSea_packet_c::SetFlat() {
|
||||
/* Nonmatching */
|
||||
mFlags |= 0x01;
|
||||
mFlatTarget = 0.0f;
|
||||
mFlatInterCounter = 150.0f;
|
||||
}
|
||||
|
||||
/* 8015B86C-8015B884 .text ClrFlat__14daSea_packet_cFv */
|
||||
void daSea_packet_c::ClrFlat() {
|
||||
/* Nonmatching */
|
||||
mFlags &= ~0x01;
|
||||
mFlatInterCounter = 150.0f;
|
||||
}
|
||||
|
||||
/* 8015B884-8015BA18 .text CalcFlatInterTarget__14daSea_packet_cFR4cXyz */
|
||||
void daSea_packet_c::CalcFlatInterTarget(cXyz&) {
|
||||
f32 daSea_packet_c::CalcFlatInterTarget(cXyz&) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 8015BA18-8015BAD8 .text CalcFlatInter__14daSea_packet_cFv */
|
||||
void daSea_packet_c::CalcFlatInter() {
|
||||
/* Nonmatching */
|
||||
if (mFlags & 1) {
|
||||
if (mFlatInterCounter != 0.0f) {
|
||||
mFlatInter += (mFlatTarget - mFlatInter) / mFlatInterCounter;
|
||||
mFlatInterCounter--;
|
||||
} else {
|
||||
mFlatInter = mFlatTarget;
|
||||
}
|
||||
} else {
|
||||
f32 target = CalcFlatInterTarget(mPlayerPos);
|
||||
if (mFlatInterCounter != 0.0f) {
|
||||
mFlatInter += (target - mFlatInter) / mFlatInterCounter;
|
||||
mFlatInterCounter--;
|
||||
} else {
|
||||
mFlatInter = target;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 8015BAD8-8015BAF8 .text daSea_Init__Fv */
|
||||
void daSea_Init() {
|
||||
/* Nonmatching */
|
||||
l_cloth.mInitFlag = false;
|
||||
l_cloth.mCullStopFlag = true;
|
||||
l_cloth.m13A = true;
|
||||
}
|
||||
|
||||
/* 8015BAF8-8015BB60 .text daSea_ChkAreaBeforePos__Fff */
|
||||
@@ -135,17 +294,61 @@ void daSea_GetPoly(void*, void (*)(void*, cXyz&, cXyz&, cXyz&), const cXyz&, con
|
||||
|
||||
/* 8015C010-8015C11C .text SetCullStopFlag__14daSea_packet_cFv */
|
||||
void daSea_packet_c::SetCullStopFlag() {
|
||||
/* Nonmatching */
|
||||
/* Nonmatching */
|
||||
if (strcmp(dComIfGp_getStartStageName(), "A_umikz") == 0) {
|
||||
mCullStopFlag = false;
|
||||
} else {
|
||||
s32 height = mWaterHeightMgr.GetHeight(mIdxX, mIdxZ);
|
||||
if (height != 0) {
|
||||
mCullStopFlag = false;
|
||||
} else {
|
||||
f32 minX, minZ, maxX, maxZ;
|
||||
mWaterHeightMgr.GetArea(mIdxX, mIdxZ, &minX, &minZ, &maxX, &maxZ);
|
||||
|
||||
f32 gridZ1 = minZ + 25600.0f;
|
||||
f32 gridZ0 = minZ - 25600.0f;
|
||||
f32 gridX1 = minX + 25600.0f;
|
||||
f32 gridX0 = minX - 25600.0f;
|
||||
|
||||
if ((gridX0 < mPlayerPos.x) && (mPlayerPos.x < gridX1) && (gridZ0 < mPlayerPos.z) && (mPlayerPos.z < gridZ1))
|
||||
mCullStopFlag = true;
|
||||
else
|
||||
mCullStopFlag = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class daDaiocta_c : public fopAc_ac_c {
|
||||
public:
|
||||
/* 0x298 */ u32 field_0x298[0xB9];
|
||||
/* 0x574 */ u8 mSwitchNo;
|
||||
};
|
||||
|
||||
/* 8015C11C-8015C1DC .text CheckRoomChange__14daSea_packet_cFv */
|
||||
void daSea_packet_c::CheckRoomChange() {
|
||||
/* Nonmatching */
|
||||
dStage_roomDt_c * room = dComIfGp_roomControl_getStatusRoomDt(dComIfGp_roomControl_getStayNo());
|
||||
if (room != NULL) {
|
||||
mRoomNo = dComIfGp_roomControl_getStayNo();
|
||||
u32 procName = PROC_DAIOCTA;
|
||||
daDaiocta_c* octa = (daDaiocta_c *)fopAcM_SearchByName(PROC_DAIOCTA);
|
||||
if (octa == NULL) {
|
||||
if (mFlags & 0x01) {
|
||||
ClrFlat();
|
||||
}
|
||||
} else {
|
||||
if (!dComIfGs_isSwitch(octa->mSwitchNo, fopAcM_GetHomeRoomNo(octa))) {
|
||||
SetFlat();
|
||||
} else {
|
||||
ClrFlat();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 8015C1DC-8015C214 .text daSea_execute__FR4cXyz */
|
||||
void daSea_execute(cXyz&) {
|
||||
/* Nonmatching */
|
||||
void daSea_execute(cXyz& pos) {
|
||||
if (l_cloth.mInitFlag)
|
||||
l_cloth.execute(pos);
|
||||
}
|
||||
|
||||
/* 8015C214-8015C75C .text execute__14daSea_packet_cFR4cXyz */
|
||||
@@ -159,36 +362,66 @@ void daSea_packet_c::draw() {
|
||||
}
|
||||
|
||||
/* 8015D80C-8015D87C .text daSea_Draw__FP9sea_class */
|
||||
void daSea_Draw(sea_class*) {
|
||||
/* Nonmatching */
|
||||
BOOL daSea_Draw(sea_class* i_this) {
|
||||
dComIfGd_setListSky();
|
||||
j3dSys.getDrawBuffer(1)->entryImm(&l_cloth, 31);
|
||||
dComIfGd_setList();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 8015D87C-8015D8D0 .text daSea_Execute__FP9sea_class */
|
||||
void daSea_Execute(sea_class*) {
|
||||
/* Nonmatching */
|
||||
BOOL daSea_Execute(sea_class* i_this) {
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
cXyz pos = player->current.pos;
|
||||
l_cloth.execute(pos);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 8015D8D0-8015D8E8 .text daSea_IsDelete__FP9sea_class */
|
||||
void daSea_IsDelete(sea_class*) {
|
||||
/* Nonmatching */
|
||||
BOOL daSea_IsDelete(sea_class*) {
|
||||
l_cloth.mInitFlag = false;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 8015D8E8-8015D8F0 .text daSea_Delete__FP9sea_class */
|
||||
void daSea_Delete(sea_class*) {
|
||||
/* Nonmatching */
|
||||
BOOL daSea_Delete(sea_class*) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 8015D8F0-8015D924 .text CheckCreateHeap__FP10fopAc_ac_c */
|
||||
void CheckCreateHeap(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
BOOL CheckCreateHeap(fopAc_ac_c* i_this) {
|
||||
return l_cloth.create(i_this->current.pos);
|
||||
}
|
||||
|
||||
/* 8015D924-8015D99C .text daSea_Create__FP10fopAc_ac_c */
|
||||
void daSea_Create(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
s32 daSea_Create(fopAc_ac_c* i_this) {
|
||||
fopAcM_SetupActor(i_this, sea_class);
|
||||
if (!fopAcM_entrySolidHeap(i_this, (heapCallbackFunc)CheckCreateHeap, 0xA000))
|
||||
return cPhs_ERROR_e;
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
|
||||
/* 8015D9E4-8015DA70 .text __dt__14daSea_packet_cFv */
|
||||
daSea_packet_c::~daSea_packet_c() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
actor_method_class l_daSea_Method = {
|
||||
(process_method_func)daSea_Create,
|
||||
(process_method_func)daSea_Delete,
|
||||
(process_method_func)daSea_Execute,
|
||||
(process_method_func)daSea_IsDelete,
|
||||
(process_method_func)daSea_Draw,
|
||||
};
|
||||
|
||||
actor_process_profile_definition g_profile_SEA = {
|
||||
/* LayerID */ fpcLy_CURRENT_e,
|
||||
/* ListID */ 2,
|
||||
/* ListPrio */ fpcPi_CURRENT_e,
|
||||
/* ProcName */ PROC_SEA,
|
||||
/* Proc SubMtd */ &g_fpcLf_Method.mBase,
|
||||
/* Size */ sizeof(sea_class),
|
||||
/* SizeOther */ 0,
|
||||
/* Parameters */ 0,
|
||||
/* Leaf SubMtd */ &g_fopAc_Method.base,
|
||||
/* Priority */ 0x0077,
|
||||
/* Actor SubMtd */ &l_daSea_Method,
|
||||
/* Status */ fopAcStts_UNK40000_e,
|
||||
/* Group */ fopAc_ACTOR_e,
|
||||
/* CullType */ fopAc_CULLBOX_0_e,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user