mirror of
https://github.com/zeldaret/tww.git
synced 2026-09-29 02:38:12 -04:00
d_operate_wind mostly done (#1207)
This commit is contained in:
@@ -27,7 +27,10 @@ enum J2DMirror {
|
||||
class J2DPicture : public J2DPane {
|
||||
public:
|
||||
struct TCornerColor {
|
||||
// TODO
|
||||
JUtility::TColor corner0;
|
||||
JUtility::TColor corner1;
|
||||
JUtility::TColor corner2;
|
||||
JUtility::TColor corner3;
|
||||
};
|
||||
|
||||
J2DPicture();
|
||||
@@ -122,8 +125,12 @@ public:
|
||||
|
||||
void load(u8 i) { mpTexture[i]->load((GXTexMapID)i); }
|
||||
|
||||
// TODO
|
||||
void getCornerColor(J2DPicture::TCornerColor&) const {}
|
||||
void getCornerColor(J2DPicture::TCornerColor& rColor) const {
|
||||
rColor.corner0 = mCornerColor[0];
|
||||
rColor.corner1 = mCornerColor[1];
|
||||
rColor.corner2 = mCornerColor[2];
|
||||
rColor.corner3 = mCornerColor[3];
|
||||
}
|
||||
|
||||
protected:
|
||||
/* 0x0CC */ JUTTexture* mpTexture[4];
|
||||
|
||||
@@ -622,6 +622,7 @@ public:
|
||||
void setMsgDtArchive(JKRArchive * pArc) { mpEnglishTextArchive = pArc; }
|
||||
JKRArchive* getMsgDtArchive() { return mpEnglishTextArchive; }
|
||||
JKRArchive* getNameResArchive() { return mpNameResArchive; }
|
||||
JKRArchive* getWindResArchive() { return mpWindResArchive; }
|
||||
#if VERSION > VERSION_JPN
|
||||
void setMsgDt2Archive(JKRArchive * pArc) { mpHyruleTextArchive = pArc; }
|
||||
JKRArchive* getMsgDt2Archive() { return mpHyruleTextArchive; }
|
||||
@@ -4004,6 +4005,7 @@ inline void dComIfGp_setFontArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play
|
||||
inline void dComIfGp_setMsgDtArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setMsgDtArchive(pArc); }
|
||||
inline JKRArchive* dComIfGp_getMsgDtArchive() { return g_dComIfG_gameInfo.play.getMsgDtArchive(); }
|
||||
inline JKRArchive* dComIfGp_getNameResArchive() { return g_dComIfG_gameInfo.play.getNameResArchive(); }
|
||||
inline JKRArchive* dComIfGp_getWindResArchive() { return g_dComIfG_gameInfo.play.getWindResArchive(); }
|
||||
#if VERSION > VERSION_JPN
|
||||
inline void dComIfGp_setMsgDt2Archive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setMsgDt2Archive(pArc); }
|
||||
inline JKRArchive* dComIfGp_getMsgDt2Archive() { return g_dComIfG_gameInfo.play.getMsgDt2Archive(); }
|
||||
|
||||
+51
-10
@@ -52,7 +52,7 @@ public:
|
||||
|
||||
class dDlst_Ow_mask_c : public dDlst_base_c {
|
||||
public:
|
||||
void setScreen(J2DScreen*) {}
|
||||
void setScreen(J2DScreen* s) { scrn = s; }
|
||||
|
||||
void draw();
|
||||
|
||||
@@ -63,9 +63,11 @@ public:
|
||||
class dOperate_wind_c {
|
||||
public:
|
||||
virtual ~dOperate_wind_c() {}
|
||||
void setTimer(s16) {}
|
||||
void setTimer(s16 i_timer) {
|
||||
mTimer = i_timer;
|
||||
}
|
||||
|
||||
static int dOw_angleRegular(f32);
|
||||
int dOw_angleRegular(f32);
|
||||
int dOw_stickControl(int, s16);
|
||||
void screenSet();
|
||||
void alphaSet(f32);
|
||||
@@ -90,7 +92,11 @@ public:
|
||||
public:
|
||||
/* 0x004 */ J2DScreen* scrn1;
|
||||
/* 0x008 */ J2DScreen* scrn2;
|
||||
/* 0x00C */ fopMsgM_pane_class field_0x0c[5];
|
||||
/* 0x00C */ fopMsgM_pane_class field_0x0c;
|
||||
/* 0x044 */ fopMsgM_pane_class field_0x44;
|
||||
/* 0x07C */ fopMsgM_pane_class field_0x7c;
|
||||
/* 0x0B4 */ fopMsgM_pane_class field_0xb4;
|
||||
/* 0x0EC */ fopMsgM_pane_class field_0xec;
|
||||
/* 0x124 */ fopMsgM_pane_class field_0x124[2];
|
||||
/* 0x194 */ fopMsgM_pane_class field_0x194;
|
||||
/* 0x1CC */ fopMsgM_pane_class field_0x1cc[4];
|
||||
@@ -101,6 +107,26 @@ public:
|
||||
/* 0x55C */ STControl* stick;
|
||||
/* 0x560 */ dDlst_Ow_main_c* mMain;
|
||||
/* 0x564 */ dDlst_Ow_mask_c* mMask;
|
||||
#if VERSION == VERSION_PAL
|
||||
/* 0x568 */ ResTIMG* shipfontTimg;
|
||||
#endif
|
||||
/* 0x568 */ J2DPicture::TCornerColor field_0x568;
|
||||
/* 0x578 */ J2DPicture::TCornerColor field_0x578;
|
||||
/* 0x588 */ J2DPicture::TCornerColor field_0x588;
|
||||
/* 0x598 */ f32 field_0x598[50];
|
||||
/* 0x660 */ f32 field_0x660[50];
|
||||
/* 0x728 */ f32 field_0x728[50];
|
||||
/* 0x7F0 */ f32 field_0x7f0[50];
|
||||
/* 0x8B8 */ f32 field_0x8b8;
|
||||
/* 0x8BC */ u8 field_0x8BC[0x8C0 - 0x8BC];
|
||||
/* 0x8C0 */ f32 mPosX;
|
||||
/* 0x8C4 */ f32 mPosY;
|
||||
/* 0x8C8 */ s16 mTimer;
|
||||
/* 0x8CA */ s16 field_0x8ca;
|
||||
/* 0x8CC */ s16 mDeg;
|
||||
/* 0x8CE */ s16 field_0x8ce;
|
||||
/* 0x8D0 */ int field_0x8d0;
|
||||
/* 0x8D4 */ u8 field_0x8d4;
|
||||
};
|
||||
|
||||
class dOw_c : public msg_class {
|
||||
@@ -109,11 +135,26 @@ public:
|
||||
inline bool _draw();
|
||||
inline void _move();
|
||||
inline void _open();
|
||||
JKRExpHeap* getHeap() { return heap; }
|
||||
void getStatus() {}
|
||||
void setHeap(JKRExpHeap* h) { heap = h; }
|
||||
void setStatus(u8) {}
|
||||
void setTimer(s16) {}
|
||||
|
||||
JKRExpHeap* getHeap() {
|
||||
return heap;
|
||||
}
|
||||
|
||||
u8 getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
void setHeap(JKRExpHeap* h) {
|
||||
heap = h;
|
||||
}
|
||||
|
||||
void setStatus(u8 i_status) {
|
||||
status = i_status;
|
||||
}
|
||||
|
||||
void setTimer(s16 i_timer) {
|
||||
dOw_scrn->setTimer(i_timer);
|
||||
}
|
||||
|
||||
void _create();
|
||||
void _delete();
|
||||
@@ -121,7 +162,7 @@ public:
|
||||
public:
|
||||
/* 0x0FC */ JKRExpHeap* heap;
|
||||
/* 0x100 */ dOperate_wind_c* dOw_scrn;
|
||||
/* 0x104 */ u8 field_0x104;
|
||||
/* 0x104 */ u8 status;
|
||||
};
|
||||
|
||||
#endif /* D_OPERATE_WIND_H */
|
||||
|
||||
+605
-54
@@ -1,34 +1,33 @@
|
||||
//
|
||||
// Generated by dtk
|
||||
// Translation Unit: d_operate_wind.cpp
|
||||
//
|
||||
|
||||
#include "d/dolzel.h" // IWYU pragma: keep
|
||||
#include "d/d_operate_wind.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_lib.h"
|
||||
#include "d/d_kankyo_wether.h"
|
||||
#include "d/d_s_play.h"
|
||||
#include "d/d_meter.h"
|
||||
#include "f_op/f_op_msg_mng.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "m_Do/m_Do_controller_pad.h"
|
||||
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
|
||||
#include "JSystem/J2DGraph/J2DScreen.h"
|
||||
#include "JSystem/JKernel/JKRExpHeap.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "SSystem/SComponent/c_phase.h"
|
||||
|
||||
/* 8021E58C-8021E5F8 .text __ct__9dOw_HIO_cFv */
|
||||
dOw_HIO_c::dOw_HIO_c() {
|
||||
field_0x08 = 0x1e;
|
||||
field_0x0a = 0x5f;
|
||||
field_0x0c = 0x9b;
|
||||
field_0x0e = 0x10;
|
||||
field_0x08 = 30;
|
||||
field_0x0a = 95;
|
||||
field_0x0c = 155;
|
||||
field_0x0e = 16;
|
||||
field_0x18 = 100;
|
||||
field_0x10 = 0x78;
|
||||
field_0x12 = 0x32;
|
||||
field_0x10 = 120;
|
||||
field_0x12 = 50;
|
||||
field_0x04 = 7.0f;
|
||||
field_0x14 = 0x14;
|
||||
field_0x16 = 0x28;
|
||||
field_0x14 = 20;
|
||||
field_0x16 = 40;
|
||||
}
|
||||
|
||||
dOw_HIO_c g_owHIO;
|
||||
|
||||
void dDlst_Ow_main_c::drawLine(int width, f32 x1, f32 y1, f32 x2, f32 y2) {
|
||||
J2DDrawLine(x1, y1, x2, y2, color, width);
|
||||
}
|
||||
@@ -39,7 +38,8 @@ void dDlst_Ow_main_c::draw() {
|
||||
graf->setPort();
|
||||
|
||||
for (int i = 0; i < mLineMax; i++) {
|
||||
// drawLine(6, mX1[i], mY1[i], mX2[i], mY2[i]);
|
||||
// should probably be `drawLine(6, mX1[i], mY1[i], mX2[i], mY2[i]);`
|
||||
// but it reverses instuction order
|
||||
J2DDrawLine(mX1[i], mY1[i], mX2[i], mY2[i], color, 6);
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ int dOperate_wind_c::dOw_angleRegular(f32 angle) {
|
||||
return 135;
|
||||
else if (angle < 202.5f)
|
||||
return 180;
|
||||
// missing end return
|
||||
// !@bug missing end return
|
||||
}
|
||||
|
||||
/* 8021E7E4-8021E974 .text dOw_stickControl__15dOperate_wind_cFis */
|
||||
@@ -126,123 +126,654 @@ int dOperate_wind_c::dOw_stickControl(int ret, s16 ang) {
|
||||
|
||||
/* 8021E974-8021ED4C .text screenSet__15dOperate_wind_cFv */
|
||||
void dOperate_wind_c::screenSet() {
|
||||
/* Nonmatching */
|
||||
fopMsgM_setPaneData(&field_0x0c, scrn1, 'wdn');
|
||||
fopMsgM_setPaneData(&field_0x44, scrn1, 'wds');
|
||||
fopMsgM_setPaneData(&field_0x7c, scrn1, 'wdw');
|
||||
fopMsgM_setPaneData(&field_0xb4, scrn1, 'wde');
|
||||
fopMsgM_setPaneData(&field_0x54c, scrn1, 'win');
|
||||
fopMsgM_setPaneData(&field_0xec, scrn1, 'wib');
|
||||
|
||||
fopMsgM_setPaneData(&field_0x124[0], scrn1, 'wi21');
|
||||
fopMsgM_setPaneData(&field_0x124[1], scrn1, 'wi22');
|
||||
|
||||
fopMsgM_setPaneData(&field_0x194, scrn1, 'wi2b');
|
||||
|
||||
fopMsgM_setPaneData(&field_0x1cc[0], scrn1, 'n2');
|
||||
fopMsgM_setPaneData(&field_0x1cc[1], scrn1, 's2');
|
||||
fopMsgM_setPaneData(&field_0x1cc[2], scrn1, 'w2');
|
||||
fopMsgM_setPaneData(&field_0x1cc[3], scrn1, 'e2');
|
||||
|
||||
#if VERSION >= VERSION_USA
|
||||
field_0x1cc[0].pane->hide();
|
||||
field_0x1cc[1].pane->hide();
|
||||
field_0x1cc[2].pane->hide();
|
||||
field_0x1cc[3].pane->hide();
|
||||
#endif
|
||||
|
||||
fopMsgM_setPaneData(&field_0x2ac[0], scrn1, 'str1');
|
||||
fopMsgM_setPaneData(&field_0x2ac[1], scrn1, 'str2');
|
||||
fopMsgM_setPaneData(&field_0x2ac[2], scrn1, 'str3');
|
||||
fopMsgM_setPaneData(&field_0x2ac[3], scrn1, 'str4');
|
||||
fopMsgM_setPaneData(&field_0x2ac[4], scrn1, 'str5');
|
||||
fopMsgM_setPaneData(&field_0x2ac[5], scrn1, 'str6');
|
||||
fopMsgM_setPaneData(&field_0x2ac[6], scrn1, 'str7');
|
||||
fopMsgM_setPaneData(&field_0x2ac[7], scrn1, 'str8');
|
||||
|
||||
fopMsgM_setPaneData(&field_0x46c[0], scrn1, 'ci04');
|
||||
fopMsgM_setPaneData(&field_0x46c[1], scrn1, 'ci05');
|
||||
fopMsgM_setPaneData(&field_0x46c[2], scrn1, 'ci06');
|
||||
fopMsgM_setPaneData(&field_0x46c[3], scrn1, 'ci07');
|
||||
|
||||
fopMsgM_setPaneData(&field_0x554, scrn2, 'mask');
|
||||
field_0x554.mInitAlpha = 130;
|
||||
|
||||
#if VERSION == VERSION_PAL
|
||||
if (dComIfGs_getPalLanguage() == 1) {
|
||||
JKRReadTypeResource(shipfontTimg, 0xC00, 'TIMG', "shipfont_o_big.bti", dComIfGp_getWindResArchive());
|
||||
((J2DPicture*)field_0xb4.pane)->changeTexture(shipfontTimg, 0);
|
||||
} else if (dComIfGs_getPalLanguage() == 2 || dComIfGs_getPalLanguage() == 3 || dComIfGs_getPalLanguage() == 4) {
|
||||
JKRReadTypeResource(shipfontTimg, 0xC00, 'TIMG', "shipfont_o_big.bti", dComIfGp_getWindResArchive());
|
||||
((J2DPicture*)field_0x7c.pane)->changeTexture(shipfontTimg, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
((J2DPicture*)field_0x54c.pane)->getCornerColor(field_0x568);
|
||||
((J2DPicture*)field_0x124[0].pane)->getCornerColor(field_0x578);
|
||||
((J2DPicture*)field_0x554.pane)->getCornerColor(field_0x588);
|
||||
}
|
||||
|
||||
/* 8021ED4C-8021EE9C .text alphaSet__15dOperate_wind_cFf */
|
||||
void dOperate_wind_c::alphaSet(f32) {
|
||||
/* Nonmatching */
|
||||
void dOperate_wind_c::alphaSet(f32 i_alpha) {
|
||||
fopMsgM_setNowAlpha(&field_0x0c, i_alpha);
|
||||
fopMsgM_setNowAlpha(&field_0x44, i_alpha);
|
||||
fopMsgM_setNowAlpha(&field_0x7c, i_alpha);
|
||||
fopMsgM_setNowAlpha(&field_0xb4, i_alpha);
|
||||
fopMsgM_setNowAlpha(&field_0x54c, i_alpha);
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
fopMsgM_setNowAlpha(&field_0x124[i], i_alpha);
|
||||
}
|
||||
|
||||
fopMsgM_setNowAlpha(&field_0x194, i_alpha);
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
fopMsgM_setNowAlpha(&field_0x1cc[i], i_alpha);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 8; i++) {
|
||||
fopMsgM_setNowAlpha(&field_0x2ac[i], i_alpha);
|
||||
}
|
||||
|
||||
fopMsgM_setNowAlpha(&field_0x46c[0], i_alpha);
|
||||
fopMsgM_setNowAlpha(&field_0x554, i_alpha);
|
||||
|
||||
field_0x8d4 = g_owHIO.field_0x18 * i_alpha;
|
||||
}
|
||||
|
||||
/* 8021EE9C-8021F550 .text arrowColor1__15dOperate_wind_cFv */
|
||||
void dOperate_wind_c::arrowColor1() {
|
||||
/* Nonmatching */
|
||||
JUtility::TColor sp24;
|
||||
JUtility::TColor sp20;
|
||||
|
||||
field_0xec.mUserArea++;
|
||||
if (field_0xec.mUserArea > 30) {
|
||||
field_0xec.mUserArea = 0;
|
||||
}
|
||||
|
||||
if (field_0xec.mUserArea < 10) {
|
||||
f32 temp_f1 = fopMsgM_valueIncrease(10, field_0xec.mUserArea, 0);
|
||||
sp20.r = field_0x568.corner1.r + (temp_f1 * (field_0x568.corner0.r - field_0x568.corner1.r));
|
||||
sp20.g = field_0x568.corner1.g + (temp_f1 * (field_0x568.corner0.g - field_0x568.corner1.g));
|
||||
sp20.b = field_0x568.corner1.b + (temp_f1 * (field_0x568.corner0.b - field_0x568.corner1.b));
|
||||
sp20.a = field_0x568.corner1.a + (temp_f1 * (field_0x568.corner0.a - field_0x568.corner1.a));
|
||||
} else if (field_0xec.mUserArea < 15) {
|
||||
sp20 = field_0x568.corner0;
|
||||
} else if (field_0xec.mUserArea < 25) {
|
||||
f32 temp_f1 = fopMsgM_valueIncrease(10, 25 - field_0xec.mUserArea, 0);
|
||||
sp20.r = field_0x568.corner1.r + (temp_f1 * (field_0x568.corner0.r - field_0x568.corner1.r));
|
||||
sp20.g = field_0x568.corner1.g + (temp_f1 * (field_0x568.corner0.g - field_0x568.corner1.g));
|
||||
sp20.b = field_0x568.corner1.b + (temp_f1 * (field_0x568.corner0.b - field_0x568.corner1.b));
|
||||
sp20.a = field_0x568.corner1.a + (temp_f1 * (field_0x568.corner0.a - field_0x568.corner1.a));
|
||||
} else {
|
||||
sp20 = field_0x568.corner1;
|
||||
}
|
||||
|
||||
if (field_0xec.mUserArea < 5) {
|
||||
sp24 = field_0x568.corner0;
|
||||
} else if (field_0xec.mUserArea < 15) {
|
||||
f32 temp_f1 = fopMsgM_valueIncrease(10, 15 - field_0xec.mUserArea, 0);
|
||||
sp24.r = field_0x568.corner1.r + (temp_f1 * (field_0x568.corner0.r - field_0x568.corner1.r));
|
||||
sp24.g = field_0x568.corner1.g + (temp_f1 * (field_0x568.corner0.g - field_0x568.corner1.g));
|
||||
sp24.b = field_0x568.corner1.b + (temp_f1 * (field_0x568.corner0.b - field_0x568.corner1.b));
|
||||
sp24.a = field_0x568.corner1.a + (temp_f1 * (field_0x568.corner0.a - field_0x568.corner1.a));
|
||||
} else if (field_0xec.mUserArea < 20) {
|
||||
sp24 = field_0x568.corner1;
|
||||
} else {
|
||||
f32 temp_f1 = fopMsgM_valueIncrease(10, field_0xec.mUserArea - 20, 0);
|
||||
sp24.r = field_0x568.corner1.r + (temp_f1 * (field_0x568.corner0.r - field_0x568.corner1.r));
|
||||
sp24.g = field_0x568.corner1.g + (temp_f1 * (field_0x568.corner0.g - field_0x568.corner1.g));
|
||||
sp24.b = field_0x568.corner1.b + (temp_f1 * (field_0x568.corner0.b - field_0x568.corner1.b));
|
||||
sp24.a = field_0x568.corner1.a + (temp_f1 * (field_0x568.corner0.a - field_0x568.corner1.a));
|
||||
}
|
||||
|
||||
((J2DPicture*)field_0x54c.pane)->setCornerColor(sp20, sp24, sp20, sp24);
|
||||
}
|
||||
|
||||
/* 8021F550-8021FBC0 .text arrowColor2__15dOperate_wind_cFv */
|
||||
void dOperate_wind_c::arrowColor2() {
|
||||
/* Nonmatching */
|
||||
s16 var_r31 = g_owHIO.field_0x14;
|
||||
s16 var_r30 = g_owHIO.field_0x16;
|
||||
JUtility::TColor sp3C;
|
||||
JUtility::TColor sp38;
|
||||
|
||||
field_0x124[0].mUserArea++;
|
||||
if (field_0x124[0].mUserArea > (s16)(var_r30 + (var_r31 + 20))) {
|
||||
field_0x124[0].mUserArea = 0;
|
||||
}
|
||||
|
||||
if (field_0x124[0].mUserArea < 10) {
|
||||
f32 temp_f1 = fopMsgM_valueIncrease(10, field_0x124[0].mUserArea, 0);
|
||||
sp38.r = field_0x578.corner0.r + (temp_f1 * (field_0x578.corner1.r - field_0x578.corner0.r));
|
||||
sp38.g = field_0x578.corner0.g + (temp_f1 * (field_0x578.corner1.g - field_0x578.corner0.g));
|
||||
sp38.b = field_0x578.corner0.b + (temp_f1 * (field_0x578.corner1.b - field_0x578.corner0.b));
|
||||
} else if (field_0x124[0].mUserArea < var_r31 + 10) {
|
||||
sp38 = field_0x578.corner1;
|
||||
} else if (field_0x124[0].mUserArea < var_r31 + 20) {
|
||||
f32 temp_f1 = fopMsgM_valueIncrease(10, (var_r31 + 20) - field_0x124[0].mUserArea, 0);
|
||||
sp38.r = field_0x578.corner0.r + (temp_f1 * (field_0x578.corner1.r - field_0x578.corner0.r));
|
||||
sp38.g = field_0x578.corner0.g + (temp_f1 * (field_0x578.corner1.g - field_0x578.corner0.g));
|
||||
sp38.b = field_0x578.corner0.b + (temp_f1 * (field_0x578.corner1.b - field_0x578.corner0.b));
|
||||
} else {
|
||||
sp38 = field_0x578.corner0;
|
||||
}
|
||||
|
||||
if (field_0x124[0].mUserArea < var_r31) {
|
||||
sp3C = field_0x578.corner1;
|
||||
} else if (field_0x124[0].mUserArea < var_r31 + 10) {
|
||||
f32 temp_f1 = fopMsgM_valueIncrease(10, (var_r31 + 10) - field_0x124[0].mUserArea, 0);
|
||||
sp3C.r = field_0x578.corner0.r + (temp_f1 * (field_0x578.corner1.r - field_0x578.corner0.r));
|
||||
sp3C.g = field_0x578.corner0.g + (temp_f1 * (field_0x578.corner1.g - field_0x578.corner0.g));
|
||||
sp3C.b = field_0x578.corner0.b + (temp_f1 * (field_0x578.corner1.b - field_0x578.corner0.b));
|
||||
} else if (field_0x124[0].mUserArea < var_r30 + (var_r31 + 10)) {
|
||||
sp3C = field_0x578.corner0;
|
||||
} else {
|
||||
f32 temp_f1 = fopMsgM_valueIncrease(10, field_0x124[0].mUserArea - (var_r30 + (var_r31 + 10)), 0);
|
||||
sp3C.r = field_0x578.corner0.r + (temp_f1 * (field_0x578.corner1.r - field_0x578.corner0.r));
|
||||
sp3C.g = field_0x578.corner0.g + (temp_f1 * (field_0x578.corner1.g - field_0x578.corner0.g));
|
||||
sp3C.b = field_0x578.corner0.b + (temp_f1 * (field_0x578.corner1.b - field_0x578.corner0.b));
|
||||
}
|
||||
|
||||
sp38.a = 0xFF;
|
||||
sp3C.a = 0x96;
|
||||
|
||||
((J2DPicture*)field_0x124[0].pane)->setCornerColor(sp3C, sp38, sp3C, sp38);
|
||||
((J2DPicture*)field_0x124[1].pane)->setCornerColor(sp3C, sp38, sp3C, sp38);
|
||||
}
|
||||
|
||||
/* 8021FBC0-80220360 .text maskColor__15dOperate_wind_cFv */
|
||||
// NONMATCHING - some reg alloc / stack slightly off
|
||||
void dOperate_wind_c::maskColor() {
|
||||
/* Nonmatching */
|
||||
s16 var_r31 = g_owHIO.field_0x10;
|
||||
JUtility::TColor sp48[4];
|
||||
|
||||
field_0x46c[0].mUserArea++;
|
||||
if (field_0x46c[0].mUserArea >= (s16)(var_r31 * 4)) {
|
||||
field_0x46c[0].mUserArea = 0;
|
||||
}
|
||||
|
||||
f32 var_f1 = fopMsgM_valueIncrease(var_r31, field_0x46c[0].mUserArea % var_r31, 2);
|
||||
|
||||
sp48[0].r = field_0x588.corner0.r + (var_f1 * (field_0x588.corner2.r - field_0x588.corner0.r));
|
||||
sp48[0].g = field_0x588.corner0.g + (var_f1 * (field_0x588.corner2.g - field_0x588.corner0.g));
|
||||
sp48[0].b = field_0x588.corner0.b + (var_f1 * (field_0x588.corner2.b - field_0x588.corner0.b));
|
||||
sp48[0].a = field_0x588.corner0.a + (var_f1 * (field_0x588.corner2.a - field_0x588.corner0.a));
|
||||
|
||||
sp48[1].r = field_0x588.corner1.r + (var_f1 * (field_0x588.corner0.r - field_0x588.corner1.r));
|
||||
sp48[1].g = field_0x588.corner1.g + (var_f1 * (field_0x588.corner0.g - field_0x588.corner1.g));
|
||||
sp48[1].b = field_0x588.corner1.b + (var_f1 * (field_0x588.corner0.b - field_0x588.corner1.b));
|
||||
sp48[1].a = field_0x588.corner1.a + (var_f1 * (field_0x588.corner0.a - field_0x588.corner1.a));
|
||||
|
||||
sp48[2].r = field_0x588.corner2.r + (var_f1 * (field_0x588.corner3.r - field_0x588.corner2.r));
|
||||
sp48[2].g = field_0x588.corner2.g + (var_f1 * (field_0x588.corner3.g - field_0x588.corner2.g));
|
||||
sp48[2].b = field_0x588.corner2.b + (var_f1 * (field_0x588.corner3.b - field_0x588.corner2.b));
|
||||
sp48[2].a = field_0x588.corner2.a + (var_f1 * (field_0x588.corner3.a - field_0x588.corner2.a));
|
||||
|
||||
sp48[3].r = field_0x588.corner3.r + (var_f1 * (field_0x588.corner1.r - field_0x588.corner0.r));
|
||||
sp48[3].g = field_0x588.corner3.g + (var_f1 * (field_0x588.corner1.g - field_0x588.corner0.g));
|
||||
sp48[3].b = field_0x588.corner3.b + (var_f1 * (field_0x588.corner1.b - field_0x588.corner0.b));
|
||||
sp48[3].a = field_0x588.corner3.a + (var_f1 * (field_0x588.corner1.a - field_0x588.corner0.a));
|
||||
|
||||
if (field_0x46c[0].mUserArea < var_r31) {
|
||||
((J2DPicture*)field_0x554.pane)->setCornerColor(sp48[0], sp48[1], sp48[2], sp48[3]);
|
||||
} else if (field_0x46c[0].mUserArea < var_r31 * 2) {
|
||||
((J2DPicture*)field_0x554.pane)->setCornerColor(sp48[2], sp48[0], sp48[3], sp48[1]);
|
||||
} else if (field_0x46c[0].mUserArea < var_r31 * 3) {
|
||||
((J2DPicture*)field_0x554.pane)->setCornerColor(sp48[3], sp48[2], sp48[1], sp48[0]);
|
||||
} else {
|
||||
((J2DPicture*)field_0x554.pane)->setCornerColor(sp48[1], sp48[3], sp48[0], sp48[2]);
|
||||
}
|
||||
}
|
||||
|
||||
/* 80220360-802207C8 .text arrowDirection__15dOperate_wind_cFv */
|
||||
void dOperate_wind_c::arrowDirection() {
|
||||
/* Nonmatching */
|
||||
f32 stick_value = stick->getValueStick();
|
||||
s16 var_r31 = field_0xec.pane->getRotate();
|
||||
|
||||
if (stick->getValueStick() >= 0.89999998f && fabs(stick_value) - fabs(field_0x8b8) >= 0.0) {
|
||||
int stick_control = dOw_stickControl(field_0x8d0, stick->getAngleStick());
|
||||
if (field_0x8ca == 0 && stick_control != field_0x8d0) {
|
||||
field_0x8d0 = stick_control;
|
||||
|
||||
switch (stick_control) {
|
||||
case 8:
|
||||
if (mDeg != 315) {
|
||||
field_0x8ca = 7;
|
||||
mDeg = 315;
|
||||
mDoAud_seStart(JA_SE_TAKT_WIND_CURSOR);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (mDeg != 0) {
|
||||
field_0x8ca = 7;
|
||||
mDeg = 0;
|
||||
mDoAud_seStart(JA_SE_TAKT_WIND_CURSOR);
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (mDeg != 45) {
|
||||
field_0x8ca = 7;
|
||||
mDeg = 45;
|
||||
mDoAud_seStart(JA_SE_TAKT_WIND_CURSOR);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (mDeg != 90) {
|
||||
field_0x8ca = 7;
|
||||
mDeg = 90;
|
||||
mDoAud_seStart(JA_SE_TAKT_WIND_CURSOR);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (mDeg != 135) {
|
||||
field_0x8ca = 7;
|
||||
mDeg = 135;
|
||||
mDoAud_seStart(JA_SE_TAKT_WIND_CURSOR);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (mDeg != 180) {
|
||||
field_0x8ca = 7;
|
||||
mDeg = 180;
|
||||
mDoAud_seStart(JA_SE_TAKT_WIND_CURSOR);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (mDeg != 225) {
|
||||
field_0x8ca = 7;
|
||||
mDeg = 225;
|
||||
mDoAud_seStart(JA_SE_TAKT_WIND_CURSOR);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (mDeg != 270) {
|
||||
field_0x8ca = 7;
|
||||
mDeg = 270;
|
||||
mDoAud_seStart(JA_SE_TAKT_WIND_CURSOR);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (stick->getValueStick() < 0.89999998f && fabs(stick_value) - fabs(field_0x8b8) < 0.0f) {
|
||||
field_0x8d0 = 0;
|
||||
}
|
||||
|
||||
field_0x8b8 = stick_value;
|
||||
if (field_0x8ca > 0) {
|
||||
field_0x8ca--;
|
||||
}
|
||||
|
||||
s16 var_r29 = mDeg - var_r31;
|
||||
if (var_r29 > 180) {
|
||||
var_r29 -= 360;
|
||||
} else if (var_r29 < -180) {
|
||||
var_r29 += 360;
|
||||
}
|
||||
|
||||
if (abs(var_r29) < 16) {
|
||||
field_0x8ca = 0;
|
||||
}
|
||||
|
||||
f32 temp_f1 = var_r29 * (1.0f - fopMsgM_valueIncrease(7, field_0x8ca, 0));
|
||||
var_r31 += (s16)temp_f1;
|
||||
arrowRotate(&field_0xec, var_r31);
|
||||
}
|
||||
|
||||
/* 802207C8-802208C4 .text windSet__15dOperate_wind_cFv */
|
||||
void dOperate_wind_c::windSet() {
|
||||
/* Nonmatching */
|
||||
switch (mDeg) {
|
||||
case 315:
|
||||
dKyw_tact_wind_set(0, -0x6000);
|
||||
break;
|
||||
case 0:
|
||||
dKyw_tact_wind_set(0, -0x8000);
|
||||
break;
|
||||
case 45:
|
||||
dKyw_tact_wind_set(0, 0x6000);
|
||||
break;
|
||||
case 90:
|
||||
dKyw_tact_wind_set(0, 0x4000);
|
||||
break;
|
||||
case 135:
|
||||
dKyw_tact_wind_set(0, 0x2000);
|
||||
break;
|
||||
case 180:
|
||||
dKyw_tact_wind_set(0, 0);
|
||||
break;
|
||||
case 225:
|
||||
dKyw_tact_wind_set(0, -0x2000);
|
||||
break;
|
||||
case 270:
|
||||
dKyw_tact_wind_set(0, -0x4000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* 802208C4-8022098C .text ringScale__15dOperate_wind_cFf */
|
||||
void dOperate_wind_c::ringScale(f32) {
|
||||
/* Nonmatching */
|
||||
void dOperate_wind_c::ringScale(f32 i_scale) {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
if (i == 0) {
|
||||
field_0x46c[i].mPosCenter.x = mPosX + i_scale * (field_0x46c[i].mPosCenterOrig.x - mPosX);
|
||||
field_0x46c[i].mPosCenter.y = mPosY + i_scale * (field_0x46c[i].mPosCenterOrig.y - mPosY);
|
||||
} else {
|
||||
field_0x46c[i].mPosCenter.x = field_0x46c[i].mPosCenterOrig.x * i_scale;
|
||||
field_0x46c[i].mPosCenter.y = field_0x46c[i].mPosCenterOrig.y * i_scale;
|
||||
}
|
||||
|
||||
fopMsgM_paneScaleXY(&field_0x46c[i], i_scale);
|
||||
}
|
||||
}
|
||||
|
||||
/* 8022098C-80220A60 .text directionTrans__15dOperate_wind_cFf */
|
||||
void dOperate_wind_c::directionTrans(f32) {
|
||||
/* Nonmatching */
|
||||
void dOperate_wind_c::directionTrans(f32 param_0) {
|
||||
f32 var_f30 = param_0 * 80.0f;
|
||||
|
||||
fopMsgM_paneTrans(&field_0x0c, 0.0f, var_f30);
|
||||
fopMsgM_paneTrans(&field_0x44, 0.0f, -var_f30);
|
||||
fopMsgM_paneTrans(&field_0x7c, var_f30, 0.0f);
|
||||
fopMsgM_paneTrans(&field_0xb4, -var_f30, 0.0f);
|
||||
|
||||
fopMsgM_paneTrans(&field_0x1cc[0], 0.0f, var_f30);
|
||||
fopMsgM_paneTrans(&field_0x1cc[1], 0.0f, -var_f30);
|
||||
fopMsgM_paneTrans(&field_0x1cc[2], var_f30, 0.0f);
|
||||
fopMsgM_paneTrans(&field_0x1cc[3], -var_f30, 0.0f);
|
||||
}
|
||||
|
||||
/* 80220A60-80220CD8 .text lineInit__15dOperate_wind_cFf */
|
||||
void dOperate_wind_c::lineInit(f32) {
|
||||
/* Nonmatching */
|
||||
// NONMATCHING - not sure what the temp_r29 pattern is
|
||||
void dOperate_wind_c::lineInit(f32 param_0) {
|
||||
f32 temp_f29 = -((-172.0f - REG6_F(5)) * param_0);
|
||||
f32 temp_f28 = (field_0x2ac[0].mPosTopLeftOrig.y - field_0x194.mPosCenterOrig.y) * param_0;
|
||||
f32 temp_f25 = 360.0f / field_0x8ce;
|
||||
f32 var_f24 = 11.25f;
|
||||
|
||||
for (int i = 0; i < field_0x8ce; i++) {
|
||||
f32 var_f27;
|
||||
f32 var_f26;
|
||||
|
||||
int temp_r29 = (i >= 0) ? i : -i;
|
||||
if (temp_r29) {
|
||||
f32 temp_f26 = M_PI * ((101.25f + var_f24) / 180.0f);
|
||||
var_f27 = mPosX + (temp_f28 * std::sinf(temp_f26));
|
||||
var_f26 = mPosY + (temp_f28 * std::cosf(temp_f26));
|
||||
} else {
|
||||
f32 temp_f26_2 = M_PI * ((78.75f + var_f24) / 180.0f);
|
||||
var_f27 = mPosX + (temp_f28 * std::sinf(temp_f26_2));
|
||||
var_f26 = mPosY + (temp_f28 * std::cosf(temp_f26_2));
|
||||
}
|
||||
|
||||
field_0x598[i] = var_f27 + (temp_f29 * std::sinf(M_PI * (var_f24 / 180.0f)));
|
||||
field_0x660[i] = var_f26 + (temp_f29 * std::cosf(M_PI * (var_f24 / 180.0f)));
|
||||
field_0x728[i] = (2.0f * var_f27) - field_0x598[i];
|
||||
field_0x7f0[i] = (2.0f * var_f26) - field_0x660[i];
|
||||
|
||||
if (temp_r29) {
|
||||
field_0x598[i] = var_f27;
|
||||
field_0x660[i] = var_f26;
|
||||
} else {
|
||||
field_0x728[i] = var_f27;
|
||||
field_0x7f0[i] = var_f26;
|
||||
}
|
||||
|
||||
var_f24 += temp_f25;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80220CD8-80220D80 .text lineDraw__15dOperate_wind_cFv */
|
||||
// NONMATCHING - weird stuff happening in the loop
|
||||
void dOperate_wind_c::lineDraw() {
|
||||
/* Nonmatching */
|
||||
JUtility::TColor color(0xFF, 0xFF, 0xFF, field_0x8d4);
|
||||
mMain->setLineColor(color);
|
||||
mMain->setLineMax(field_0x8ce);
|
||||
|
||||
for (int i = 0; i < field_0x8ce; i++) {
|
||||
mMain->mX1[i] = field_0x598[i];
|
||||
mMain->mY1[i] = field_0x660[i];
|
||||
mMain->mX2[i] = field_0x728[i];
|
||||
mMain->mY2[i] = field_0x7f0[i];
|
||||
}
|
||||
}
|
||||
|
||||
/* 80220D80-80220E18 .text arrowRotate__15dOperate_wind_cFP18fopMsgM_pane_classs */
|
||||
void dOperate_wind_c::arrowRotate(fopMsgM_pane_class*, s16) {
|
||||
/* Nonmatching */
|
||||
void dOperate_wind_c::arrowRotate(fopMsgM_pane_class* i_pane, s16 i_angle) {
|
||||
if (i_angle < 0) {
|
||||
i_angle += 360;
|
||||
}
|
||||
if (i_angle > 360) {
|
||||
i_angle -= 360;
|
||||
}
|
||||
|
||||
i_pane->pane->rotate(i_pane->mSizeOrig.x / 2, i_pane->mSizeOrig.y / 2, ROTATE_Z, i_angle);
|
||||
}
|
||||
|
||||
/* 80220E18-80221090 .text initialize__15dOperate_wind_cFv */
|
||||
void dOperate_wind_c::initialize() {
|
||||
/* Nonmatching */
|
||||
mTimer = 0;
|
||||
field_0x8ca = 0;
|
||||
field_0x8ce = g_owHIO.field_0x0e;
|
||||
field_0x8d4 = 0;
|
||||
field_0x8d0 = 0;
|
||||
|
||||
field_0xec.mUserArea = 0;
|
||||
field_0x46c[0].mUserArea = 0;
|
||||
field_0x124[0].mUserArea = 30;
|
||||
field_0x124[1].mUserArea = 35;
|
||||
|
||||
((J2DPicture*)field_0x124[0].pane)->setCornerColor(
|
||||
JUtility::TColor(0xFFFFFF96),
|
||||
JUtility::TColor(0x00FFFFFF),
|
||||
JUtility::TColor(0xFFFFFF96),
|
||||
JUtility::TColor(0x00FFFFFF)
|
||||
);
|
||||
|
||||
((J2DPicture*)field_0x124[1].pane)->setCornerColor(
|
||||
JUtility::TColor(0xFFFFFF96),
|
||||
JUtility::TColor(0x00FFFFFF),
|
||||
JUtility::TColor(0xFFFFFF96),
|
||||
JUtility::TColor(0x00FFFFFF)
|
||||
);
|
||||
|
||||
mPosX = field_0x46c[0].mPosTopLeftOrig.x + field_0x46c[0].mSizeOrig.x;
|
||||
mPosY = field_0x46c[0].mPosTopLeftOrig.y;
|
||||
|
||||
cXyz* wind_vec = dKyw_get_wind_vec();
|
||||
s16 temp_r3 = cM_atan2s(wind_vec->x, wind_vec->z) + 0x8000;
|
||||
mDeg = dOw_angleRegular(((180.0f * temp_r3) / (f32)0x8000) - 90.0f);
|
||||
arrowRotate(&field_0xec, mDeg);
|
||||
arrowRotate(&field_0x194, mDeg + 90);
|
||||
|
||||
field_0x8b8 = stick->getValueStick();
|
||||
lineInit(0.0f);
|
||||
}
|
||||
|
||||
/* 80221090-802213B0 .text _create__15dOperate_wind_cFv */
|
||||
void dOperate_wind_c::_create() {
|
||||
/* Nonmatching */
|
||||
scrn1 = new J2DScreen();
|
||||
JUT_ASSERT(VERSION_SELECT(965, 965, 990, 990), scrn1 != NULL);
|
||||
scrn1->set("operate_wind.blo", dComIfGp_getWindResArchive());
|
||||
|
||||
scrn2 = new J2DScreen();
|
||||
JUT_ASSERT(VERSION_SELECT(969, 969, 994, 994), scrn2 != NULL);
|
||||
scrn2->set("operate_wind_mask.blo", dComIfGp_getWindResArchive());
|
||||
|
||||
stick = new STControl(5, 2, 3, 2, 1.0f, 1.0f, 0x1000, 0x2000);
|
||||
JUT_ASSERT(VERSION_SELECT(973, 973, 998, 998), stick != NULL);
|
||||
|
||||
mMain = new dDlst_Ow_main_c();
|
||||
JUT_ASSERT(VERSION_SELECT(976, 976, 1001, 1001), mMain != NULL);
|
||||
mMain->setScreen(scrn1);
|
||||
|
||||
mMask = new dDlst_Ow_mask_c();
|
||||
JUT_ASSERT(VERSION_SELECT(980, 980, 1005, 1005), mMask != NULL);
|
||||
mMask->setScreen(scrn2);
|
||||
|
||||
screenSet();
|
||||
initialize();
|
||||
}
|
||||
|
||||
/* 802213B0-8022147C .text _delete__15dOperate_wind_cFv */
|
||||
void dOperate_wind_c::_delete() {
|
||||
/* Nonmatching */
|
||||
delete scrn1;
|
||||
delete scrn2;
|
||||
delete stick;
|
||||
delete mMain;
|
||||
delete mMask;
|
||||
dComIfGp_getWindResArchive()->removeResourceAll();
|
||||
}
|
||||
|
||||
/* 8022147C-8022151C .text _move__15dOperate_wind_cFv */
|
||||
void dOperate_wind_c::_move() {
|
||||
/* Nonmatching */
|
||||
if (!dMenu_flag()) {
|
||||
if (CPad_CHECK_TRIG_A(0)) {
|
||||
windSet();
|
||||
dComIfGp_setOperateWindChangeOff();
|
||||
} else if (CPad_CHECK_TRIG_B(0)) {
|
||||
dComIfGp_setOperateWindCancelOff();
|
||||
}
|
||||
|
||||
arrowColor1();
|
||||
arrowColor2();
|
||||
maskColor();
|
||||
arrowDirection();
|
||||
}
|
||||
}
|
||||
|
||||
/* 8022151C-8022163C .text _draw__15dOperate_wind_cFv */
|
||||
void dOperate_wind_c::_draw() {
|
||||
/* Nonmatching */
|
||||
fopMsgM_setAlpha(&field_0x0c);
|
||||
fopMsgM_setAlpha(&field_0x44);
|
||||
fopMsgM_setAlpha(&field_0x7c);
|
||||
fopMsgM_setAlpha(&field_0xb4);
|
||||
fopMsgM_setAlpha(&field_0x54c);
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
fopMsgM_setAlpha(&field_0x124[i]);
|
||||
}
|
||||
|
||||
fopMsgM_setAlpha(&field_0x194);
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
fopMsgM_setAlpha(&field_0x1cc[i]);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 8; i++) {
|
||||
fopMsgM_setAlpha(&field_0x2ac[i]);
|
||||
}
|
||||
|
||||
fopMsgM_setAlpha(&field_0x46c[0]);
|
||||
fopMsgM_setAlpha(&field_0x554);
|
||||
|
||||
lineDraw();
|
||||
dComIfGd_set2DOpa(mMask);
|
||||
dComIfGd_set2DOpa(mMain);
|
||||
}
|
||||
|
||||
/* 8022163C-802216F0 .text _open__15dOperate_wind_cFv */
|
||||
bool dOperate_wind_c::_open() {
|
||||
/* Nonmatching */
|
||||
bool rt = false;
|
||||
if (mTimer < 10) {
|
||||
mTimer++;
|
||||
|
||||
f32 temp_f1 = fopMsgM_valueIncrease(10, mTimer, 0);
|
||||
alphaSet(temp_f1);
|
||||
ringScale(temp_f1);
|
||||
|
||||
f32 temp_f1_2 = fopMsgM_valueIncrease(10, 10 - mTimer, 0);
|
||||
directionTrans(temp_f1_2);
|
||||
lineInit(temp_f1);
|
||||
}
|
||||
|
||||
if (mTimer >= 10) {
|
||||
rt = true;
|
||||
}
|
||||
|
||||
return rt;
|
||||
}
|
||||
|
||||
/* 802216F0-80221770 .text _close__15dOperate_wind_cFv */
|
||||
bool dOperate_wind_c::_close() {
|
||||
/* Nonmatching */
|
||||
s16 temp_r4 = g_owHIO.field_0x18;
|
||||
|
||||
bool rt = false;
|
||||
if (mTimer > 0) {
|
||||
mTimer--;
|
||||
|
||||
f32 temp_f1 = fopMsgM_valueIncrease(temp_r4, mTimer, 0);
|
||||
alphaSet(temp_f1);
|
||||
}
|
||||
|
||||
if (mTimer <= 0) {
|
||||
rt = true;
|
||||
}
|
||||
|
||||
return rt;
|
||||
}
|
||||
|
||||
/* 80221770-80221830 .text _create__5dOw_cFv */
|
||||
void dOw_c::_create() {
|
||||
/* Nonmatching */
|
||||
dOw_scrn = new dOperate_wind_c();
|
||||
JUT_ASSERT(0x478, dOw_scrn != NULL);
|
||||
JUT_ASSERT(VERSION_SELECT(1119, 1119, 1144, 1144), dOw_scrn != NULL);
|
||||
|
||||
#if VERSION == VERSION_PAL
|
||||
void* p = heap->alloc(0xC00, 0x20);
|
||||
JUT_ASSERT(1149, p != NULL);
|
||||
dOw_scrn->shipfontTimg = (ResTIMG*)p;
|
||||
#endif
|
||||
|
||||
dOw_scrn->_create();
|
||||
}
|
||||
|
||||
/* 80221830-80221880 .text _delete__5dOw_cFv */
|
||||
void dOw_c::_delete() {
|
||||
/* Nonmatching */
|
||||
#if VERSION == VERSION_PAL
|
||||
if (dOw_scrn->shipfontTimg != NULL) {
|
||||
heap->free(dOw_scrn->shipfontTimg);
|
||||
dOw_scrn->shipfontTimg = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
dOw_scrn->_delete();
|
||||
delete dOw_scrn;
|
||||
}
|
||||
|
||||
bool dOw_c::_draw() {
|
||||
if (field_0x104) /* getStatus? */
|
||||
if (getStatus() != 0)
|
||||
dOw_scrn->_draw();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 80221880-802218B4 .text dOw_Draw__FP5dOw_c */
|
||||
static BOOL dOw_Draw(dOw_c* i_this) {
|
||||
/* Nonmatching */
|
||||
return i_this->_draw();
|
||||
}
|
||||
|
||||
@@ -250,7 +781,7 @@ void dOw_c::_close() {
|
||||
if (!dOw_scrn->_close()) {
|
||||
dOw_scrn->_move();
|
||||
} else {
|
||||
field_0x104 = 0;
|
||||
setStatus(0);
|
||||
fopMsgM_Delete(this);
|
||||
}
|
||||
}
|
||||
@@ -262,15 +793,26 @@ void dOw_c::_open() {
|
||||
|
||||
/* 802218B4-802219A4 .text dOw_Execute__FP5dOw_c */
|
||||
static BOOL dOw_Execute(dOw_c* i_this) {
|
||||
/* Nonmatching */
|
||||
static u8 wind_flag = dComIfGp_getOperateWind();
|
||||
JKRHeap* old_heap = mDoExt_setCurrentHeap(i_this->getHeap());
|
||||
|
||||
if (dComIfGp_getOperateWind() == 2) {
|
||||
i_this->_open();
|
||||
if (i_this->dOw_scrn->_open()) {
|
||||
i_this->dOw_scrn->_move();
|
||||
}
|
||||
} else {
|
||||
// i_this->dOw_scrn->setTimer ?
|
||||
i_this->_close();
|
||||
if (wind_flag == 2) {
|
||||
i_this->setTimer(g_owHIO.field_0x08);
|
||||
}
|
||||
|
||||
if (!i_this->dOw_scrn->_close()) {
|
||||
i_this->dOw_scrn->_move();
|
||||
} else {
|
||||
i_this->setStatus(0);
|
||||
fopMsgM_Delete(i_this);
|
||||
}
|
||||
}
|
||||
|
||||
wind_flag = dComIfGp_getOperateWind();
|
||||
mDoExt_setCurrentHeap(old_heap);
|
||||
return TRUE;
|
||||
@@ -288,6 +830,9 @@ static BOOL dOw_Delete(dOw_c* i_this) {
|
||||
i_this->_delete();
|
||||
mDoExt_setCurrentHeap(old_heap);
|
||||
fopMsgM_destroyExpHeap(i_this->getHeap());
|
||||
#if VERSION == VERSION_DEMO
|
||||
g_owHIO.removeHIO();
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -295,11 +840,17 @@ static BOOL dOw_Delete(dOw_c* i_this) {
|
||||
static cPhs_State dOw_Create(msg_class* i_msg) {
|
||||
dOw_c* i_this = (dOw_c*)i_msg;
|
||||
|
||||
#if VERSION == VERSION_DEMO
|
||||
// "Wind Direction Control Screen
|
||||
g_owHIO.entryHIO("風向操作表示画面");
|
||||
#endif
|
||||
|
||||
JKRExpHeap* heap = fopMsgM_createExpHeap(20000);
|
||||
JUT_ASSERT(0x547, heap != NULL);
|
||||
JUT_ASSERT(VERSION_SELECT(1310, 1310, 1351, 1351), heap != NULL);
|
||||
i_this->setHeap(heap);
|
||||
|
||||
JKRHeap* old_heap = mDoExt_setCurrentHeap(i_this->getHeap());
|
||||
i_this->field_0x104 = 1; /* setStatus? */
|
||||
i_this->status = 1;
|
||||
i_this->_create();
|
||||
mDoExt_setCurrentHeap(old_heap);
|
||||
return cPhs_COMPLEATE_e;
|
||||
|
||||
Reference in New Issue
Block a user