mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-29 18:52:16 -04:00
water_mark / wpillar done, minigame_starter wip (#1069)
* d_minigame_starter attempt * water_mark / wpillar done * review changes
This commit is contained in:
+2
-2
@@ -663,9 +663,9 @@ config.libs = [
|
||||
Object(NonMatching, "d/d_scope.cpp"),
|
||||
Object(Matching, "d/d_throwstone.cpp"),
|
||||
Object(Matching, "d/d_timer.cpp"),
|
||||
Object(NonMatching, "d/d_water_mark.cpp"),
|
||||
Object(Matching, "d/d_water_mark.cpp"),
|
||||
Object(Matching, "d/d_wind_arrow.cpp"),
|
||||
Object(NonMatching, "d/d_wpillar.cpp"),
|
||||
Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_wpillar.cpp"),
|
||||
Object(Matching, "d/d_wpot_water.cpp"),
|
||||
],
|
||||
},
|
||||
|
||||
@@ -1865,8 +1865,8 @@ public:
|
||||
|
||||
J3DAnmTextureSRTKey* getIceParticleBtk() { return mpGicer00Btk; }
|
||||
J3DAnmTextureSRTKey* getIceWaterParticleBtk() { return mpGicer01Btk; }
|
||||
void getBombWaterPillarBrk() {} // mpGwp00BrkData?
|
||||
void getBombWaterPillarBtk() {} // mpGwp00BtkData?
|
||||
J3DAnmTevRegKey* getBombWaterPillarBrk() { return mpGwp00BrkData; }
|
||||
J3DAnmTextureSRTKey* getBombWaterPillarBtk() { return mpGwp00BtkData; }
|
||||
|
||||
BOOL checkSwordEquip() const {
|
||||
return dComIfGs_getSelectEquip(0) != dItemNo_NONE_e || checkSwordMiniGame();
|
||||
|
||||
@@ -1,38 +1,56 @@
|
||||
#ifndef D_MINIGAME_STARTER_H
|
||||
#define D_MINIGAME_STARTER_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_msg.h"
|
||||
#include "f_op/f_op_msg_mng.h"
|
||||
#include "d/d_drawlist.h"
|
||||
|
||||
class JKRArchive;
|
||||
struct fopMsgM_pane_class;
|
||||
class J2DScreen;
|
||||
|
||||
class dDlst_StarterScrnDraw_c {
|
||||
class dDlst_StarterScrnDraw_c : public dDlst_base_c {
|
||||
public:
|
||||
void acc(s16, s16, s16) {}
|
||||
|
||||
void setScreen(const char*, JKRArchive*);
|
||||
void anime1(int);
|
||||
void anime2();
|
||||
BOOL anime1(int);
|
||||
BOOL anime2();
|
||||
void scaleAnime(f32);
|
||||
void setRotate(fopMsgM_pane_class*, f32);
|
||||
void draw();
|
||||
|
||||
virtual ~dDlst_StarterScrnDraw_c() {}
|
||||
virtual void draw();
|
||||
|
||||
/* 0x004 */ J2DScreen* mpScrn;
|
||||
#if VERSION > VERSION_JPN
|
||||
/* 0x008 */ fopMsgM_pane_class field_0x008[7];
|
||||
#else
|
||||
/* 0x008 */ fopMsgM_pane_class field_0x008[3];
|
||||
#endif
|
||||
/* 0x190 */ fopMsgM_pane_class field_0x190;
|
||||
/* 0x1C8 */ fopMsgM_pane_class field_0x1c8[3];
|
||||
/* 0x270 */ fopMsgM_pane_class field_0x270[3];
|
||||
};
|
||||
|
||||
class dMinigame_Starter_c : public msg_class {
|
||||
public:
|
||||
void countStart() { if (!field_0x111) field_0x111 = true; }
|
||||
void countStart() { if (!mStatus) mStatus = 1; }
|
||||
|
||||
void _create();
|
||||
void _execute();
|
||||
void _draw();
|
||||
void _delete();
|
||||
cPhs_State _create();
|
||||
BOOL _execute();
|
||||
BOOL _draw();
|
||||
BOOL _delete();
|
||||
BOOL startCheck();
|
||||
BOOL deleteCheck();
|
||||
|
||||
public:
|
||||
/* 0x0FC */ u8 field_0x0FC[0x111 - 0x0FC];
|
||||
/* 0x111 */ bool field_0x111;
|
||||
/* 0x112 */ u8 field_0x112[0x114 - 0x112];
|
||||
/* 0x0FC */ dDlst_StarterScrnDraw_c* mStarterScrn;
|
||||
/* 0x100 */ request_of_phase_process_class mPhase;
|
||||
/* 0x108 */ JKRSolidHeap* mHeap;
|
||||
/* 0x10C */ s16 mTimer;
|
||||
/* 0x10E */ s16 field_0x10e;
|
||||
/* 0x110 */ u8 field_0x110;
|
||||
/* 0x111 */ u8 mStatus;
|
||||
}; // Size: 0x114
|
||||
|
||||
#endif /* D_MINIGAME_STARTER_H */
|
||||
|
||||
@@ -2,19 +2,33 @@
|
||||
#define D_WATER_MARK_H
|
||||
|
||||
#include "SSystem/SComponent/c_phase.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "d/d_bg_s_gnd_chk.h"
|
||||
#include "f_op/f_op_kankyo.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "f_op/f_op_kankyo_mng.h"
|
||||
|
||||
class dWaterMark_c : public kankyo_class {
|
||||
public:
|
||||
inline BOOL draw();
|
||||
inline BOOL execute();
|
||||
inline BOOL wm_delete();
|
||||
void setMatrix();
|
||||
BOOL setMatrix();
|
||||
inline cPhs_State create();
|
||||
|
||||
static s16 m_circle_cnt;
|
||||
static s16 m_player_foot_now_id;
|
||||
static dBgS_ObjGndChk m_ground_check;
|
||||
|
||||
public:
|
||||
/* Place member variables here */
|
||||
/* 0x0F8 */ JKRSolidHeap* mpHeap;
|
||||
/* 0x0FC */ J3DModel* mpModel;
|
||||
/* 0x100 */ mDoExt_brkAnm mBrk;
|
||||
/* 0x118 */ mDoExt_btpAnm mBtp;
|
||||
/* 0x12C */ s16 field_0x12c;
|
||||
/* 0x12E */ s16 field_0x12e;
|
||||
/* 0x130 */ s16 field_0x130;
|
||||
/* 0x132 */ s16 field_0x132;
|
||||
/* 0x134 */ s16 field_0x134;
|
||||
};
|
||||
|
||||
#endif /* D_WATER_MARK_H */
|
||||
|
||||
@@ -1,19 +1,25 @@
|
||||
#ifndef D_WPILLAR_H
|
||||
#define D_WPILLAR_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_kankyo.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "f_op/f_op_kankyo_mng.h"
|
||||
|
||||
class dWpillar_c : public kankyo_class {
|
||||
public:
|
||||
void jointCallBack(int);
|
||||
int jointCallBack(int);
|
||||
BOOL draw();
|
||||
BOOL execute();
|
||||
BOOL wp_delete();
|
||||
cPhs_State create();
|
||||
|
||||
public:
|
||||
/* Place member variables here */
|
||||
/* 0x0F8 */ J3DModel* mpModel;
|
||||
/* 0x0FC */ mDoExt_bckAnm mBck;
|
||||
/* 0x10C */ mDoExt_btkAnm mBtk;
|
||||
/* 0x120 */ JKRSolidHeap* mpHeap;
|
||||
/* 0x124 */ dKy_tevstr_c mTevstr;
|
||||
/* 0x1D4 */ f32 mHeight;
|
||||
};
|
||||
|
||||
#endif /* D_WPILLAR_H */
|
||||
|
||||
+336
-31
@@ -7,88 +7,393 @@
|
||||
#include "d/d_minigame_starter.h"
|
||||
#include "f_op/f_op_msg.h"
|
||||
#include "f_op/f_op_msg_mng.h"
|
||||
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
|
||||
#include "d/d_meter.h"
|
||||
#include "stdio.h"
|
||||
|
||||
static s16 cdFrame0 = 7;
|
||||
static s16 cdFrame1 = 3;
|
||||
static s16 tmFrame = 5;
|
||||
static s16 cdFrame2 = 15;
|
||||
static s16 cdFrame3 = 5;
|
||||
static s16 cdFrame4 = 7;
|
||||
static s16 cdFrame5 = 3;
|
||||
static s16 cdFrame6 = 4;
|
||||
static s16 cdFrame7 = 4;
|
||||
static s16 cdFrame8 = 6;
|
||||
|
||||
#if VERSION > VERSION_JPN
|
||||
static s16 dMinigame_Starter_tex_number = 3;
|
||||
#endif
|
||||
|
||||
/* 80205FE8-80206124 .text _create__19dMinigame_Starter_cFv */
|
||||
void dMinigame_Starter_c::_create() {
|
||||
/* Nonmatching */
|
||||
// NONMATCHING - missing b
|
||||
cPhs_State dMinigame_Starter_c::_create() {
|
||||
if (dComIfG_resLoad(&mPhase, "Mgst") == cPhs_COMPLEATE_e) {
|
||||
dRes_info_c* resInfo = dComIfG_getObjectResInfo("Mgst");
|
||||
JUT_ASSERT(VERSION_SELECT(80, 80, 86, 86), resInfo != NULL);
|
||||
|
||||
mHeap = mDoExt_createSolidHeapFromGameToCurrent(VERSION_SELECT(0x13E0, 0x13E0, 0x14C0, 0x1AC0), 0x20);
|
||||
if (mHeap != NULL) {
|
||||
mStarterScrn = new dDlst_StarterScrnDraw_c();
|
||||
|
||||
#if VERSION == VERSION_PAL
|
||||
char resname[32];
|
||||
sprintf(resname, "ship_race1_%d.blo", dComIfGs_getPalLanguage());
|
||||
mStarterScrn->setScreen(resname, resInfo->getArchive());
|
||||
#else
|
||||
mStarterScrn->setScreen("ship_race1.blo", resInfo->getArchive());
|
||||
#endif
|
||||
mDoExt_restoreCurrentHeap();
|
||||
mDoExt_adjustSolidHeap(mHeap);
|
||||
} else {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
mStatus = 0;
|
||||
mTimer = 0;
|
||||
field_0x10e = 3;
|
||||
}
|
||||
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
|
||||
/* 80206124-8020629C .text _execute__19dMinigame_Starter_cFv */
|
||||
void dMinigame_Starter_c::_execute() {
|
||||
/* Nonmatching */
|
||||
// NONMATCHING - instruction ordering
|
||||
BOOL dMinigame_Starter_c::_execute() {
|
||||
int var_r30 = (cdFrame0 + cdFrame1 + tmFrame + cdFrame2 + cdFrame3) - 30;
|
||||
int var_r29 = (cdFrame4 + cdFrame5 + cdFrame6 + cdFrame7 + cdFrame8) - 23;
|
||||
|
||||
if (mStatus == 0) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int var_r31 = var_r30 * 3;
|
||||
|
||||
if (mTimer < (var_r31 + var_r29) + 137) {
|
||||
mTimer++;
|
||||
if (mTimer >= (var_r31 + var_r29) + 89) {
|
||||
mStatus = 2;
|
||||
}
|
||||
} else {
|
||||
mStatus = 3;
|
||||
}
|
||||
|
||||
if (mTimer <= var_r30 + 30) {
|
||||
mStarterScrn->anime1(2);
|
||||
}
|
||||
|
||||
if (mTimer >= var_r30 + 28 && mTimer <= (var_r30 * 2) + 57) {
|
||||
mStarterScrn->anime1(1);
|
||||
}
|
||||
|
||||
if (mTimer >= (var_r30 * 2) + 55 && mTimer <= var_r31 + 84) {
|
||||
mStarterScrn->anime1(0);
|
||||
}
|
||||
|
||||
if (mTimer >= var_r31 + 84 && mTimer <= (var_r31 + var_r29) + 107) {
|
||||
mStarterScrn->anime2();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 8020629C-802062DC .text _draw__19dMinigame_Starter_cFv */
|
||||
void dMinigame_Starter_c::_draw() {
|
||||
/* Nonmatching */
|
||||
BOOL dMinigame_Starter_c::_draw() {
|
||||
dComIfGd_set2DOpa(mStarterScrn);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 802062DC-80206328 .text _delete__19dMinigame_Starter_cFv */
|
||||
void dMinigame_Starter_c::_delete() {
|
||||
/* Nonmatching */
|
||||
BOOL dMinigame_Starter_c::_delete() {
|
||||
if (mHeap != NULL) {
|
||||
mDoExt_destroySolidHeap(mHeap);
|
||||
}
|
||||
|
||||
dComIfG_resDelete(&mPhase, "Mgst");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 80206328-8020634C .text startCheck__19dMinigame_Starter_cFv */
|
||||
BOOL dMinigame_Starter_c::startCheck() {
|
||||
/* Nonmatching */
|
||||
return mStatus == 3 || mStatus == 2;
|
||||
}
|
||||
|
||||
/* 8020634C-80206360 .text deleteCheck__19dMinigame_Starter_cFv */
|
||||
BOOL dMinigame_Starter_c::deleteCheck() {
|
||||
/* Nonmatching */
|
||||
return mStatus == 3;
|
||||
}
|
||||
|
||||
/* 80206360-802064DC .text setScreen__23dDlst_StarterScrnDraw_cFPCcP10JKRArchive */
|
||||
void dDlst_StarterScrnDraw_c::setScreen(const char*, JKRArchive*) {
|
||||
/* Nonmatching */
|
||||
void dDlst_StarterScrnDraw_c::setScreen(const char* i_layoutName, JKRArchive* i_archive) {
|
||||
mpScrn = new J2DScreen();
|
||||
mpScrn->set(i_layoutName, i_archive);
|
||||
|
||||
#if VERSION == VERSION_PAL
|
||||
if (dComIfGs_getPalLanguage() == 2) {
|
||||
dMinigame_Starter_tex_number = 7;
|
||||
for (int i = 0; i < dMinigame_Starter_tex_number; i++) {
|
||||
static u32 label_t_fr[] = {
|
||||
'gog',
|
||||
'goo',
|
||||
'goex',
|
||||
'got',
|
||||
'goe2',
|
||||
'goz',
|
||||
'goe3',
|
||||
};
|
||||
fopMsgM_setPaneData(&field_0x008[i], mpScrn, label_t_fr[i]);
|
||||
}
|
||||
} else if (dComIfGs_getPalLanguage() == 0) {
|
||||
dMinigame_Starter_tex_number = 3;
|
||||
for (int i = 0; i < dMinigame_Starter_tex_number; i++) {
|
||||
static u32 label_t_uk[] = {
|
||||
'gog',
|
||||
'goo',
|
||||
'goex',
|
||||
};
|
||||
fopMsgM_setPaneData(&field_0x008[i], mpScrn, label_t_uk[i]);
|
||||
}
|
||||
} else {
|
||||
dMinigame_Starter_tex_number = 4;
|
||||
for (int i = 0; i < dMinigame_Starter_tex_number; i++) {
|
||||
static u32 label_t[] = {
|
||||
'gog',
|
||||
'goo',
|
||||
'goex',
|
||||
'goe2',
|
||||
};
|
||||
fopMsgM_setPaneData(&field_0x008[i], mpScrn, label_t[i]);
|
||||
}
|
||||
}
|
||||
#elif VERSION == VERSION_USA
|
||||
for (int i = 0; i < dMinigame_Starter_tex_number; i++) {
|
||||
static u32 label_t[] = {
|
||||
'gog',
|
||||
'goo',
|
||||
'goex',
|
||||
};
|
||||
fopMsgM_setPaneData(&field_0x008[i], mpScrn, label_t[i]);
|
||||
}
|
||||
#else
|
||||
fopMsgM_setPaneData(&field_0x008[0], mpScrn, 'gog');
|
||||
fopMsgM_setPaneData(&field_0x008[1], mpScrn, 'goo');
|
||||
fopMsgM_setPaneData(&field_0x008[2], mpScrn, 'goex');
|
||||
#endif
|
||||
|
||||
fopMsgM_setPaneData(&field_0x190, mpScrn, 'dmgo');
|
||||
fopMsgM_setPaneData(&field_0x1c8[0], mpScrn, 'go1');
|
||||
fopMsgM_setPaneData(&field_0x1c8[1], mpScrn, 'go2');
|
||||
fopMsgM_setPaneData(&field_0x1c8[2], mpScrn, 'go3');
|
||||
fopMsgM_setPaneData(&field_0x270[0], mpScrn, 'go12');
|
||||
fopMsgM_setPaneData(&field_0x270[1], mpScrn, 'go22');
|
||||
fopMsgM_setPaneData(&field_0x270[2], mpScrn, 'go32');
|
||||
}
|
||||
|
||||
/* 802064DC-80206908 .text anime1__23dDlst_StarterScrnDraw_cFi */
|
||||
void dDlst_StarterScrnDraw_c::anime1(int) {
|
||||
/* Nonmatching */
|
||||
// NONMATCHING - a lot of float math stuff
|
||||
BOOL dDlst_StarterScrnDraw_c::anime1(int i_no) {
|
||||
f32 temp_f1 = -8.0f;
|
||||
int rt = 0;
|
||||
|
||||
s16 var_r30 = cdFrame0;
|
||||
s16 var_r31 = cdFrame0 + cdFrame1;
|
||||
s16 temp_r6 = cdFrame0 + cdFrame1 + tmFrame;
|
||||
s16 var_r27 = cdFrame2 + temp_r6;
|
||||
s16 temp_r7 = cdFrame3 + var_r27;
|
||||
|
||||
field_0x1c8[i_no].mUserArea++;
|
||||
|
||||
s16 temp_r0 = field_0x1c8[i_no].mUserArea;
|
||||
if (temp_r0 <= var_r30) {
|
||||
fopMsgM_paneScaleXY(&field_0x270[i_no], ((f32)field_0x1c8[i_no].mUserArea * (f32)field_0x1c8[i_no].mUserArea) / ((f32)var_r31 * (f32)var_r31) * 0.3f + 0.7f);
|
||||
fopMsgM_setNowAlpha(&field_0x270[i_no], ((f32)field_0x1c8[i_no].mUserArea * (f32)field_0x1c8[i_no].mUserArea) / ((f32)var_r30 * (f32)var_r30));
|
||||
} else if (temp_r0 <= var_r31) {
|
||||
f32 var_f31 = ((f32)(temp_r0 - var_r30) * (f32)(temp_r0 - var_r30)) / ((f32)(var_r31 - var_r30) * (f32)(var_r31 - var_r30));
|
||||
fopMsgM_paneScaleXY(&field_0x1c8[i_no], var_f31 * 0.3f + 0.7f);
|
||||
fopMsgM_setNowAlpha(&field_0x1c8[i_no], var_f31);
|
||||
|
||||
fopMsgM_paneScaleXY(&field_0x270[i_no], ((f32)field_0x1c8[i_no].mUserArea * (f32)field_0x1c8[i_no].mUserArea) / ((f32)var_r31 * (f32)var_r31) * 0.3f + 0.7f);
|
||||
fopMsgM_setNowAlpha(&field_0x270[i_no], 1.0f - var_f31);
|
||||
|
||||
if (field_0x1c8[i_no].mUserArea == var_r31) {
|
||||
mDoAud_seStart(JA_SE_SGAME_COUNTDOWN, NULL);
|
||||
}
|
||||
} else if (temp_r6 > temp_r0) {
|
||||
if (temp_r0 <= var_r27) {
|
||||
if (((temp_r6 - temp_r0) / ((var_r27 - temp_r0) / 4)) % 2)
|
||||
temp_f1 *= -1.0f;
|
||||
setRotate(&field_0x1c8[i_no], temp_f1);
|
||||
} else if (temp_r0 < temp_r7) {
|
||||
f32 var_f31 = temp_r0 - var_r27;
|
||||
fopMsgM_paneScaleXY(&field_0x1c8[i_no], ((((f32)temp_r0 - var_r27) * ((f32)temp_r0 - var_r27)) / var_f31) * 2.0f + 1.0f);
|
||||
|
||||
f32 temp_f1_2 = ((f32)(field_0x1c8[i_no].mUserArea - var_r27) * (f32)(field_0x1c8[i_no].mUserArea - var_r27)) / var_f31;
|
||||
fopMsgM_setNowAlpha(&field_0x1c8[i_no], 1.0f - temp_f1_2);
|
||||
} else {
|
||||
fopMsgM_paneScaleXY(&field_0x1c8[i_no], 3.0f);
|
||||
fopMsgM_setNowAlphaZero(&field_0x1c8[i_no]);
|
||||
rt = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return rt;
|
||||
}
|
||||
|
||||
/* 80206908-80206CB0 .text anime2__23dDlst_StarterScrnDraw_cFv */
|
||||
void dDlst_StarterScrnDraw_c::anime2() {
|
||||
/* Nonmatching */
|
||||
// NONMATCHING - a lot of float math stuff
|
||||
BOOL dDlst_StarterScrnDraw_c::anime2() {
|
||||
int rt = 0;
|
||||
|
||||
s16 var_r30 = cdFrame4;
|
||||
s16 var_r31 = cdFrame4 + cdFrame5;
|
||||
s16 temp_r6 = cdFrame4 + cdFrame5 + cdFrame6;
|
||||
s16 var_r27 = cdFrame7 + temp_r6;
|
||||
s16 temp_r7 = cdFrame8 + var_r27;
|
||||
|
||||
field_0x008[0].mUserArea++;
|
||||
|
||||
s16 temp_r0 = field_0x008[0].mUserArea;
|
||||
if (temp_r0 <= var_r30) {
|
||||
f32 var_f31 = ((f32)field_0x008[0].mUserArea * (f32)field_0x008[0].mUserArea) / ((f32)var_r30 * (f32)var_r30);
|
||||
scaleAnime((3.0f - var_f31 * 2.2f) * g_menuHIO.field_0x14);
|
||||
setRotate(&field_0x190, 90.0f - var_f31 * 65.0f);
|
||||
fopMsgM_setNowAlpha(&field_0x008[0], var_f31);
|
||||
} else if (temp_r0 <= var_r31) {
|
||||
f32 var_f31 = ((f32)(temp_r0 - var_r30) * (f32)(temp_r0 - var_r30)) / ((f32)(var_r31 - var_r30) * (f32)(var_r31 - var_r30));
|
||||
scaleAnime((0.8f - var_f31 * -0.2f) * g_menuHIO.field_0x14);
|
||||
|
||||
if (field_0x008[0].mUserArea == var_r31) {
|
||||
mDoAud_seStart(JA_SE_SGAME_COUNT_GO, NULL);
|
||||
}
|
||||
} else if (temp_r6 > temp_r0) {
|
||||
if (temp_r0 <= var_r27) {
|
||||
f32 var_f31 = ((f32)(temp_r0 - temp_r6) * (f32)(temp_r0 - temp_r6)) / ((f32)(var_r27 - temp_r6) * (f32)(var_r27 - temp_r6));
|
||||
setRotate(&field_0x190, 25.0f - var_f31 * -35.0f);
|
||||
} else if (temp_r0 < temp_r7) {
|
||||
f32 var_f31 = ((f32)(temp_r0 - var_r27) * (f32)(temp_r0 - var_r27)) / ((f32)(temp_r0 - temp_r7) * (f32)(temp_r0 - temp_r7));
|
||||
f32 var_f30 = 1.0f - var_f31;
|
||||
scaleAnime((1.0f - var_f31 * 0.5f) * g_menuHIO.field_0x14);
|
||||
setRotate(&field_0x190, 60.0f - var_f31 * -210.0f);
|
||||
fopMsgM_setNowAlpha(&field_0x008[0], var_f30);
|
||||
} else {
|
||||
scaleAnime(g_menuHIO.field_0x14 * 0.5f);
|
||||
setRotate(&field_0x190, -90.0f);
|
||||
fopMsgM_setNowAlphaZero(&field_0x008[0]);
|
||||
rt = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return rt;
|
||||
}
|
||||
|
||||
/* 80206CB0-80206DA4 .text scaleAnime__23dDlst_StarterScrnDraw_cFf */
|
||||
void dDlst_StarterScrnDraw_c::scaleAnime(f32) {
|
||||
/* Nonmatching */
|
||||
void dDlst_StarterScrnDraw_c::scaleAnime(f32 i_scale) {
|
||||
field_0x190.mSize.x = field_0x190.mSizeOrig.x * i_scale;
|
||||
field_0x190.mSize.y = field_0x190.mSizeOrig.y * i_scale;
|
||||
|
||||
#if VERSION > VERSION_JPN
|
||||
for (int i = 0; i < dMinigame_Starter_tex_number; i++) {
|
||||
field_0x008[i].mSize.x = field_0x008[i].mSizeOrig.x * i_scale;
|
||||
field_0x008[i].mSize.y = field_0x008[i].mSizeOrig.y * i_scale;
|
||||
}
|
||||
#else
|
||||
field_0x008[0].mSize.x = field_0x008[0].mSizeOrig.x * i_scale;
|
||||
field_0x008[0].mSize.y = field_0x008[0].mSizeOrig.y * i_scale;
|
||||
field_0x008[1].mSize.x = field_0x008[1].mSizeOrig.x * i_scale;
|
||||
field_0x008[1].mSize.y = field_0x008[1].mSizeOrig.y * i_scale;
|
||||
field_0x008[2].mSize.x = field_0x008[2].mSizeOrig.x * i_scale;
|
||||
field_0x008[2].mSize.y = field_0x008[2].mSizeOrig.y * i_scale;
|
||||
#endif
|
||||
|
||||
field_0x190.mPosCenter.x = field_0x190.mPosCenterOrig.x;
|
||||
field_0x190.mPosCenter.y = field_0x190.mPosCenterOrig.y;
|
||||
fopMsgM_cposMove(&field_0x190);
|
||||
|
||||
#if VERSION > VERSION_JPN
|
||||
for (int i = 0; i < dMinigame_Starter_tex_number; i++) {
|
||||
field_0x008[i].mPosCenter.x = field_0x008[i].mPosCenterOrig.x * i_scale;
|
||||
field_0x008[i].mPosCenter.y = field_0x008[i].mPosCenterOrig.y * i_scale;
|
||||
fopMsgM_cposMove(&field_0x008[i]);
|
||||
}
|
||||
#else
|
||||
field_0x008[0].mPosCenter.x = field_0x008[0].mPosCenterOrig.x * i_scale;
|
||||
field_0x008[0].mPosCenter.y = field_0x008[0].mPosCenterOrig.y * i_scale;
|
||||
fopMsgM_cposMove(&field_0x008[0]);
|
||||
|
||||
field_0x008[1].mPosCenter.x = field_0x008[1].mPosCenterOrig.x * i_scale;
|
||||
field_0x008[1].mPosCenter.y = field_0x008[1].mPosCenterOrig.y * i_scale;
|
||||
fopMsgM_cposMove(&field_0x008[1]);
|
||||
|
||||
field_0x008[2].mPosCenter.x = field_0x008[2].mPosCenterOrig.x * i_scale;
|
||||
field_0x008[2].mPosCenter.y = field_0x008[2].mPosCenterOrig.y * i_scale;
|
||||
fopMsgM_cposMove(&field_0x008[2]);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* 80206DA4-80206E44 .text setRotate__23dDlst_StarterScrnDraw_cFP18fopMsgM_pane_classf */
|
||||
void dDlst_StarterScrnDraw_c::setRotate(fopMsgM_pane_class*, f32) {
|
||||
/* Nonmatching */
|
||||
void dDlst_StarterScrnDraw_c::setRotate(fopMsgM_pane_class* i_pane, f32 i_angle) {
|
||||
i_pane->pane->rotate((int)(i_pane->mSize.x / 2), (int)(i_pane->mSize.y / 2), ROTATE_Z, i_angle);
|
||||
}
|
||||
|
||||
/* 80206E44-80206EDC .text draw__23dDlst_StarterScrnDraw_cFv */
|
||||
void dDlst_StarterScrnDraw_c::draw() {
|
||||
/* Nonmatching */
|
||||
fopMsgM_setAlpha(&field_0x008[0]);
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
fopMsgM_setAlpha(&field_0x1c8[i]);
|
||||
fopMsgM_setAlpha(&field_0x270[i]);
|
||||
}
|
||||
|
||||
J2DOrthoGraph* graf = dComIfGp_getCurrentGrafPort();
|
||||
graf->setPort();
|
||||
mpScrn->draw(0.0f, 0.0f, graf);
|
||||
}
|
||||
|
||||
/* 80206EDC-80206EFC .text dMinigame_Starter_Draw__FP19dMinigame_Starter_c */
|
||||
static BOOL dMinigame_Starter_Draw(dMinigame_Starter_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL dMinigame_Starter_Draw(dMinigame_Starter_c* i_this) {
|
||||
return i_this->_draw();
|
||||
}
|
||||
|
||||
/* 80206EFC-80206F1C .text dMinigame_Starter_Execute__FP19dMinigame_Starter_c */
|
||||
static BOOL dMinigame_Starter_Execute(dMinigame_Starter_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL dMinigame_Starter_Execute(dMinigame_Starter_c* i_this) {
|
||||
return i_this->_execute();
|
||||
}
|
||||
|
||||
/* 80206F1C-80206F24 .text dMinigame_Starter_IsDelete__FP19dMinigame_Starter_c */
|
||||
static BOOL dMinigame_Starter_IsDelete(dMinigame_Starter_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL dMinigame_Starter_IsDelete(dMinigame_Starter_c* i_this) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 80206F24-80206F44 .text dMinigame_Starter_Delete__FP19dMinigame_Starter_c */
|
||||
static BOOL dMinigame_Starter_Delete(dMinigame_Starter_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL dMinigame_Starter_Delete(dMinigame_Starter_c* i_this) {
|
||||
return i_this->_delete();
|
||||
}
|
||||
|
||||
/* 80206F44-80206F64 .text dMinigame_Starter_Create__FP9msg_class */
|
||||
static cPhs_State dMinigame_Starter_Create(msg_class*) {
|
||||
/* Nonmatching */
|
||||
static cPhs_State dMinigame_Starter_Create(msg_class* msg) {
|
||||
dMinigame_Starter_c* i_this = (dMinigame_Starter_c*)msg;
|
||||
return i_this->_create();
|
||||
}
|
||||
|
||||
msg_method_class l_dMinigame_Starter_Method = {
|
||||
(process_method_func)dMinigame_Starter_Create,
|
||||
(process_method_func)dMinigame_Starter_Delete,
|
||||
(process_method_func)dMinigame_Starter_Execute,
|
||||
(process_method_func)dMinigame_Starter_IsDelete,
|
||||
(process_method_func)dMinigame_Starter_Draw,
|
||||
};
|
||||
|
||||
msg_process_profile_definition g_profile_MINIGAME_STARTER = {
|
||||
/* Layer ID */ fpcLy_CURRENT_e,
|
||||
/* List ID */ 12,
|
||||
/* List Prio */ fpcPi_CURRENT_e,
|
||||
/* Proc Name */ fpcNm_MINIGAME_STARTER_e,
|
||||
/* Proc SubMtd */ &g_fpcLf_Method.base,
|
||||
/* Size */ sizeof(dMinigame_Starter_c),
|
||||
/* Size Other */ 0,
|
||||
/* Parameters */ 0,
|
||||
/* Leaf SubMtd */ &g_fopMsg_Method,
|
||||
/* Draw Prio */ fpcDwPi_MINIGAME_STARTER_e,
|
||||
/* Msg SubMtd */ &l_dMinigame_Starter_Method,
|
||||
};
|
||||
|
||||
+152
-21
@@ -1,61 +1,192 @@
|
||||
//
|
||||
// Generated by dtk
|
||||
// Translation Unit: d_water_mark.cpp
|
||||
//
|
||||
|
||||
#include "d/dolzel.h" // IWYU pragma: keep
|
||||
#include "d/d_water_mark.h"
|
||||
#include "f_op/f_op_kankyo.h"
|
||||
#include "m_Do/m_Do_lib.h"
|
||||
|
||||
s16 dWaterMark_c::m_circle_cnt;
|
||||
|
||||
s16 dWaterMark_c::m_player_foot_now_id;
|
||||
|
||||
dBgS_ObjGndChk dWaterMark_c::m_ground_check;
|
||||
|
||||
BOOL dWaterMark_c::draw() {
|
||||
/* Nonmatching */
|
||||
if (mDoLib_clipper::clip(j3dSys.getViewMtx(), mPos, mScale.x * 50.0f)) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
J3DModelData* modelData = mpModel->getModelData();
|
||||
mBrk.entry(modelData, mBrk.getFrame());
|
||||
mBtp.entry(mpModel->getModelData(), mParam);
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 8023DB48-8023DBF8 .text dWaterMark_Draw__FP12dWaterMark_c */
|
||||
static BOOL dWaterMark_Draw(dWaterMark_c* i_this) {
|
||||
/* Nonmatching */
|
||||
return i_this->draw();
|
||||
}
|
||||
|
||||
/* 8023DBF8-8023DE2C .text setMatrix__12dWaterMark_cFv */
|
||||
void dWaterMark_c::setMatrix() {
|
||||
/* Nonmatching */
|
||||
BOOL dWaterMark_c::setMatrix() {
|
||||
cXyz chk_pos(mPos.x, mPos.y + 10.0f, mPos.z);
|
||||
m_ground_check.SetPos(&chk_pos);
|
||||
|
||||
mPos.y = dComIfG_Bgsp()->GroundCross(&m_ground_check);
|
||||
if (mPos.y != -G_CM3D_F_INF) {
|
||||
cM3dGPla* tri = dComIfG_Bgsp()->GetTriPla(m_ground_check.GetBgIndex(), m_ground_check.GetPolyIndex());
|
||||
s16 tri_angle = cM_atan2s(tri->mNormal.x, tri->mNormal.z) - field_0x12e;
|
||||
f32 norm_xz_mag = tri->mNormal.absXZ();
|
||||
|
||||
mDoMtx_stack_c::transS(mPos.x, mPos.y + 0.1f, mPos.z);
|
||||
mDoMtx_stack_c::ZXYrotM(
|
||||
cM_atan2s(norm_xz_mag * cM_scos(tri_angle), tri->mNormal.y),
|
||||
field_0x12e,
|
||||
cM_atan2s(norm_xz_mag * -cM_ssin(tri_angle), tri->mNormal.y)
|
||||
);
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
|
||||
bool is_move_bg = dComIfG_Bgsp()->ChkMoveBG(m_ground_check);
|
||||
if (is_move_bg) {
|
||||
field_0x12c = 1;
|
||||
} else {
|
||||
field_0x12c = 0;
|
||||
}
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL dWaterMark_c::execute() {
|
||||
/* Nonmatching */
|
||||
if (field_0x134 != -1) {
|
||||
if (field_0x130 < field_0x132) {
|
||||
if (field_0x130 <= dWaterMark_c::m_player_foot_now_id && field_0x132 > dWaterMark_c::m_player_foot_now_id) {
|
||||
field_0x134 = -1;
|
||||
}
|
||||
} else {
|
||||
if (field_0x130 <= dWaterMark_c::m_player_foot_now_id || field_0x132 > dWaterMark_c::m_player_foot_now_id) {
|
||||
field_0x134 = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (field_0x134 == -1) {
|
||||
mBrk.play();
|
||||
}
|
||||
|
||||
if (mBrk.isStop()) {
|
||||
fopKyM_Delete(this);
|
||||
} else if (field_0x12c == 1 && !setMatrix()) {
|
||||
fopKyM_Delete(this);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 8023DE2C-8023DF24 .text dWaterMark_Execute__FP12dWaterMark_c */
|
||||
static BOOL dWaterMark_Execute(dWaterMark_c* i_this) {
|
||||
/* Nonmatching */
|
||||
static BOOL dWaterMark_Execute(dWaterMark_c* i_this) {
|
||||
return i_this->execute();
|
||||
}
|
||||
|
||||
/* 8023DF24-8023DF2C .text dWaterMark_IsDelete__FP12dWaterMark_c */
|
||||
static BOOL dWaterMark_IsDelete(dWaterMark_c*) {
|
||||
static BOOL dWaterMark_IsDelete(dWaterMark_c* i_this) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL dWaterMark_c::wm_delete() {
|
||||
/* Nonmatching */
|
||||
if (mpHeap != NULL) {
|
||||
mDoExt_destroySolidHeap(mpHeap);
|
||||
}
|
||||
|
||||
if ((int)mParam == 1) {
|
||||
dWaterMark_c::m_circle_cnt--;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 8023DF2C-8023DF80 .text dWaterMark_Delete__FP12dWaterMark_c */
|
||||
static BOOL dWaterMark_Delete(dWaterMark_c* i_this) {
|
||||
/* Nonmatching */
|
||||
return i_this->wm_delete();
|
||||
}
|
||||
|
||||
/* 8023DF80-8023DFA0 .text dWaterMark_Create__FP12kankyo_class */
|
||||
static cPhs_State dWaterMark_Create(kankyo_class* i_this) {
|
||||
dWaterMark_c* a_this = (dWaterMark_c*)i_this;
|
||||
return a_this->create();
|
||||
static cPhs_State dWaterMark_Create(kankyo_class* kankyo) {
|
||||
dWaterMark_c* i_this = (dWaterMark_c*)kankyo;
|
||||
return i_this->create();
|
||||
}
|
||||
|
||||
/* 8023DFA0-8023E29C .text create__12dWaterMark_cFv */
|
||||
cPhs_State dWaterMark_c::create() {
|
||||
/* Nonmatching */
|
||||
new (this) dWaterMark_c();
|
||||
|
||||
field_0x12e = mParam >> 0x10;
|
||||
mParam &= 0xFFFF;
|
||||
|
||||
if ((int)mParam != 0 && (int)mParam != 1 && (int)mParam != 2) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
if ((int)mParam == 1 && ++m_circle_cnt > 10) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
JKRSolidHeap* heap = mDoExt_createSolidHeapFromGameToCurrent(0x12A0, 0x20);
|
||||
mpHeap = heap;
|
||||
|
||||
BOOL is_anm_init;
|
||||
if (mpHeap != NULL) {
|
||||
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes("Always", dRes_INDEX_ALWAYS_BDL_MPA_SIMI_e));
|
||||
JUT_ASSERT(304, modelData != NULL);
|
||||
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11020022);
|
||||
|
||||
J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes("Always", dRes_INDEX_ALWAYS_BRK_MPA_SIMI_e);
|
||||
int brk_rt = mBrk.init(modelData, brk, TRUE, J3DFrameCtrl::EMode_NONE);
|
||||
|
||||
J3DAnmTexPattern* btp = (J3DAnmTexPattern*)dComIfG_getObjectRes("Always", dRes_INDEX_ALWAYS_BTP_MPA_SIMI_e);
|
||||
int btp_rt = mBtp.init(modelData, btp, FALSE, J3DFrameCtrl::EMode_NONE);
|
||||
|
||||
is_anm_init = (brk_rt & btp_rt);
|
||||
|
||||
mDoExt_restoreCurrentHeap();
|
||||
mDoExt_adjustSolidHeap(mpHeap);
|
||||
} else {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
if (mpModel == NULL || !is_anm_init) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
mpModel->setBaseScale(mScale);
|
||||
|
||||
if (!setMatrix()) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
if ((int)mParam == 2) {
|
||||
field_0x134 = m_player_foot_now_id;
|
||||
m_player_foot_now_id++;
|
||||
if (m_player_foot_now_id == 40) {
|
||||
m_player_foot_now_id = 0;
|
||||
}
|
||||
|
||||
field_0x130 = field_0x134 + 20;
|
||||
if (field_0x130 >= 40) {
|
||||
field_0x130 -= 40;
|
||||
}
|
||||
|
||||
field_0x132 = field_0x130 + 20;
|
||||
if (field_0x132 >= 40) {
|
||||
field_0x132 -= 40;
|
||||
}
|
||||
|
||||
mParam = 0;
|
||||
} else {
|
||||
field_0x134 = -1;
|
||||
}
|
||||
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
|
||||
static kankyo_method_class l_dWaterMark_Method = {
|
||||
@@ -68,7 +199,7 @@ static kankyo_method_class l_dWaterMark_Method = {
|
||||
|
||||
kankyo_process_profile_definition g_profile_WATER_MARK = {
|
||||
/* Layer ID */ fpcLy_CURRENT_e,
|
||||
/* List ID */ 0x0009,
|
||||
/* List ID */ 9,
|
||||
/* List Prio */ fpcPi_CURRENT_e,
|
||||
/* Proc Name */ fpcNm_WATER_MARK_e,
|
||||
/* Proc SubMtd */ &g_fpcLf_Method.base,
|
||||
|
||||
+161
-16
@@ -1,27 +1,84 @@
|
||||
//
|
||||
// Generated by dtk
|
||||
// Translation Unit: d_wpillar.cpp
|
||||
//
|
||||
|
||||
#include "d/dolzel.h" // IWYU pragma: keep
|
||||
#include "d/d_wpillar.h"
|
||||
#include "f_op/f_op_kankyo.h"
|
||||
|
||||
class J3DNode;
|
||||
#include "d/actor/d_a_player_main.h"
|
||||
#include "cstdint.h"
|
||||
|
||||
/* 8023E968-8023E9E4 .text jointCallBack__10dWpillar_cFi */
|
||||
void dWpillar_c::jointCallBack(int) {
|
||||
/* Nonmatching */
|
||||
int dWpillar_c::jointCallBack(int i_jointNo) {
|
||||
static const f32 min_y[] = {
|
||||
0.1418457f,
|
||||
18.307327f,
|
||||
16.280472f,
|
||||
};
|
||||
|
||||
MtxP m = mpModel->getAnmMtx(i_jointNo);
|
||||
f32 var_f2 = mPos.y + mScale.x * min_y[i_jointNo - 1];
|
||||
m[1][3] = var_f2 + mHeight * (m[1][3] - var_f2);
|
||||
cMtx_copy(m, J3DSys::mCurrentMtx);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 8023E9E4-8023EA28 .text dWpillar_jointCallBack__FP7J3DNodei */
|
||||
static BOOL dWpillar_jointCallBack(J3DNode*, int) {
|
||||
/* Nonmatching */
|
||||
static BOOL dWpillar_jointCallBack(J3DNode* i_node, int param_1) {
|
||||
if (param_1 == 0) {
|
||||
J3DJoint* joint = (J3DJoint*)i_node;
|
||||
int jntNo = joint->getJntNo();
|
||||
J3DModel* model = j3dSys.getModel();
|
||||
|
||||
dWpillar_c* i_this = (dWpillar_c*)model->getUserArea();
|
||||
i_this->jointCallBack(jntNo);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 8023EA28-8023ECF8 .text draw__10dWpillar_cFv */
|
||||
BOOL dWpillar_c::draw() {
|
||||
/* Nonmatching */
|
||||
int matNo;
|
||||
|
||||
g_env_light.settingTevStruct(TEV_TYPE_BG1, &mPos, &mTevstr);
|
||||
g_env_light.setLightTevColorType(mpModel, &mTevstr);
|
||||
|
||||
mBck.entry(mpModel->getModelData());
|
||||
|
||||
if ((int)mParam == 1) {
|
||||
matNo = mpModel->getModelData()->getMaterialNum() - 1;
|
||||
while (matNo >= 0) {
|
||||
J3DMaterial* material = mpModel->getModelData()->getMaterialNodePointer(matNo);
|
||||
|
||||
static const GXColorS10 calc_col = {0x00, 0x00, 0x00, 0x3C};
|
||||
material->setTevColor(2, (const J3DGXColorS10*)&calc_col);
|
||||
matNo--;
|
||||
}
|
||||
|
||||
daPy_getPlayerLinkActorClass()->getBombWaterPillarBrk()->setFrame(mBck.getFrame());
|
||||
daPy_getPlayerLinkActorClass()->getBombWaterPillarBtk()->setFrame(mBck.getFrame());
|
||||
} else {
|
||||
GXColorS10 color;
|
||||
color.r = (u8)(mTevstr.mColorC0.r * 0.23529412f + 195.0f);
|
||||
color.g = (u8)(mTevstr.mColorC0.g * 0.23529412f + 195.0f);
|
||||
color.b = (u8)(mTevstr.mColorC0.b * 0.23529412f + 195.0f);
|
||||
|
||||
GXColor kcolor;
|
||||
kcolor.r = mTevstr.mColorK0.r * 0.92156863f + 20.0f;
|
||||
kcolor.g = mTevstr.mColorK0.g * 0.92156863f + 20.0f;
|
||||
kcolor.b = mTevstr.mColorK0.b * 0.92156863f + 20.0f;
|
||||
|
||||
mBtk.entry(mpModel->getModelData(), mBck.getFrame());
|
||||
|
||||
matNo = mpModel->getModelData()->getMaterialNum() - 1;
|
||||
while (matNo >= 0) {
|
||||
J3DMaterial* material = mpModel->getModelData()->getMaterialNodePointer(matNo);
|
||||
|
||||
material->setTevColor(0, (const J3DGXColorS10*)&color);
|
||||
material->setTevKColor(0, (const J3DGXColor*)&kcolor);
|
||||
matNo--;
|
||||
}
|
||||
}
|
||||
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 8023ECF8-8023ED18 .text dWpillar_Draw__FP10dWpillar_c */
|
||||
@@ -31,7 +88,19 @@ static BOOL dWpillar_Draw(dWpillar_c* i_this) {
|
||||
|
||||
/* 8023ED18-8023EDB0 .text execute__10dWpillar_cFv */
|
||||
BOOL dWpillar_c::execute() {
|
||||
/* Nonmatching */
|
||||
mBck.play();
|
||||
|
||||
if (mBck.isStop()) {
|
||||
fopKyM_Delete(this);
|
||||
} else {
|
||||
f32 water_y;
|
||||
if (fopAcM_getWaterY(&mPos, &water_y)) {
|
||||
mpModel->getBaseTRMtx()[1][3] = water_y;
|
||||
mPos.y = water_y;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 8023EDB0-8023EDD0 .text dWpillar_Execute__FP10dWpillar_c */
|
||||
@@ -46,7 +115,11 @@ static BOOL dWpillar_IsDelete(dWpillar_c*) {
|
||||
|
||||
/* 8023EDD8-8023EE08 .text wp_delete__10dWpillar_cFv */
|
||||
BOOL dWpillar_c::wp_delete() {
|
||||
/* Nonmatching */
|
||||
if (mpHeap != NULL) {
|
||||
mDoExt_destroySolidHeap(mpHeap);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 8023EE08-8023EE28 .text dWpillar_Delete__FP10dWpillar_c */
|
||||
@@ -56,7 +129,79 @@ static BOOL dWpillar_Delete(dWpillar_c* i_this) {
|
||||
|
||||
/* 8023EE28-8023F5B0 .text create__10dWpillar_cFv */
|
||||
cPhs_State dWpillar_c::create() {
|
||||
/* Nonmatching */
|
||||
new (this) dWpillar_c();
|
||||
|
||||
J3DModelData* modelData;
|
||||
BOOL is_anm_init;
|
||||
mpHeap = mDoExt_createSolidHeapFromGameToCurrent(0x3440, 0x20);
|
||||
if (mpHeap != NULL) {
|
||||
if ((int)mParam == 0) {
|
||||
modelData = (J3DModelData*)dComIfG_getObjectRes("Always", dRes_INDEX_ALWAYS_BDL_W_PILLAR_A_e);
|
||||
JUT_ASSERT(293, modelData != NULL);
|
||||
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000202);
|
||||
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectRes("Always", dRes_INDEX_ALWAYS_BCK_W_PILLAR_A_e);
|
||||
is_anm_init = mBck.init(modelData, bck, TRUE, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false);
|
||||
|
||||
J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Always", dRes_INDEX_ALWAYS_BTK_W_PILLAR_A_e);
|
||||
is_anm_init &= mBtk.init(modelData, btk, FALSE, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1);
|
||||
} else {
|
||||
modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes("Link", dRes_INDEX_LINK_BDL_GWP00_e));
|
||||
JUT_ASSERT(320, modelData != NULL);
|
||||
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000202);
|
||||
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectRes("Link", dRes_INDEX_LINK_BCK_GWP00_e);
|
||||
is_anm_init = mBck.init(modelData, bck, TRUE, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false);
|
||||
}
|
||||
|
||||
mDoExt_restoreCurrentHeap();
|
||||
mDoExt_adjustSolidHeap(mpHeap);
|
||||
} else {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
if (mpModel == NULL || !is_anm_init) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
mHeight = mScale.y;
|
||||
mScale.y = mScale.x;
|
||||
mpModel->setBaseScale(mScale);
|
||||
mDoMtx_stack_c::transS(mPos.x, mPos.y, mPos.z);
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
|
||||
if ((int)mParam == 0) {
|
||||
for (u16 i = 1; i < modelData->getJointNum(); i++) {
|
||||
modelData->getJointNodePointer(i)->setCallBack(dWpillar_jointCallBack);
|
||||
}
|
||||
|
||||
mpModel->setUserArea((std::uintptr_t)this);
|
||||
dComIfGp_particle_setShipTail(dPa_name::ID_IT_JN_WP_HAMON01, &mPos, NULL, &mScale, 0xFF, &dPa_control_c::mSingleRippleEcallBack);
|
||||
dComIfGp_particle_setShipTail(dPa_name::ID_IT_JN_WP_HAMON02, &mPos, NULL, &mScale, 0xFF, &dPa_control_c::mSingleRippleEcallBack);
|
||||
dComIfGp_particle_setShipTail(dPa_name::ID_IT_JN_WP_HAMON03, &mPos, NULL, &mScale, 0xFF, &dPa_control_c::mSingleRippleEcallBack);
|
||||
dComIfGp_particle_set(dPa_name::ID_IT_JN_WP_SHIBUKI, &mPos, NULL, &mScale, 0xFF, NULL);
|
||||
} else {
|
||||
dComIfGp_particle_setBombSmoke(dPa_name::ID_IT_JT_BMEX_SMOKE02, &mPos);
|
||||
dComIfGp_particle_setToonP1(dPa_name::ID_IT_JT_WATERSMOKE00, &mPos);
|
||||
dComIfGp_particle_setP1(dPa_name::ID_IT_JN_MIZUSHIBUKI_A, &mPos);
|
||||
}
|
||||
|
||||
dBgS_ObjGndChk gndchk;
|
||||
gndchk.SetPos(&mPos);
|
||||
|
||||
int roomNo;
|
||||
u8 polyColor;
|
||||
f32 y = dComIfG_Bgsp()->GroundCross(&gndchk);
|
||||
if (y != -G_CM3D_F_INF) {
|
||||
roomNo = dComIfG_Bgsp()->GetRoomId(gndchk);
|
||||
polyColor = dComIfG_Bgsp()->GetPolyColor(gndchk);
|
||||
} else {
|
||||
roomNo = dComIfGp_roomControl_getStayNo();
|
||||
polyColor = 0xFF;
|
||||
}
|
||||
|
||||
dKy_tevstr_init(&mTevstr, roomNo, polyColor);
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
|
||||
/* 8023F5B0-8023F5D0 .text dWpillar_Create__FP12kankyo_class */
|
||||
@@ -75,7 +220,7 @@ static kankyo_method_class l_dWpillar_Method = {
|
||||
|
||||
kankyo_process_profile_definition g_profile_WPILLAR = {
|
||||
/* Layer ID */ fpcLy_CURRENT_e,
|
||||
/* List ID */ 0x0008,
|
||||
/* List ID */ 8,
|
||||
/* List Prio */ fpcPi_CURRENT_e,
|
||||
/* Proc Name */ fpcNm_WPILLAR_e,
|
||||
/* Proc SubMtd */ &g_fpcLf_Method.base,
|
||||
|
||||
Reference in New Issue
Block a user