mirror of
https://github.com/zeldaret/tww.git
synced 2026-09-05 10:27:35 -04:00
demo progress for d_menu_fmap and ghostship
This commit is contained in:
@@ -18,8 +18,8 @@ public:
|
||||
};
|
||||
|
||||
bool checkInShip() { return mbCanEnterShip; }
|
||||
void getAlpha() {}
|
||||
void setMtx() {}
|
||||
f32 getAlpha() { return mAlpha; }
|
||||
inline void setMtx();
|
||||
|
||||
inline cPhs_State _create();
|
||||
inline bool _delete();
|
||||
@@ -38,7 +38,7 @@ public:
|
||||
void createInit();
|
||||
void getArg();
|
||||
|
||||
public:
|
||||
private:
|
||||
/* 0x290 */ u32 mMode;
|
||||
/* 0x294 */ s32 mPathNo;
|
||||
/* 0x298 */ u8 moonPhase;
|
||||
@@ -52,8 +52,8 @@ public:
|
||||
/* 0x2C8 */ u32 field_0x2C8;
|
||||
/* 0x2CC */ request_of_phase_process_class mPhs;
|
||||
/* 0x2D4 */ request_of_phase_process_class mClothPhs;
|
||||
/* 0x2DC */ dCloth_packet_c* mpCloth;
|
||||
/* 0x2E0 */ dCloth_packet_c* mpCloth2;
|
||||
/* 0x2DC */ dCloth_packetXlu_c* mpCloth;
|
||||
/* 0x2E0 */ dCloth_packetXlu_c* mpCloth2;
|
||||
/* 0x2E4 */ J3DModel* mpModel;
|
||||
/* 0x2E8 */ mDoExt_btkAnm mBtk;
|
||||
/* 0x2FC */ f32 mAlpha;
|
||||
|
||||
+20
-14
@@ -5,6 +5,7 @@
|
||||
#include "JSystem/J3DGraphAnimator/J3DModel.h"
|
||||
#include "JSystem/JUtility/JUTTexture.h"
|
||||
#include "SSystem/SComponent/c_xyz.h"
|
||||
#include "d/d_kankyo.h"
|
||||
|
||||
class dKy_tevstr_c;
|
||||
|
||||
@@ -57,11 +58,11 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
cXyz* getPosP() const { return mpPosArr[mCurArr]; }
|
||||
cXyz* getNrmP() const { return mpNrmArr[mCurArr]; }
|
||||
cXyz* getBackNrmP() const { return mpNrmArrBack[mCurArr]; }
|
||||
cXyz* getSpdP() const { return mpSpeedArr; }
|
||||
u32 getVerticalNum() const { return mHoistGridSize; }
|
||||
cXyz* getPosP() { return mpPosArr[mCurArr]; }
|
||||
cXyz* getNrmP() { return mpNrmArr[mCurArr]; }
|
||||
cXyz* getBackNrmP() { return mpNrmArrBack[mCurArr]; }
|
||||
cXyz* getSpdP() { return mpSpeedArr; }
|
||||
u32 getVarticalNum() const { return mHoistGridSize; }
|
||||
GXTexObj* getTexObjP() { return &mTexObj; }
|
||||
GXTexObj* getToonTexObjP() { return &mToonTex; }
|
||||
|
||||
@@ -100,15 +101,20 @@ protected:
|
||||
/* 0xF6 */ s16 mRotateY;
|
||||
/* 0xF8 */ u8 mCurArr;
|
||||
}; // Size: 0xFC
|
||||
|
||||
dCloth_packet_c* dCloth_packet_create(
|
||||
ResTIMG* i_flagimage, ResTIMG* i_toonimage, int flyGridSize, int hoistGridSize, float flyLength, float hoistLength, dKy_tevstr_c* tevstr, cXyz** posArr
|
||||
);
|
||||
|
||||
class dCloth_packetXlu_c : public dCloth_packet_c {
|
||||
public:
|
||||
virtual void cloth_draw();
|
||||
virtual void TevSetting();
|
||||
|
||||
private:
|
||||
void setAlpha(dKy_tevstr_c* tevStr, u8 alpha) {
|
||||
tevStr->mColorC0.a = alpha;
|
||||
}
|
||||
|
||||
dCloth_packetXlu_c(ResTIMG* i_toonimage, int flyGridSize, int hoistGridSize, float flyLength, float hoistLength, dKy_tevstr_c* tevstr, cXyz** posArr)
|
||||
: dCloth_packet_c(i_toonimage, flyGridSize, hoistGridSize, flyLength, hoistLength, tevstr, posArr) {}
|
||||
|
||||
@@ -123,13 +129,13 @@ dCloth_packetXlu_c* dCloth_packetXlu_create(
|
||||
);
|
||||
|
||||
class dClothVobj03_c : public dCloth_packet_c {
|
||||
public:
|
||||
virtual void init();
|
||||
virtual void cloth_move();
|
||||
virtual void TexObjInit(ResTIMG*);
|
||||
virtual void TexObjLoad();
|
||||
void cloth_copy();
|
||||
|
||||
private:
|
||||
dClothVobj03_c(ResTIMG* i_toonimage, dKy_tevstr_c* tevstr, cXyz** posArr)
|
||||
: dCloth_packet_c(i_toonimage, 5, 5, 120.0f, 60.0f, tevstr, posArr) {
|
||||
if (posArr) {
|
||||
@@ -139,7 +145,6 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
static dClothVobj03_c* top_pointer;
|
||||
static s32 cloth_counter;
|
||||
|
||||
@@ -150,16 +155,17 @@ private:
|
||||
bool mIsStandItem;
|
||||
bool mIsIndoors;
|
||||
};
|
||||
|
||||
dClothVobj03_c* dClothVobj03_create(ResTIMG* i_flagimage, ResTIMG* i_toonimage, dKy_tevstr_c* tevstr, cXyz** posArr);
|
||||
|
||||
class dClothVobj04_c : public dCloth_packet_c {
|
||||
public:
|
||||
virtual void init();
|
||||
virtual void cloth_move();
|
||||
virtual void TexObjInit(ResTIMG*);
|
||||
virtual void TexObjLoad();
|
||||
void cloth_copy();
|
||||
|
||||
private:
|
||||
dClothVobj04_c(ResTIMG* i_toonimage, dKy_tevstr_c* tevstr, cXyz** posArr)
|
||||
: dCloth_packet_c(i_toonimage, 5, 5, 120.0f, 60.0f, tevstr, posArr) {
|
||||
if (posArr) {
|
||||
@@ -169,7 +175,6 @@ private:
|
||||
}
|
||||
};
|
||||
|
||||
private:
|
||||
static dClothVobj04_c* top_pointer;
|
||||
static s32 cloth_counter;
|
||||
|
||||
@@ -180,16 +185,17 @@ private:
|
||||
bool mIsStandItem;
|
||||
bool mIsIndoors;
|
||||
};
|
||||
|
||||
dClothVobj04_c* dClothVobj04_create(ResTIMG* i_flagimage, ResTIMG* i_toonimage, dKy_tevstr_c* tevstr, cXyz** posArr);
|
||||
|
||||
class dClothVobj05_c : public dCloth_packet_c {
|
||||
public:
|
||||
virtual void init();
|
||||
virtual void cloth_move();
|
||||
virtual void TexObjInit(ResTIMG*);
|
||||
virtual void TexObjLoad();
|
||||
void cloth_copy();
|
||||
|
||||
private:
|
||||
dClothVobj05_c(ResTIMG* i_toonimage, dKy_tevstr_c* tevstr, cXyz** posArr)
|
||||
: dCloth_packet_c(i_toonimage, 5, 5, 50.0f, 120.0f, tevstr, posArr) {
|
||||
if (posArr) {
|
||||
@@ -199,7 +205,6 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
static dClothVobj05_c* top_pointer;
|
||||
static s32 cloth_counter;
|
||||
|
||||
@@ -210,16 +215,17 @@ private:
|
||||
bool mIsStandItem;
|
||||
bool mIsIndoors;
|
||||
};
|
||||
|
||||
dClothVobj05_c* dClothVobj05_create(ResTIMG* i_flagimage, ResTIMG* i_toonimage, dKy_tevstr_c* tevstr, cXyz** posArr);
|
||||
|
||||
class dClothVobj07_0_c : public dCloth_packet_c {
|
||||
public:
|
||||
virtual void init();
|
||||
virtual void cloth_move();
|
||||
virtual void TexObjInit(ResTIMG*);
|
||||
virtual void TexObjLoad();
|
||||
void cloth_copy();
|
||||
|
||||
private:
|
||||
dClothVobj07_0_c(ResTIMG* i_toonimage, dKy_tevstr_c* tevstr, cXyz** posArr)
|
||||
: dCloth_packet_c(i_toonimage, 5, 5, 120.0f, 70.0f, tevstr, posArr) {
|
||||
if (posArr) {
|
||||
@@ -229,7 +235,6 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
static dClothVobj07_0_c* top_pointer;
|
||||
static s32 cloth_counter;
|
||||
|
||||
@@ -240,6 +245,7 @@ private:
|
||||
bool mIsStandItem;
|
||||
bool mIsIndoors;
|
||||
};
|
||||
|
||||
dClothVobj07_0_c* dClothVobj07_0_create(ResTIMG* i_flagimage, ResTIMG* i_toonimage, dKy_tevstr_c* tevstr, cXyz** posArr);
|
||||
|
||||
#endif /* D_A_CLOTH_PACKET_H */
|
||||
|
||||
+39
-24
@@ -52,6 +52,12 @@ enum dMf_WarpSel {
|
||||
FMAP_WARP_SEL_NO = 1,
|
||||
};
|
||||
|
||||
#if VERSION == VERSION_DEMO
|
||||
#define FMAP_WARP_COUNT 7
|
||||
#else
|
||||
#define FMAP_WARP_COUNT 9
|
||||
#endif
|
||||
|
||||
class dDlst_FMAP_c : public dDlst_base_c {
|
||||
public:
|
||||
virtual ~dDlst_FMAP_c() {}
|
||||
@@ -68,75 +74,75 @@ public:
|
||||
void draw() { _draw(); }
|
||||
u8 getCtDispMode() {
|
||||
JUT_ASSERT(VERSION_SELECT(456, 456, 467, 467), fmapSv != NULL);
|
||||
return fmapSv->dispMode;
|
||||
return fmapSv->getDispMode();
|
||||
}
|
||||
void setCtDispMode(u8 val) {
|
||||
JUT_ASSERT(VERSION_SELECT(461, 461, 472, 472), fmapSv != NULL);
|
||||
fmapSv->dispMode = val;
|
||||
fmapSv->setDispMode(val);
|
||||
}
|
||||
u8 getCtFmapZoom() {
|
||||
JUT_ASSERT(VERSION_SELECT(467, 467, 478, 478), fmapSv != NULL);
|
||||
return fmapSv->fmapZoom;
|
||||
return fmapSv->getFmapZoom();
|
||||
}
|
||||
void setCtFmapZoom(u8 val) {
|
||||
JUT_ASSERT(VERSION_SELECT(472, 472, 483, 483), fmapSv != NULL);
|
||||
fmapSv->fmapZoom = val;
|
||||
fmapSv->setFmapZoom(val);
|
||||
}
|
||||
s8 getCtCurX() {
|
||||
JUT_ASSERT(VERSION_SELECT(478, 478, 489, 489), fmapSv != NULL);
|
||||
return fmapSv->curX;
|
||||
return fmapSv->getCurX();
|
||||
}
|
||||
void setCtCurX(s8 val) {
|
||||
JUT_ASSERT(VERSION_SELECT(483, 483, 494, 494), fmapSv != NULL);
|
||||
fmapSv->curX = val;
|
||||
fmapSv->setCurX(val);
|
||||
}
|
||||
s8 getCtCurY() {
|
||||
JUT_ASSERT(VERSION_SELECT(489, 489, 500, 500), fmapSv != NULL);
|
||||
return fmapSv->curY;
|
||||
return fmapSv->getCurY();
|
||||
}
|
||||
void setCtCurY(s8 val) {
|
||||
JUT_ASSERT(VERSION_SELECT(494, 494, 505, 505), fmapSv != NULL);
|
||||
fmapSv->curY = val;
|
||||
fmapSv->setCurY(val);
|
||||
}
|
||||
s8 getCtCurWX() {
|
||||
JUT_ASSERT(VERSION_SELECT(500, 500, 511, 511), fmapSv != NULL);
|
||||
return fmapSv->curWX;
|
||||
return fmapSv->getCurWX();
|
||||
}
|
||||
void setCtCurWX(s8 val) {
|
||||
JUT_ASSERT(VERSION_SELECT(505, 505, 516, 516), fmapSv != NULL);
|
||||
fmapSv->curWX = val;
|
||||
fmapSv->setCurWX(val);
|
||||
}
|
||||
s8 getCtCurWY() {
|
||||
JUT_ASSERT(VERSION_SELECT(511, 511, 522, 522), fmapSv != NULL);
|
||||
return fmapSv->curWY;
|
||||
return fmapSv->getCurWY();
|
||||
}
|
||||
void setCtCurWY(s8 val) {
|
||||
JUT_ASSERT(VERSION_SELECT(516, 516, 527, 527), fmapSv != NULL);
|
||||
fmapSv->curWY = val;
|
||||
fmapSv->setCurWY(val);
|
||||
}
|
||||
s8 getCtZoomGridX() {
|
||||
JUT_ASSERT(VERSION_SELECT(522, 522, 533, 533), fmapSv != NULL);
|
||||
return fmapSv->zoomGridX;
|
||||
return fmapSv->getZoomGridX();
|
||||
}
|
||||
void setCtZoomGridX(s8 val) {
|
||||
JUT_ASSERT(VERSION_SELECT(527, 527, 538, 538), fmapSv != NULL);
|
||||
fmapSv->zoomGridX = val;
|
||||
fmapSv->setZoomGridX(val);
|
||||
}
|
||||
s8 getCtZoomGridY() {
|
||||
JUT_ASSERT(VERSION_SELECT(532, 532, 543, 543), fmapSv != NULL);
|
||||
return fmapSv->zoomGridY;
|
||||
return fmapSv->getZoomGridY();
|
||||
}
|
||||
void setCtZoomGridY(s8 val) {
|
||||
JUT_ASSERT(VERSION_SELECT(537, 537, 548, 548), fmapSv != NULL);
|
||||
fmapSv->zoomGridY = val;
|
||||
fmapSv->setZoomGridY(val);
|
||||
}
|
||||
void setCtCurHX(s8 val) {
|
||||
JUT_ASSERT(VERSION_SELECT(548, 548, 559, 559), fmapSv != NULL);
|
||||
fmapSv->curHX = val;
|
||||
fmapSv->setCurHX(val);
|
||||
}
|
||||
void setCtCurHY(s8 val) {
|
||||
JUT_ASSERT(VERSION_SELECT(558, 558, 569, 569), fmapSv != NULL);
|
||||
fmapSv->curHY = val;
|
||||
fmapSv->setCurHY(val);
|
||||
}
|
||||
void lineInter0to1(f32, f32, f32) {}
|
||||
void lineInter0to1ForU8(u8, u8, f32) {}
|
||||
@@ -200,6 +206,10 @@ public:
|
||||
void windArrowColorAnime();
|
||||
void checkMarkAnimeInit();
|
||||
void checkMarkAnime();
|
||||
#if VERSION == VERSION_DEMO
|
||||
void krogMarkAnimeInit();
|
||||
void krogMarkAnime();
|
||||
#endif
|
||||
u32 readFmapTexture(const char*);
|
||||
void aramCmapDatRead();
|
||||
void initCmapDatPnt(aramCmapDatPat_t*);
|
||||
@@ -301,6 +311,9 @@ public:
|
||||
/* 0x0018 */ ResTIMG * mChkPntTxt_p;
|
||||
/* 0x001C */ dDlst_FMAP_c fmapDl;
|
||||
/* 0x0024 */ dMenu_Fmap2_c mFmap2;
|
||||
#if VERSION == VERSION_DEMO
|
||||
u8 pad4[0x38 * 2];
|
||||
#endif
|
||||
/* 0x2874 */ u8 padding_0x2874[0x2878 - 0x2874];
|
||||
/* 0x2878 */ dMenu_FmapSv_c* fmapSv;
|
||||
/* 0x287C */ aramCmapDat_c mCmapDatPnt;
|
||||
@@ -366,12 +379,15 @@ public:
|
||||
/* 0x4F0C */ fopMsgM_pane_class mCur1Pane;
|
||||
#if VERSION > VERSION_JPN
|
||||
/* 0x4F44 */ fopMsgM_pane_class mGsPanes[7];
|
||||
#endif
|
||||
#if VERSION == VERSION_DEMO
|
||||
u8 pad [0x340 + 8];
|
||||
#endif
|
||||
/* 0x50CC */ STControl* stick;
|
||||
/* 0x50D0 */ JUTFont* mFont;
|
||||
/* 0x50D4 */ JUTFont* mRFont;
|
||||
/* 0x50D8 */ JPABaseEmitter* mWrapBackEmitter;
|
||||
/* 0x50DC */ JPABaseEmitter* mWrapSpotEmitters[9];
|
||||
/* 0x50DC */ JPABaseEmitter* mWrapSpotEmitters[FMAP_WARP_COUNT];
|
||||
/* 0x5100 */ u8 padding_0x5100[0x510C - 0x5100];
|
||||
/* 0x510C */ bool mMapClose;
|
||||
/* 0x510D */ u8 mSelCursorBufIdx;
|
||||
@@ -423,7 +439,8 @@ public:
|
||||
/* 0x517A */ u8 mFishmanTimer3;
|
||||
/* 0x517B */ u8 mCheckMarkTimer;
|
||||
/* 0x517C */ u8 mCheckMarkToggle;
|
||||
/* 0x517D */ u8 padding_0x517D[0x517F-0x517D];
|
||||
/* 0x517D */ u8 field_0x517D;
|
||||
/* 0x517E */ u8 field_0x517E;
|
||||
/* 0x517F */ bool mFishmanActive;
|
||||
/* 0x5180 */ u8 mSalvagePntIdx;
|
||||
/* 0x5181 */ u8 mButtonIconMode;
|
||||
@@ -451,8 +468,6 @@ public:
|
||||
#endif
|
||||
}; // Size: 0x51B4
|
||||
|
||||
STATIC_ASSERT(sizeof(dMenu_Fmap_c) == VERSION_SELECT(0x4E54, 0x4E54, 0x51B4, 0x51B4));
|
||||
|
||||
class dMf_HIO_c : public JORReflexible {
|
||||
public:
|
||||
dMf_HIO_c();
|
||||
@@ -509,8 +524,8 @@ public:
|
||||
/* 0x04D */ u8 mWarpCursorAlphaMin;
|
||||
/* 0x04E */ u8 mWarpCursorAlphaMax;
|
||||
/* 0x04F */ u8 padding_0x4F[0x50 - 0x4F];
|
||||
/* 0x050 */ f32 mWarpSpotPosX[9];
|
||||
/* 0x074 */ f32 mWarpSpotPosY[9];
|
||||
/* 0x050 */ f32 mWarpSpotPosX[FMAP_WARP_COUNT];
|
||||
/* 0x074 */ f32 mWarpSpotPosY[FMAP_WARP_COUNT];
|
||||
/* 0x098 */ f32 mWarpSpotScaleSel;
|
||||
/* 0x09C */ f32 mWarpSpotScale;
|
||||
/* 0x0A0 */ f32 field_0xA0;
|
||||
|
||||
@@ -166,6 +166,38 @@ static u32 dummyFunc() {
|
||||
return dummy[0];
|
||||
}
|
||||
|
||||
inline void daGhostship_c::setMtx() {
|
||||
dLib_waveRot(¤t.pos, 0.0f, &mWave);
|
||||
shape_angle.x = mWave.mRotX;
|
||||
shape_angle.z = mWave.mRotZ;
|
||||
|
||||
mpModel->setBaseScale(scale);
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::XYZrotM(shape_angle.x, 0, shape_angle.z);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mDoMtx_stack_c::copy(mpModel->getBaseTRMtx());
|
||||
|
||||
mDoMtx_stack_c::push();
|
||||
#if VERSION == VERSION_DEMO
|
||||
mDoMtx_stack_c::transM(0.0f + REG10_F(0), 3200.0f + REG10_F(1), 75.0f);
|
||||
mDoMtx_stack_c::YrotM(REG10_S(0));
|
||||
#else
|
||||
mDoMtx_stack_c::transM(0.0f, 3200.0f, 75.0f);
|
||||
#endif
|
||||
mpCloth->setMtx(mDoMtx_stack_c::get());
|
||||
|
||||
mDoMtx_stack_c::pop();
|
||||
#if VERSION == VERSION_DEMO
|
||||
mDoMtx_stack_c::transM(-900.0f + REG10_F(3), 2080.0f + REG10_F(4), 85.0f + REG10_F(5));
|
||||
mDoMtx_stack_c::YrotM(0x4000 + REG10_S(1));
|
||||
#else
|
||||
mDoMtx_stack_c::transM(-900.0f, 2080.0f, 85.0f);
|
||||
mDoMtx_stack_c::YrotM(0x4000);
|
||||
#endif
|
||||
mpCloth2->setMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
|
||||
/* 00000874-00000C78 .text createInit__13daGhostship_cFv */
|
||||
void daGhostship_c::createInit() {
|
||||
mPathPos = current.pos;
|
||||
@@ -193,7 +225,7 @@ void daGhostship_c::createInit() {
|
||||
}
|
||||
|
||||
if(mPathNo != 0xFF) {
|
||||
mPath = dPath_GetRoomPath(mPathNo, fopAcM_GetRoomNo(this));
|
||||
mPath = dPath_GetRoomPath(mPathNo, current.roomNo);
|
||||
modePathMoveInit();
|
||||
}
|
||||
else {
|
||||
@@ -204,26 +236,8 @@ void daGhostship_c::createInit() {
|
||||
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mCir, fopAcM_GetSpeed_p(this));
|
||||
mAcch.SetWallNone();
|
||||
mAcch.SetRoofNone();
|
||||
dLib_waveRot(¤t.pos, 0.0f, &mWave);
|
||||
|
||||
shape_angle.x = mWave.mRotX;
|
||||
shape_angle.z = mWave.mRotZ;
|
||||
|
||||
mpModel->setBaseScale(scale);
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::XYZrotM(shape_angle.x, 0, shape_angle.z);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mDoMtx_stack_c::copy(mpModel->getBaseTRMtx());
|
||||
|
||||
mDoMtx_stack_c::push();
|
||||
mDoMtx_stack_c::transM(0.0f, 3200.0f, 75.0f);
|
||||
mpCloth->setMtx(mDoMtx_stack_c::get());
|
||||
|
||||
mDoMtx_stack_c::pop();
|
||||
mDoMtx_stack_c::transM(-900.0f, 2080.0f, 85.0f);
|
||||
mDoMtx_stack_c::YrotM(0x4000);
|
||||
mpCloth2->setMtx(mDoMtx_stack_c::get());
|
||||
|
||||
setMtx();
|
||||
}
|
||||
|
||||
/* 00000C78-00000C8C .text getArg__13daGhostship_cFv */
|
||||
@@ -236,27 +250,38 @@ void daGhostship_c::getArg() {
|
||||
cPhs_State daGhostship_c::_create() {
|
||||
fopAcM_ct(this, daGhostship_c);
|
||||
|
||||
cPhs_State result = dComIfG_resLoad(&mPhs, m_arc_name);
|
||||
if(result != cPhs_COMPLEATE_e) {
|
||||
return result;
|
||||
cPhs_State res = dComIfG_resLoad(&mPhs, m_arc_name);
|
||||
#if VERSION > VERSION_DEMO
|
||||
if (res != cPhs_COMPLEATE_e) {
|
||||
return res;
|
||||
}
|
||||
|
||||
result = dComIfG_resLoad(&mClothPhs, m_cloth_arc_name);
|
||||
if(result != cPhs_COMPLEATE_e) {
|
||||
return result;
|
||||
}
|
||||
|
||||
getArg();
|
||||
|
||||
if((s32)dComIfGs_getEventReg(dSv_event_flag_c::GHOST_SHIP) == 3) {
|
||||
#endif
|
||||
cPhs_State res2 = dComIfG_resLoad(&mClothPhs, m_cloth_arc_name);
|
||||
#if VERSION == VERSION_DEMO
|
||||
if (res == cPhs_ERROR_e || res2 == cPhs_ERROR_e) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
if (!fopAcM_entrySolidHeap(this, createHeap_CB, m_heapsize)) {
|
||||
return cPhs_ERROR_e;
|
||||
if (res != cPhs_COMPLEATE_e) {
|
||||
return res;
|
||||
}
|
||||
#endif
|
||||
if (res2 != cPhs_COMPLEATE_e) {
|
||||
return res2;
|
||||
}
|
||||
int r0 = cPhs_COMPLEATE_e;
|
||||
if (r0 == cPhs_COMPLEATE_e) {
|
||||
getArg();
|
||||
|
||||
createInit();
|
||||
if((s32)dComIfGs_getEventReg(dSv_event_flag_c::GHOST_SHIP) == 3) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
if (!fopAcM_entrySolidHeap(this, createHeap_CB, m_heapsize)) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
createInit();
|
||||
}
|
||||
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
@@ -266,16 +291,18 @@ static cPhs_State daGhostshipCreate(void* i_this) {
|
||||
return ((daGhostship_c*)i_this)->_create();
|
||||
}
|
||||
|
||||
/* 00000FD8-00001024 .text daGhostshipDelete__FPv */
|
||||
static BOOL daGhostshipDelete(void* i_actor) {
|
||||
daGhostship_c* i_this = static_cast<daGhostship_c*>(i_actor);
|
||||
|
||||
dComIfG_resDelete(&i_this->mPhs, daGhostship_c::m_arc_name);
|
||||
dComIfG_resDelete(&i_this->mClothPhs, daGhostship_c::m_cloth_arc_name);
|
||||
inline bool daGhostship_c::_delete() {
|
||||
dComIfG_resDelete(&mPhs, daGhostship_c::m_arc_name);
|
||||
dComIfG_resDelete(&mClothPhs, daGhostship_c::m_cloth_arc_name);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 00000FD8-00001024 .text daGhostshipDelete__FPv */
|
||||
static BOOL daGhostshipDelete(void* i_this) {
|
||||
return ((daGhostship_c*)i_this)->_delete();
|
||||
}
|
||||
|
||||
/* 00001024-00001048 .text daGhostshipExecute__FPv */
|
||||
static BOOL daGhostshipExecute(void* i_this) {
|
||||
return static_cast<daGhostship_c*>(i_this)->_execute();
|
||||
@@ -285,7 +312,7 @@ static BOOL daGhostshipExecute(void* i_this) {
|
||||
bool daGhostship_c::_execute() {
|
||||
f32 time = dComIfGs_getTime();
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
// Fakematch, debug map says fopAcM_searchPlayerDistanceXZ was used
|
||||
// Fakematch, debug map says fopAcM_searchPlayerDistanceXZ was used, but that causes regalloc
|
||||
f32 dist = fopAcM_searchActorDistanceXZ(this, player);
|
||||
|
||||
mbCanEnterShip = false;
|
||||
@@ -379,35 +406,7 @@ bool daGhostship_c::_execute() {
|
||||
modeProcCall();
|
||||
mBtk.play();
|
||||
|
||||
dLib_waveRot(¤t.pos, 0.0f, &mWave);
|
||||
shape_angle.x = mWave.mRotX;
|
||||
shape_angle.z = mWave.mRotZ;
|
||||
|
||||
mpModel->setBaseScale(scale);
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::XYZrotM(shape_angle.x, 0, shape_angle.z);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mDoMtx_stack_c::copy(mpModel->getBaseTRMtx());
|
||||
|
||||
mDoMtx_stack_c::push();
|
||||
#if VERSION == VERSION_DEMO
|
||||
mDoMtx_stack_c::transM(0.0f + REG10_F(0), 3200.0f + REG10_F(1), 75.0f);
|
||||
mDoMtx_stack_c::YrotM(REG10_S(0));
|
||||
#else
|
||||
mDoMtx_stack_c::transM(0.0f, 3200.0f, 75.0f);
|
||||
#endif
|
||||
mpCloth->setMtx(mDoMtx_stack_c::get());
|
||||
|
||||
mDoMtx_stack_c::pop();
|
||||
#if VERSION == VERSION_DEMO
|
||||
mDoMtx_stack_c::transM(-900.0f + REG10_F(3), 2080.0f + REG10_F(4), 85.0f + REG10_F(5));
|
||||
mDoMtx_stack_c::YrotM(0x4000 + REG10_S(1));
|
||||
#else
|
||||
mDoMtx_stack_c::transM(-900.0f, 2080.0f, 85.0f);
|
||||
mDoMtx_stack_c::YrotM(0x4000);
|
||||
#endif
|
||||
mpCloth2->setMtx(mDoMtx_stack_c::get());
|
||||
setMtx();
|
||||
|
||||
mpCloth->setParam(0.45f, -1.5f, 0.875f, 1.0f, 1.0f, 0x100, 0, 900, -800, 7.0f, 6.0f);
|
||||
mpCloth->setGlobalWind(dKyw_get_wind_vec());
|
||||
@@ -449,22 +448,18 @@ bool daGhostship_c::_draw() {
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
mBtk.remove(modelData);
|
||||
|
||||
tevStr.mColorC0.a = alpha;
|
||||
mpCloth->setAlpha(&tevStr, alpha);
|
||||
mpCloth->cloth_draw();
|
||||
tevStr.mColorC0.a = alpha;
|
||||
mpCloth2->setAlpha(&tevStr, alpha);
|
||||
mpCloth2->cloth_draw();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool daGhostship_c::_delete() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 000019A4-000019AC .text daGhostshipIsDelete__FPv */
|
||||
static BOOL daGhostshipIsDelete(void* i_this) {
|
||||
return ((daGhostship_c*)i_this)->_delete();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static actor_method_class daGhostshipMethodTable = {
|
||||
|
||||
+232
-128
@@ -20,7 +20,18 @@
|
||||
|
||||
dMf_HIO_c g_mfHIO;
|
||||
|
||||
extern const cursorTable_t g_cursorTable[9] = {
|
||||
#if VERSION == VERSION_DEMO
|
||||
extern const cursorTable_t g_cursorTable[FMAP_WARP_COUNT] = {
|
||||
/* 0 */ {-2, -2, 0, -1, 1, -1, 3},
|
||||
/* 1 */ { 0, -2, 1, 0, 2, -1, 4},
|
||||
/* 2 */ { 2, -2, 2, 1, -1, 0, 4},
|
||||
/* 3 */ {-2, 0, 3, -1, 4, 0, 5},
|
||||
/* 4 */ { 1, 0, 4, 3, -1, 2, 5},
|
||||
/* 5 */ { 2, 2, 5, -1, -1, 4, 6},
|
||||
/* 6 */ {-2, 3, 6, 5, -1, 5, -1},
|
||||
};
|
||||
#else
|
||||
extern const cursorTable_t g_cursorTable[FMAP_WARP_COUNT] = {
|
||||
/* 0 */ {-2, -2, 0, -1, 1, -1, 7},
|
||||
/* 1 */ { 0, -2, 1, 0, 2, -1, 7},
|
||||
/* 2 */ { 2, -2, 2, 1, -1, 0, 7},
|
||||
@@ -31,6 +42,7 @@ extern const cursorTable_t g_cursorTable[9] = {
|
||||
/* 7 */ {-1, -1, 7, -1, -1, 0, 3},
|
||||
/* 8 */ { 0, 2, 8, -1, 5, 3, 6},
|
||||
};
|
||||
#endif
|
||||
|
||||
extern const u32 hist[] = {
|
||||
'mR01', 'mR02', 'mR03', 'mR04', 'mR05', 'mR06', 'mR07',
|
||||
@@ -42,28 +54,6 @@ extern const u32 hist[] = {
|
||||
'mR2B', 'mR2C', 'mR2D', 'mR2E', 'mR2F', 'mR30', 'mR31',
|
||||
};
|
||||
|
||||
const u32 l_island[] = {
|
||||
'R01', 'R04', 'R0B', 'R0D', 'R14', 'R17',
|
||||
'R1A', 'R28', 'R29', 'R2C', 'R2D',
|
||||
};
|
||||
|
||||
|
||||
const u32 endSalv[] = {
|
||||
'ST01', 'ST02', 'ST03', 'ST04', 'ST05', 'ST06', 'ST07',
|
||||
'ST08', 'ST09', 'ST10', 'ST11', 'ST12', 'ST13', 'ST14',
|
||||
'ST15', 'ST16', 'ST17', 'ST18', 'ST19', 'ST20', 'ST21',
|
||||
'ST22', 'ST23', 'ST24', 'ST25', 'ST26', 'ST27', 'ST28',
|
||||
'ST29', 'ST30', 'ST31', 'ST32', 'ST33', 'ST34', 'ST35',
|
||||
'ST36', 'ST37', 'ST38', 'ST39', 'ST40', 'ST41', 'ST42',
|
||||
'ST43', 'ST44', 'ST45', 'ST46', 'ST47', 'ST48', 'ST49',
|
||||
};
|
||||
|
||||
#if VERSION > VERSION_JPN
|
||||
const u32 gsShip[] = {
|
||||
'gs07', 'gs01', 'gs02', 'gs03', 'gs04', 'gs05', 'gs06',
|
||||
};
|
||||
#endif
|
||||
|
||||
/* 801AF4F0-801AF848 .text __ct__9dMf_HIO_cFv */
|
||||
dMf_HIO_c::dMf_HIO_c() {
|
||||
mWarpBackColorCycle = 20;
|
||||
@@ -125,10 +115,12 @@ dMf_HIO_c::dMf_HIO_c() {
|
||||
mWarpSpotPosY[5] = 86.0f;
|
||||
mWarpSpotPosX[6] = -193.0f;
|
||||
mWarpSpotPosY[6] = 145.0f;
|
||||
#if VERSION > VERSION_DEMO
|
||||
mWarpSpotPosX[7] = -137.0f;
|
||||
mWarpSpotPosY[7] = -80.0f;
|
||||
mWarpSpotPosX[8] = -83.0f;
|
||||
mWarpSpotPosY[8] = 86.0f;
|
||||
#endif
|
||||
mWarpSpotScaleSel = 1.6f;
|
||||
mWarpSpotScale = 0.75f;
|
||||
field_0xA0 = 30.0f;
|
||||
@@ -237,7 +229,7 @@ static const char* rollmapTex[] = {
|
||||
"cmap_phantomship.bti",
|
||||
"cmap_treasure.bti",
|
||||
"cmap_treasure.bti",
|
||||
"cmap_tingle.bti",
|
||||
DEMO_SELECT("cmap_hint.bti", "cmap_tingle.bti"),
|
||||
"cmap_treasure.bti",
|
||||
"cmap_hint.bti",
|
||||
"cmap_hint.bti",
|
||||
@@ -252,8 +244,8 @@ static const char* rollmapTex[] = {
|
||||
|
||||
const char* salvItemex[] = {
|
||||
"f_item_tri.bti",
|
||||
"f_get_rupy.bti",
|
||||
"f_heart_up_02.bti",
|
||||
DEMO_SELECT("get_rupy.bti", "f_get_rupy.bti"),
|
||||
DEMO_SELECT("heart_up_02.bti", "f_heart_up_02.bti"),
|
||||
"cmap_tingle.bti",
|
||||
"cmap_phantomship.bti",
|
||||
"cmap_treasure.bti",
|
||||
@@ -271,36 +263,11 @@ const char* salvItemex[] = {
|
||||
"cmap_hint.bti",
|
||||
};
|
||||
|
||||
static u32 tag00[] = {
|
||||
'fmn1','fmn2','fmn3','fmn4','fmn5','fmn6','fmn7','fmn8',
|
||||
'fmna','fmnb','fmnc','fmnd','fmne','fmnf','fmnh',
|
||||
};
|
||||
|
||||
static u32 tagkr[] = {
|
||||
'KR03','KR05','KR01','KR08','KR06','KR02','KR07','KR04',
|
||||
};
|
||||
|
||||
static u32 txtnm[] = { 'txt1', 'txt3', 'txt2' };
|
||||
|
||||
static int islandPos[] = {1, 4, 11, 13, 20, 23, 26, 40, 41, 44, 45};
|
||||
|
||||
const char* korogStat[] = {
|
||||
"f_korog_kare.bti",
|
||||
"f_korog_saki.bti",
|
||||
};
|
||||
|
||||
typedef void (dMenu_Fmap_c::*fmapProcFunc)();
|
||||
|
||||
fmapProcFunc fmapProcMain[] = {
|
||||
&dMenu_Fmap_c::SelectGrid,
|
||||
&dMenu_Fmap_c::ZoomGridLv1In,
|
||||
&dMenu_Fmap_c::ZoomGridLv1Proc,
|
||||
&dMenu_Fmap_c::ZoomGridLv1Out,
|
||||
&dMenu_Fmap_c::ZoomGridLv2In,
|
||||
&dMenu_Fmap_c::ZoomGridLv2Proc,
|
||||
&dMenu_Fmap_c::ZoomGridLv2Out,
|
||||
};
|
||||
|
||||
enum ZoomProcIdx {
|
||||
FMAP_ZOOM_PROC_SELECT_GRID,
|
||||
FMAP_ZOOM_PROC_LV1_IN,
|
||||
@@ -311,42 +278,17 @@ enum ZoomProcIdx {
|
||||
FMAP_ZOOM_PROC_LV2_OUT,
|
||||
};
|
||||
|
||||
typedef void (dMenu_Fmap_c::*mainProcFunc)();
|
||||
|
||||
static mainProcFunc mainProc[] = {
|
||||
&dMenu_Fmap_c::FmapProc,
|
||||
&dMenu_Fmap_c::HikakuProc,
|
||||
};
|
||||
|
||||
enum MainProcIdx {
|
||||
MAIN_PROC_FMAP,
|
||||
MAIN_PROC_HIKAKU,
|
||||
};
|
||||
|
||||
typedef void (dMenu_Fmap_c::*hikakuProcFunc)();
|
||||
|
||||
hikakuProcFunc HikakuProcMain[] = {
|
||||
&dMenu_Fmap_c::fmap2Open,
|
||||
&dMenu_Fmap_c::fmap2Move,
|
||||
&dMenu_Fmap_c::fmap2Close,
|
||||
};
|
||||
|
||||
enum HikakuProcIdx {
|
||||
HIKAKU_PROC_OPEN,
|
||||
HIKAKU_PROC_MOVE,
|
||||
HIKAKU_PROC_CLOSE,
|
||||
};
|
||||
|
||||
typedef void (dMenu_Fmap_c::*warpProcFunc)();
|
||||
|
||||
warpProcFunc warpProcMain[] = {
|
||||
&dMenu_Fmap_c::wrapMove,
|
||||
&dMenu_Fmap_c::wrapSelWinFadeIn1,
|
||||
&dMenu_Fmap_c::wrapSelect,
|
||||
&dMenu_Fmap_c::wrapSelWinFadeOut,
|
||||
&dMenu_Fmap_c::wrapSelWarp,
|
||||
};
|
||||
|
||||
enum WarpProcIdx {
|
||||
WARP_PROC_MOVE,
|
||||
WARP_PROC_SEL_WIN_FADE_IN,
|
||||
@@ -355,19 +297,6 @@ enum WarpProcIdx {
|
||||
WARP_PROC_SEL_WARP,
|
||||
};
|
||||
|
||||
typedef void (dMenu_Fmap_c::*fishManProcFunc)();
|
||||
|
||||
fishManProcFunc FishManProcMain[] = {
|
||||
&dMenu_Fmap_c::fmDispArea,
|
||||
&dMenu_Fmap_c::fmZoomGridLv1In,
|
||||
&dMenu_Fmap_c::fmZoomGridLv2In,
|
||||
&dMenu_Fmap_c::fmMapWrite,
|
||||
&dMenu_Fmap_c::fmMapWait,
|
||||
&dMenu_Fmap_c::fmZoomGridLv2Out,
|
||||
&dMenu_Fmap_c::fmZoomGridLv1Out,
|
||||
&dMenu_Fmap_c::fmEndWait,
|
||||
};
|
||||
|
||||
enum FishmanProcIdx {
|
||||
FISHMAN_PROC_DISP_AREA,
|
||||
FISHMAN_PROC_ZOOM_LV1_IN,
|
||||
@@ -381,29 +310,35 @@ enum FishmanProcIdx {
|
||||
|
||||
/* 801AF848-801AFB64 .text _create__12dMenu_Fmap_cFv */
|
||||
void dMenu_Fmap_c::_create() {
|
||||
#if VERSION == VERSION_DEMO
|
||||
mSalvagePntIdx = dComIfGs_getRandomSalvagePoint();
|
||||
#endif
|
||||
|
||||
fmapDl.scrn = new J2DScreen();
|
||||
JUT_ASSERT(VERSION_SELECT(560, 560, 571, 571), fmapDl.scrn != NULL);
|
||||
JUT_ASSERT(VERSION_SELECT(594, 560, 571, 571), fmapDl.scrn != NULL);
|
||||
fmapDl.scrn->set("f_map.blo", dComIfGp_getFmapResArchive());
|
||||
|
||||
outFont = new dDlst_2DOutFont_c();
|
||||
JUT_ASSERT(VERSION_SELECT(564, 564, 575, 575), outFont != NULL);
|
||||
JUT_ASSERT(VERSION_SELECT(598, 564, 575, 575), outFont != NULL);
|
||||
#if VERSION > VERSION_JPN
|
||||
outFont->m74 = 1;
|
||||
#endif
|
||||
|
||||
outFont2 = new dDlst_2DOutFont_c();
|
||||
JUT_ASSERT(VERSION_SELECT(567, 567, 579, 579), outFont2 != NULL);
|
||||
JUT_ASSERT(VERSION_SELECT(601, 567, 579, 579), outFont2 != NULL);
|
||||
|
||||
stick = new STControl(5, 2, 3, 2, 0.9f, 0.5f, 0, 0x2000);
|
||||
JUT_ASSERT(VERSION_SELECT(570, 570, 582, 582), stick != NULL);
|
||||
JUT_ASSERT(VERSION_SELECT(604, 570, 582, 582), stick != NULL);
|
||||
stick->setWaitParm(5, 2, 3, 2, 0.9f, 0.5f, 0, 0x800);
|
||||
|
||||
mChkPntTxt_p = (ResTIMG*)operator new (0x2c00, 0x20);
|
||||
JUT_ASSERT(VERSION_SELECT(574, 574, 586, 586), mChkPntTxt_p != NULL);
|
||||
JUT_ASSERT(VERSION_SELECT(608, 574, 586, 586), mChkPntTxt_p != NULL);
|
||||
|
||||
screenSet();
|
||||
#if VERSION > VERSION_DEMO
|
||||
aramCmapDatRead();
|
||||
mSalvagePntIdx = dComIfGs_getRandomSalvagePoint();
|
||||
#endif
|
||||
initialize();
|
||||
displayinit();
|
||||
phantomShipCheck();
|
||||
@@ -414,7 +349,7 @@ void dMenu_Fmap_c::_create() {
|
||||
/* 801AFB64-801AFBDC .text phantomShipCheck__12dMenu_Fmap_cFv */
|
||||
void dMenu_Fmap_c::phantomShipCheck() {
|
||||
daGhostship_c* gship = (daGhostship_c*)fopAcM_searchFromName("Ayush", 0, 0);
|
||||
if (gship != NULL && gship->mAlpha) {
|
||||
if (gship != NULL && gship->getAlpha()) {
|
||||
mDoAud_seStart(JA_SE_CV_YUUREISEN_SONG);
|
||||
}
|
||||
}
|
||||
@@ -522,6 +457,10 @@ void dMenu_Fmap_c::screenSet() {
|
||||
fopMsgM_setPaneData(&mFmxxPanes[4], fmapDl.scrn, 'fmw4');
|
||||
|
||||
for (i = 0; i < 15; i++) {
|
||||
static u32 tag00[] = {
|
||||
'fmn1','fmn2','fmn3','fmn4','fmn5','fmn6','fmn7','fmn8',
|
||||
'fmna','fmnb','fmnc','fmnd','fmne','fmnf','fmnh',
|
||||
};
|
||||
fopMsgM_setPaneData(&mFmnPanes[i], fmapDl.scrn, tag00[i]);
|
||||
}
|
||||
|
||||
@@ -544,16 +483,35 @@ void dMenu_Fmap_c::screenSet() {
|
||||
mCk1Color2.set(((J2DPicture*)mCk1xPanes[0].pane)->getWhite());
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
static u32 tagkr[] = {
|
||||
'KR03','KR05','KR01','KR08','KR06','KR02','KR07','KR04',
|
||||
};
|
||||
fopMsgM_setPaneData(&mKr0xPanes[i], fmapDl.scrn, tagkr[i]);
|
||||
}
|
||||
mKr0Color.set(((J2DPicture*)mKr0xPanes[0].pane)->getBlack());
|
||||
mKr0Color2.set(((J2DPicture*)mKr0xPanes[0].pane)->getWhite());
|
||||
|
||||
for (i = 0; i < 11; i++) {
|
||||
static const u32 l_island[] = {
|
||||
'R01', 'R04', 'R0B', 'R0D', 'R14', 'R17',
|
||||
#if VERSION > VERSION_DEMO
|
||||
'R1A',
|
||||
#endif
|
||||
'R28', 'R29', 'R2C', 'R2D',
|
||||
};
|
||||
fopMsgM_setPaneData(&mR0xPanes[i], fmapDl.scrn, l_island[i]);
|
||||
}
|
||||
|
||||
for (i = 0; i < 49; i++) {
|
||||
static const u32 endSalv[] = {
|
||||
'ST01', 'ST02', 'ST03', 'ST04', 'ST05', 'ST06', 'ST07',
|
||||
'ST08', 'ST09', 'ST10', 'ST11', 'ST12', 'ST13', 'ST14',
|
||||
'ST15', 'ST16', 'ST17', 'ST18', 'ST19', 'ST20', 'ST21',
|
||||
'ST22', 'ST23', 'ST24', 'ST25', 'ST26', 'ST27', 'ST28',
|
||||
'ST29', 'ST30', 'ST31', 'ST32', 'ST33', 'ST34', 'ST35',
|
||||
'ST36', 'ST37', 'ST38', 'ST39', 'ST40', 'ST41', 'ST42',
|
||||
'ST43', 'ST44', 'ST45', 'ST46', 'ST47', 'ST48', 'ST49',
|
||||
};
|
||||
fopMsgM_setPaneData(&mStxxPanes[i], fmapDl.scrn->search(endSalv[i]));
|
||||
}
|
||||
|
||||
@@ -564,6 +522,7 @@ void dMenu_Fmap_c::screenSet() {
|
||||
str2[0x7F] = 0;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
static u32 txtnm[] = { 'txt1', 'txt3', 'txt2' };
|
||||
fopMsgM_setPaneData(&mAreaTxtPanes[i], fmapDl.scrn, txtnm[i]);
|
||||
((J2DTextBox*)mAreaTxtPanes[i].pane)->setFont(mFont);
|
||||
((J2DTextBox*)mAreaTxtPanes[i].pane)->setString(str2);
|
||||
@@ -645,6 +604,9 @@ void dMenu_Fmap_c::screenSet() {
|
||||
|
||||
#if VERSION > VERSION_JPN
|
||||
for (i = 0; i < 7; i++) {
|
||||
static const u32 gsShip[] = {
|
||||
'gs07', 'gs01', 'gs02', 'gs03', 'gs04', 'gs05', 'gs06',
|
||||
};
|
||||
fopMsgM_setPaneData(&mGsPanes[i], fmapDl.scrn, gsShip[i]);
|
||||
}
|
||||
#endif
|
||||
@@ -652,6 +614,9 @@ void dMenu_Fmap_c::screenSet() {
|
||||
|
||||
/* 801B06D4-801B0FB4 .text initialize__12dMenu_Fmap_cFv */
|
||||
void dMenu_Fmap_c::initialize() {
|
||||
#if VERSION == VERSION_DEMO
|
||||
aramCmapDatRead();
|
||||
#endif
|
||||
mFrameTimer = 0;
|
||||
mInputDisabled = false;
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
@@ -761,6 +726,21 @@ void dMenu_Fmap_c::displayinit() {
|
||||
}
|
||||
|
||||
for (i = 0; i < 11; i++) {
|
||||
static int islandPos[] = {
|
||||
dIsleRoom_ForsakenFortress_e,
|
||||
dIsleRoom_GaleIsle_e,
|
||||
dIsleRoom_WindfallIsland_e,
|
||||
dIsleRoom_DragonRoostIsland_e,
|
||||
dIsleRoom_FireMountain_e,
|
||||
dIsleRoom_GreatfishIsle_e,
|
||||
#if VERSION > VERSION_DEMO
|
||||
dIsleRoom_ToweroftheGods_e,
|
||||
#endif
|
||||
dIsleRoom_IceRingIsle_e,
|
||||
dIsleRoom_ForestHaven_e,
|
||||
dIsleRoom_OutsetIsland_e,
|
||||
dIsleRoom_HeadstoneIsland_e,
|
||||
};
|
||||
if (dComIfGs_isSaveArriveGrid(islandPos[i] - 1)) {
|
||||
mR0xPanes[i].pane->show();
|
||||
} else {
|
||||
@@ -793,12 +773,62 @@ void dMenu_Fmap_c::displayinit() {
|
||||
#endif
|
||||
mFmap2.fmapSv = fmapSv;
|
||||
mFmap2._create();
|
||||
mFmap2.mpFmapDatPnt = &mCmapDatPnt;
|
||||
mFmap2.setAramCmapDat(&mCmapDatPnt);
|
||||
mFmap2.initialize();
|
||||
mFmap2.displayInit();
|
||||
g_mfHIO.mNo = mDoHIO_createChild("フィールドマップ画面", &g_mfHIO);
|
||||
}
|
||||
|
||||
typedef void (dMenu_Fmap_c::*fmapProcFunc)();
|
||||
|
||||
fmapProcFunc fmapProcMain[] = {
|
||||
&dMenu_Fmap_c::SelectGrid,
|
||||
&dMenu_Fmap_c::ZoomGridLv1In,
|
||||
&dMenu_Fmap_c::ZoomGridLv1Proc,
|
||||
&dMenu_Fmap_c::ZoomGridLv1Out,
|
||||
&dMenu_Fmap_c::ZoomGridLv2In,
|
||||
&dMenu_Fmap_c::ZoomGridLv2Proc,
|
||||
&dMenu_Fmap_c::ZoomGridLv2Out,
|
||||
};
|
||||
|
||||
typedef void (dMenu_Fmap_c::*mainProcFunc)();
|
||||
|
||||
static mainProcFunc mainProc[] = {
|
||||
&dMenu_Fmap_c::FmapProc,
|
||||
&dMenu_Fmap_c::HikakuProc,
|
||||
};
|
||||
|
||||
typedef void (dMenu_Fmap_c::*hikakuProcFunc)();
|
||||
|
||||
hikakuProcFunc HikakuProcMain[] = {
|
||||
&dMenu_Fmap_c::fmap2Open,
|
||||
&dMenu_Fmap_c::fmap2Move,
|
||||
&dMenu_Fmap_c::fmap2Close,
|
||||
};
|
||||
|
||||
typedef void (dMenu_Fmap_c::*warpProcFunc)();
|
||||
|
||||
warpProcFunc warpProcMain[] = {
|
||||
&dMenu_Fmap_c::wrapMove,
|
||||
&dMenu_Fmap_c::wrapSelWinFadeIn1,
|
||||
&dMenu_Fmap_c::wrapSelect,
|
||||
&dMenu_Fmap_c::wrapSelWinFadeOut,
|
||||
&dMenu_Fmap_c::wrapSelWarp,
|
||||
};
|
||||
|
||||
typedef void (dMenu_Fmap_c::*fishManProcFunc)();
|
||||
|
||||
fishManProcFunc FishManProcMain[] = {
|
||||
&dMenu_Fmap_c::fmDispArea,
|
||||
&dMenu_Fmap_c::fmZoomGridLv1In,
|
||||
&dMenu_Fmap_c::fmZoomGridLv2In,
|
||||
&dMenu_Fmap_c::fmMapWrite,
|
||||
&dMenu_Fmap_c::fmMapWait,
|
||||
&dMenu_Fmap_c::fmZoomGridLv2Out,
|
||||
&dMenu_Fmap_c::fmZoomGridLv1Out,
|
||||
&dMenu_Fmap_c::fmEndWait,
|
||||
};
|
||||
|
||||
/* 801B1200-801B1210 .text backClothDispInit__12dMenu_Fmap_cFv */
|
||||
void dMenu_Fmap_c::backClothDispInit() {
|
||||
mClPane.pane->hide();
|
||||
@@ -930,6 +960,7 @@ void dMenu_Fmap_c::checkMarkCheck3() {
|
||||
|
||||
((J2DPicture*)mKr0xPanes[i].pane)->changeTexture(korogStat[stat], 0);
|
||||
mKr0xPanes[i].pane->show();
|
||||
#if VERSION > VERSION_DEMO
|
||||
if (dComIfGs_checkBottle(dItemNo_FOREST_WATER_e)) {
|
||||
mKr0xPanes[i].mInitAlpha = 0xC0;
|
||||
mKr0xPanes[i].mNowAlpha = 0xC0;
|
||||
@@ -939,6 +970,7 @@ void dMenu_Fmap_c::checkMarkCheck3() {
|
||||
mKr0xPanes[i].mNowAlpha = 0x30;
|
||||
fopMsgM_paneScaleXY(&mKr0xPanes[i], 1.0f);
|
||||
}
|
||||
#endif
|
||||
|
||||
fopMsgM_setAlpha(&mKr0xPanes[i]);
|
||||
}
|
||||
@@ -964,10 +996,9 @@ void dMenu_Fmap_c::setPaneOnOff(J2DScreen* i_screen, u32 i_arg2, bool i_arg3) {
|
||||
|
||||
/* 801B1978-801B19F0 .text childPaneMoveSp__12dMenu_Fmap_cFP18fopMsgM_pane_classP18fopMsgM_pane_classfff */
|
||||
void dMenu_Fmap_c::childPaneMoveSp(fopMsgM_pane_class* i_pane1, fopMsgM_pane_class* i_pane2, f32 i_scale, f32 i_x, f32 i_y) {
|
||||
f32 half = 0.5f;
|
||||
f32 ySize = i_pane2->mSize.y * half;
|
||||
i_pane1->mPosCenter.x = i_pane2->mSize.x * half + i_scale * (i_pane1->mPosCenterOrig.x - i_pane2->mSizeOrig.x * half);
|
||||
i_pane1->mPosCenter.y = ySize + i_scale * (i_pane1->mPosCenterOrig.y - i_pane2->mSizeOrig.y * half);
|
||||
f32 ySize = i_pane2->mSize.y / 2.0f;
|
||||
i_pane1->mPosCenter.x = i_pane2->mSize.x / 2.0f + i_scale * (i_pane1->mPosCenterOrig.x - i_pane2->mSizeOrig.x / 2.0f);
|
||||
i_pane1->mPosCenter.y = ySize + i_scale * (i_pane1->mPosCenterOrig.y - i_pane2->mSizeOrig.y / 2.0f);
|
||||
fopMsgM_paneScale(i_pane1, i_x, i_y);
|
||||
}
|
||||
|
||||
@@ -1138,7 +1169,8 @@ void dMenu_Fmap_c::SalvItmDispChgFast() {
|
||||
void dMenu_Fmap_c::changeSalvageGetItem(u8 i_no) {
|
||||
s8 wy = getCtCurY();
|
||||
s8 wx = getCtCurX();
|
||||
aramCmapDatPnt_t* pnt = getGridNumToCmapDatPnt(wx + (wy + 3) * 7 + 3);
|
||||
int grid = wx + (wy + 3) * 7 + 3;
|
||||
aramCmapDatPnt_t* pnt = getGridNumToCmapDatPnt(grid);
|
||||
|
||||
if (dComIfGs_isCompleteCollectMap(pnt->collectMapNo)) {
|
||||
mFullMapMode = true;
|
||||
@@ -1242,11 +1274,10 @@ void dMenu_Fmap_c::windArrowColorAnime() {
|
||||
s16 holdA = g_mfHIO.mWindArrowHold1;
|
||||
s16 holdB = g_mfHIO.mWindArrowHold2;
|
||||
|
||||
s16 cycle = holdA + period * 2 + holdB;
|
||||
JUtility::TColor colorA;
|
||||
JUtility::TColor colorB;
|
||||
|
||||
mWnd1Pane.mUserArea++;
|
||||
s16 cycle = holdA + period * 2 + holdB;
|
||||
if (mWnd1Pane.mUserArea > cycle) {
|
||||
mWnd1Pane.mUserArea = 0;
|
||||
}
|
||||
@@ -1340,6 +1371,57 @@ void dMenu_Fmap_c::checkMarkAnime() {
|
||||
}
|
||||
}
|
||||
|
||||
#if VERSION == VERSION_DEMO
|
||||
void dMenu_Fmap_c::krogMarkAnimeInit() {
|
||||
field_0x517D = g_mfHIO.field_0xE9;
|
||||
field_0x517E = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if VERSION == VERSION_DEMO
|
||||
void dMenu_Fmap_c::krogMarkAnime() {
|
||||
/* Nonmatching */
|
||||
JUtility::TColor white;
|
||||
JUtility::TColor black;
|
||||
|
||||
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_0102)) {
|
||||
return;
|
||||
}
|
||||
|
||||
f32 alpha = fopMsgM_valueIncrease(g_mfHIO.mCheckMarkAnimFrame, mCheckMarkTimer, 2);
|
||||
if (mCheckMarkToggle == 0) {
|
||||
alpha = 1.0f - alpha;
|
||||
}
|
||||
|
||||
white.r = g_mfHIO.mCheckMarkWhite.r + alpha * (mCk1Color2.r - g_mfHIO.mCheckMarkWhite.r);
|
||||
white.g = g_mfHIO.mCheckMarkWhite.g + alpha * (mCk1Color2.g - g_mfHIO.mCheckMarkWhite.g);
|
||||
white.b = g_mfHIO.mCheckMarkWhite.b + alpha * (mCk1Color2.b - g_mfHIO.mCheckMarkWhite.b);
|
||||
white.a = mCk1Color2.a;
|
||||
black.r = g_mfHIO.mCheckMarkBlack.r + alpha * (mCk1Color.r - g_mfHIO.mCheckMarkBlack.r);
|
||||
black.g = g_mfHIO.mCheckMarkBlack.g + alpha * (mCk1Color.g - g_mfHIO.mCheckMarkBlack.g);
|
||||
black.b = g_mfHIO.mCheckMarkBlack.b + alpha * (mCk1Color.b - g_mfHIO.mCheckMarkBlack.b);
|
||||
black.a = mCk1Color.a;
|
||||
|
||||
if (mCheckMarkTimer == 0) {
|
||||
mCheckMarkTimer = g_mfHIO.mCheckMarkAnimFrame;
|
||||
mCheckMarkToggle ^= 1;
|
||||
} else {
|
||||
mCheckMarkTimer--;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 8; i++) {
|
||||
if (mKr0xPanes[i].pane->isVisible()) {
|
||||
u32 bit = i & 7;
|
||||
bool stat = dComIfGs_isEventBit(dSv_event_flag_c::UNK_0102) ||
|
||||
((dComIfGs_getEventReg(dSv_event_flag_c::UNK_9EFF) & 0xFF) >> bit & 1);
|
||||
if (stat == 0) {
|
||||
((J2DPicture*)mKr0xPanes[i].pane)->setBlackWhite(black, white);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 801B3658-801B3698 .text readFmapTexture__12dMenu_Fmap_cFPCc */
|
||||
u32 dMenu_Fmap_c::readFmapTexture(const char* i_filename) {
|
||||
JKRArchive* archive = dComIfGp_getFmapArchive();
|
||||
@@ -1387,10 +1469,9 @@ void dMenu_Fmap_c::setDispIslandPos(s8 i_x, s8 i_y) {
|
||||
|
||||
/* 801B392C-801B3984 .text setIslandPos__12dMenu_Fmap_cFP18fopMsgM_pane_classff */
|
||||
void dMenu_Fmap_c::setIslandPos(fopMsgM_pane_class* i_pane, f32 i_x, f32 i_y) {
|
||||
f32 scale = 0.5f;
|
||||
f32 newX = mClbPane.mSizeOrig.x * scale;
|
||||
f32 newX = mClbPane.mSizeOrig.x / 2.0f;
|
||||
i_pane->mPosCenterOrig.x = newX + i_x;
|
||||
f32 newY = mClbPane.mSizeOrig.y * scale;
|
||||
f32 newY = mClbPane.mSizeOrig.y / 2.0f;
|
||||
i_pane->mPosCenterOrig.y = newY + i_y;
|
||||
|
||||
i_pane->mPosCenter = i_pane->mPosCenterOrig;
|
||||
@@ -1399,8 +1480,9 @@ void dMenu_Fmap_c::setIslandPos(fopMsgM_pane_class* i_pane, f32 i_x, f32 i_y) {
|
||||
|
||||
/* 801B3984-801B3A2C .text changeFmapTexture__12dMenu_Fmap_cFScSc */
|
||||
void dMenu_Fmap_c::changeFmapTexture(s8 i_x, s8 i_y) {
|
||||
int grid = i_x + (i_y + 3) * 7 + 3;
|
||||
char filename[64];
|
||||
sprintf(filename, "R%02X_b.bti", i_x + (i_y + 3) * 7 + 4);
|
||||
sprintf(filename, "R%02X_b.bti", grid + 1);
|
||||
if (readFmapTexture(filename) == NULL) {
|
||||
mR01bPane.pane->hide();
|
||||
mR01gPane.pane->hide();
|
||||
@@ -1453,11 +1535,10 @@ void dMenu_Fmap_c::setDspLargeMapLink() {
|
||||
f32 x = mPlayerPos.x - 100000.0f * mGridX;
|
||||
f32 y = mPlayerPos.y - 100000.0f * mGridY;
|
||||
|
||||
f32 scale = 0.5f;
|
||||
f32 size = mClbPane.mSizeOrig.x;
|
||||
mLnk2Pane.mPosCenterOrig.x = size * scale + x * ((size - 50.0f) / 100000.0f);
|
||||
mLnk2Pane.mPosCenterOrig.x = size / 2.0f + x * ((size - 50.0f) / 100000.0f);
|
||||
size = mClbPane.mSizeOrig.y;
|
||||
mLnk2Pane.mPosCenterOrig.y = size * scale + y * ((size - 50.0f) / 100000.0f);
|
||||
mLnk2Pane.mPosCenterOrig.y = size / 2.0f + y * ((size - 50.0f) / 100000.0f);
|
||||
mLnk2Pane.mPosCenter.x = mLnk2Pane.mPosCenterOrig.x;
|
||||
mLnk2Pane.mPosCenter.y = mLnk2Pane.mPosCenterOrig.y;
|
||||
fopMsgM_cposMove(&mLnk2Pane);
|
||||
@@ -1467,9 +1548,9 @@ void dMenu_Fmap_c::setDspLargeMapLink() {
|
||||
y = mShipPos.y - 100000.0f * mTargetGridY;
|
||||
|
||||
size = mClbPane.mSizeOrig.x;
|
||||
mSpi2Pane.mPosCenterOrig.x = size * scale + x * ((size - 50.0f) / 100000.0f);
|
||||
mSpi2Pane.mPosCenterOrig.x = size / 2.0f + x * ((size - 50.0f) / 100000.0f);
|
||||
size = mClbPane.mSizeOrig.y;
|
||||
mSpi2Pane.mPosCenterOrig.y = size * scale + y * ((size - 50.0f) / 100000.0f);
|
||||
mSpi2Pane.mPosCenterOrig.y = size / 2.0f + y * ((size - 50.0f) / 100000.0f);
|
||||
mSpi2Pane.mPosCenter.x = mSpi2Pane.mPosCenterOrig.x;
|
||||
mSpi2Pane.mPosCenter.y = mSpi2Pane.mPosCenterOrig.y;
|
||||
fopMsgM_cposMove(&mSpi2Pane);
|
||||
@@ -1537,8 +1618,10 @@ void dMenu_Fmap_c::setDspHugeMapLink() {
|
||||
#if VERSION <= VERSION_JPN
|
||||
if (!mFishmanActive) {
|
||||
mStl1Pane.pane->hide();
|
||||
#if VERSION > VERSION_DEMO
|
||||
mLnk3Pane.pane->hide();
|
||||
mDspHugeMapLink = false;
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
@@ -1568,9 +1651,8 @@ void dMenu_Fmap_c::setDspHugeMapLink() {
|
||||
mMapSelectActive = false;
|
||||
}
|
||||
|
||||
f32 scale = 0.5f;
|
||||
f32 baseX = mR01gPane.mPosTopLeftOrig.x + mR01gPane.mSizeOrig.x * scale;
|
||||
f32 baseY = mR01gPane.mPosTopLeftOrig.y + mR01gPane.mSizeOrig.y * scale;
|
||||
f32 baseX = mR01gPane.mPosTopLeftOrig.x + mR01gPane.mSizeOrig.x / 2.0f;
|
||||
f32 baseY = mR01gPane.mPosTopLeftOrig.y + mR01gPane.mSizeOrig.y / 2.0f;
|
||||
mLnk3Pane.mPosCenterOrig.x = baseX + dx * (mR01gPane.mSizeOrig.x / 20000.0f);
|
||||
mLnk3Pane.mPosCenterOrig.y = baseY + dy * (mR01gPane.mSizeOrig.y / 20000.0f);
|
||||
mLnk3Pane.mPosCenter.x = mLnk3Pane.mPosCenterOrig.x;
|
||||
@@ -1584,11 +1666,15 @@ void dMenu_Fmap_c::setDspHugeMapLink() {
|
||||
if (shipDx <= 10000.0f && shipDx >= -10000.0f && shipDy <= 10000.0f &&
|
||||
shipDy >= -10000.0f) {
|
||||
mDspHugeMapShip = true;
|
||||
#if VERSION > VERSION_DEMO
|
||||
mShipOpenWater = false;
|
||||
#endif
|
||||
} else {
|
||||
mDspHugeMapShip = false;
|
||||
#if VERSION > VERSION_DEMO
|
||||
mShipOpenWater = true;
|
||||
mSpi3Pane.pane->hide();
|
||||
#endif
|
||||
}
|
||||
|
||||
mSpi3Pane.mPosCenterOrig.x = baseX + shipDx * (mR01gPane.mSizeOrig.x / 20000.0f);
|
||||
@@ -1757,7 +1843,9 @@ void dMenu_Fmap_c::_delete() {
|
||||
delete outFont2;
|
||||
}
|
||||
dComIfGp_getFmapResArchive()->removeResourceAll();
|
||||
#if VERSION > VERSION_DEMO
|
||||
dComIfGp_getFmapArchive()->removeResourceAll();
|
||||
#endif
|
||||
mDoHIO_deleteChild(g_mfHIO.mNo);
|
||||
}
|
||||
|
||||
@@ -1773,6 +1861,9 @@ void dMenu_Fmap_c::FmapProcMain() {
|
||||
(this->*fmapProcMain[mFmapProcIdx])();
|
||||
windArrowColorAnime();
|
||||
checkMarkAnime();
|
||||
#if VERSION == VERSION_DEMO
|
||||
krogMarkAnime();
|
||||
#endif
|
||||
#if VERSION > VERSION_JPN
|
||||
gShipMarkAnime();
|
||||
#endif
|
||||
@@ -2161,10 +2252,15 @@ BOOL dMenu_Fmap_c::paneTranceZoomMap(s16 i_frame, u8 i_max, f32 i_transStartX, f
|
||||
J2DTextBox::TFontSize ktx1FontSize;
|
||||
J2DTextBox::TFontSize ktx2FontSize;
|
||||
|
||||
f32 scaleAdj = alpha * (i_scaleEnd - i_scaleStart);
|
||||
f32 f0 = i_transEndX - i_transStartX;
|
||||
f32 f1 = i_transEndY - i_transStartY;
|
||||
f32 f2 = i_scaleEnd - i_scaleStart;
|
||||
f32 f29 = alpha * f0;
|
||||
f32 f28 = alpha * f1;
|
||||
f32 scaleAdj = alpha * f2;
|
||||
fopMsgM_paneScaleXY(&mClbPane, i_scaleStart + scaleAdj);
|
||||
scale = i_scaleStart + scaleAdj;
|
||||
fopMsgM_paneTrans(&mClbPane, (i_transStartX + alpha * (i_transEndX - i_transStartX)), i_transStartY + alpha * (i_transEndY - i_transStartY));
|
||||
fopMsgM_paneTrans(&mClbPane, i_transStartX + f29, i_transStartY + f28);
|
||||
if (i_flag == 1) {
|
||||
alpha = 1.0f - alpha;
|
||||
}
|
||||
@@ -2211,7 +2307,7 @@ BOOL dMenu_Fmap_c::paneTranceZoomMap(s16 i_frame, u8 i_max, f32 i_transStartX, f
|
||||
if (mClb2Pane.pane->isVisible()) {
|
||||
childPaneMoveSp(&mClb2Pane, &mClbPane, alpha, scale, scale);
|
||||
}
|
||||
for (int i = 0; i < 9; i++) {
|
||||
for (int i = 0; i < ARRAY_SSIZE(mSc1xPanes); i++) {
|
||||
childPaneMoveSp(&mSc1xPanes[i], &mClbPane, alpha, scale, scale);
|
||||
}
|
||||
|
||||
@@ -2432,7 +2528,7 @@ bool dMenu_Fmap_c::_open_warpMode() {
|
||||
|
||||
if (ret == TRUE) {
|
||||
mFrameTimer = 0;
|
||||
for (int i = 0; i < 9; i++) {
|
||||
for (int i = 0; i < FMAP_WARP_COUNT; i++) {
|
||||
mWrapSpotEmitters[i]->playDrawParticle();
|
||||
}
|
||||
mWrapBackEmitter->clearStatus(JPAEmtrStts_StopDraw);
|
||||
@@ -2446,7 +2542,9 @@ bool dMenu_Fmap_c::_open_warpMode() {
|
||||
void dMenu_Fmap_c::init_warpMode() {
|
||||
mDoAud_seStart(JA_SE_SHIPPU_CHART_OPEN);
|
||||
mFmapMode = FMAP_MODE_WARP;
|
||||
#if VERSION > VERSION_DEMO
|
||||
mButtonIconMode = FMAP_BTN_ICON_WARP;
|
||||
#endif
|
||||
|
||||
if (dComIfGs_getOptRuby()) {
|
||||
mWt1Pane.pane->hide();
|
||||
@@ -2461,6 +2559,10 @@ void dMenu_Fmap_c::init_warpMode() {
|
||||
}
|
||||
selCursorInit();
|
||||
selCursorMoveWarp();
|
||||
#if VERSION == VERSION_DEMO
|
||||
krogMarkAnimeInit();
|
||||
krogMarkAnime();
|
||||
#endif
|
||||
mWarpSubState = FMAP_WARP_SEL_YES;
|
||||
|
||||
cXyz spotEmitter;
|
||||
@@ -2470,10 +2572,10 @@ void dMenu_Fmap_c::init_warpMode() {
|
||||
mWrapBackEmitter->setStatus(JPAEmtrStts_StopDraw);
|
||||
|
||||
int i = 0;
|
||||
dMf_HIO_c& hio = g_mfHIO;
|
||||
for (; i < 9; i++) {
|
||||
spotEmitter.x = hio.mWarpSpotPosX[i];
|
||||
spotEmitter.y = hio.mWarpSpotPosY[i];
|
||||
for (; i < DEMO_SELECT(8, FMAP_WARP_COUNT); i++) {
|
||||
// !@bug Demo iterates 8 times instead of 7, accessing out of bounds of these three arrays.
|
||||
spotEmitter.x = g_mfHIO.mWarpSpotPosX[i];
|
||||
spotEmitter.y = g_mfHIO.mWarpSpotPosY[i];
|
||||
spotEmitter.z = 0.0f;
|
||||
setWrapSpotEmitter(i, spotEmitter);
|
||||
mWrapSpotEmitters[i]->stopDrawParticle();
|
||||
@@ -2560,7 +2662,7 @@ void dMenu_Fmap_c::wrapMove() {
|
||||
paneTranceWarpMsg(&mYsk0Pane, mFrameTimer, g_mfHIO.mWarpMsgAnimFrame, g_mfHIO.mWarpYesNoPosY, 0.0f, 0, 0);
|
||||
paneTranceWarpMsg(&mNok0Pane, mFrameTimer, g_mfHIO.mWarpMsgAnimFrame, g_mfHIO.mWarpYesNoPosY, 0.0f, 0, 0);
|
||||
areaTextChangeAnimeInit();
|
||||
for (int i = 0; i < 9; i++) {
|
||||
for (int i = 0; i < FMAP_WARP_COUNT; i++) {
|
||||
mWrapSpotEmitters[i]->stopDrawParticle();
|
||||
}
|
||||
mWarpProcIdx = WARP_PROC_SEL_WIN_FADE_IN;
|
||||
@@ -2572,7 +2674,7 @@ void dMenu_Fmap_c::wrapMove() {
|
||||
}
|
||||
mMapClose = true;
|
||||
stopWrapBackEmitter();
|
||||
for (int i = 0; i < 9; i++) {
|
||||
for (int i = 0; i < FMAP_WARP_COUNT; i++) {
|
||||
mWrapSpotEmitters[i]->stopDrawParticle();
|
||||
stopWrapSpotEmitter(i);
|
||||
}
|
||||
@@ -2685,7 +2787,7 @@ void dMenu_Fmap_c::wrapSelWinFadeOut() {
|
||||
mFrameTimer++;
|
||||
if (backAlpha == TRUE && msg == TRUE && msg2 == TRUE && yesMove == TRUE && noMove == TRUE) {
|
||||
mFrameTimer = 0;
|
||||
for (int i = 0; i < 9; i++) {
|
||||
for (int i = 0; i < FMAP_WARP_COUNT; i++) {
|
||||
mWrapSpotEmitters[i]->playDrawParticle();
|
||||
}
|
||||
mWarpProcIdx = WARP_PROC_MOVE;
|
||||
@@ -2709,7 +2811,7 @@ void dMenu_Fmap_c::wrapSelWarp() {
|
||||
|
||||
mMapClose = true;
|
||||
stopWrapBackEmitter();
|
||||
for (int i = 0; i < 9; i++) {
|
||||
for (int i = 0; i < FMAP_WARP_COUNT; i++) {
|
||||
mWrapSpotEmitters[i]->stopDrawParticle();
|
||||
stopWrapSpotEmitter(i);
|
||||
}
|
||||
@@ -2725,7 +2827,7 @@ void dMenu_Fmap_c::warpAreaAnime0() {
|
||||
cXyz pos;
|
||||
scale.z = 0.0f;
|
||||
pos.z = 0.0f;
|
||||
for (int i = 0; i < 9; i++) {
|
||||
for (int i = 0; i < FMAP_WARP_COUNT; i++) {
|
||||
pos.x = g_mfHIO.mWarpSpotPosX[i];
|
||||
pos.y = g_mfHIO.mWarpSpotPosY[i];
|
||||
mWrapSpotEmitters[i]->setGlobalTranslation(pos);
|
||||
@@ -3278,7 +3380,9 @@ void dMenu_Fmap_c::fmEndWait() {
|
||||
/* 801BAF18-801BAFCC .text _open_wallPaper__12dMenu_Fmap_cFv */
|
||||
bool dMenu_Fmap_c::_open_wallPaper() {
|
||||
if (mFrameTimer == 0) {
|
||||
#if VERSION > VERSION_DEMO
|
||||
mButtonIconMode = FMAP_BTN_ICON_WALLPAPER;
|
||||
#endif
|
||||
selCursorHide();
|
||||
}
|
||||
BOOL ret = paneTransBase(mFrameTimer, g_mfHIO.mBaseAnimFrame, g_mfHIO.mOpenPosY, 0.0, 0, 0);
|
||||
|
||||
Reference in New Issue
Block a user