mirror of https://github.com/zeldaret/tp.git
301 lines
12 KiB
C++
301 lines
12 KiB
C++
#ifndef D_MENU_D_MENU_WINDOW_H
|
|
#define D_MENU_D_MENU_WINDOW_H
|
|
|
|
#include "d/d_drawlist.h"
|
|
#include "d/menu/d_menu_collect.h"
|
|
#include "d/meter/d_meter2_info.h"
|
|
#include "f_op/f_op_msg.h"
|
|
#include "dolphin/types.h"
|
|
#include "m_Do/m_Do_controller_pad.h"
|
|
#include "m_Do/m_Do_graphic.h"
|
|
#include "m_Do/m_Do_mtx.h"
|
|
|
|
class dMenu_Ring_c;
|
|
class dMenu_Dmap_c;
|
|
class dMenu_Fmap_c;
|
|
|
|
class dDlst_MENU_CAPTURE_c : public dDlst_base_c {
|
|
public:
|
|
/* 801FDFCC */ virtual void draw();/* {
|
|
if (getDrawFlag() == 1) {
|
|
setDrawFlag();
|
|
dComIfGp_onPauseFlag();
|
|
GXSetTexCopySrc(0, 0, 608, 448);
|
|
GXSetTexCopyDst(304, 224, (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_ENABLE);
|
|
GXCopyTex(mDoGph_gInf_c::getFrameBufferTex(), GX_FALSE);
|
|
GXPixModeSync();
|
|
} else {
|
|
GXTexObj tex;
|
|
GXInitTexObj(&tex, mDoGph_gInf_c::getFrameBufferTex(), 304, 224,
|
|
(GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_CLAMP, GX_CLAMP, GX_FALSE);
|
|
GXInitTexObjLOD(&tex, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
|
|
GXLoadTexObj(&tex, GX_TEXMAP0);
|
|
GXSetNumChans(0);
|
|
GXSetNumTexGens(1);
|
|
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 60, GX_FALSE, 125);
|
|
GXSetNumTevStages(1);
|
|
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
|
|
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
|
|
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
GXColor color = {0xFF, 0xFF, 0xFF, mAlpha};
|
|
GXSetTevColor(GX_TEVREG0, color);
|
|
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0);
|
|
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
GXSetZCompLoc(GX_TRUE);
|
|
GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE);
|
|
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_OR);
|
|
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
|
|
GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
|
|
GXSetFogRangeAdj(GX_FALSE, 0, NULL);
|
|
GXSetCullMode(GX_CULL_NONE);
|
|
GXSetDither(GX_TRUE);
|
|
GXLoadPosMtxImm(g_mDoMtx_identity, GX_PNMTX0);
|
|
GXSetCurrentMtx(0);
|
|
GXClearVtxDesc();
|
|
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
|
|
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
|
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0);
|
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGB8, 0);
|
|
|
|
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
|
i_GXPosition3s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMinY(), 0);
|
|
GXTexCoord2s8(0, 0);
|
|
|
|
i_GXPosition3s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMinY(), 0);
|
|
GXTexCoord2s8(1, 0);
|
|
|
|
i_GXPosition3s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMaxY(), 0);
|
|
GXTexCoord2s8(1, 1);
|
|
|
|
i_GXPosition3s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMaxY(), 0);
|
|
GXTexCoord2s8(0, 1);
|
|
i_GXEnd();
|
|
}
|
|
} */
|
|
/* 801FE2E8 */ virtual ~dDlst_MENU_CAPTURE_c();
|
|
|
|
dDlst_MENU_CAPTURE_c() {
|
|
mFlag = 0;
|
|
mAlpha = 255;
|
|
mTopFlag = 0;
|
|
}
|
|
|
|
void setCaptureFlag() { mFlag = 1; }
|
|
bool checkDraw() { return mFlag; }
|
|
u8 getAlpha() { return mAlpha; }
|
|
u8 getTopFlag() { return mTopFlag; }
|
|
u8 getDrawFlag() { return mFlag; }
|
|
void setDrawFlag() { mFlag = 3; }
|
|
|
|
private:
|
|
/* 0x4 */ u8 mFlag;
|
|
/* 0x5 */ u8 mAlpha;
|
|
/* 0x6 */ u8 mTopFlag;
|
|
};
|
|
|
|
class dMw_c : public msg_class {
|
|
public:
|
|
enum dMw_Status {
|
|
/* 0x00 */ NO_MENU,
|
|
/* 0x01 */ RING_OPEN,
|
|
/* 0x02 */ RING_MOVE,
|
|
/* 0x03 */ RING_CLOSE,
|
|
/* 0x04 */ COLLECT_OPEN,
|
|
/* 0x05 */ COLLECT_MOVE,
|
|
/* 0x06 */ COLLECT_CLOSE,
|
|
/* 0x07 */ FMAP_OPEN,
|
|
/* 0x08 */ FMAP_MOVE,
|
|
/* 0x09 */ FMAP_CLOSE,
|
|
/* 0x0A */ DMAP_OPEN,
|
|
/* 0x0B */ DMAP_MOVE,
|
|
/* 0x0C */ DMAP_CLOSE,
|
|
/* 0x0D */ SAVE_OPEN,
|
|
/* 0x0E */ SAVE_MOVE,
|
|
/* 0x0F */ SAVE_CLOSE,
|
|
/* 0x10 */ OPTIONS_OPEN,
|
|
/* 0x11 */ OPTIONS_MOVE,
|
|
/* 0x12 */ OPTIONS_CLOSE,
|
|
/* 0x13 */ LETTER_OPEN,
|
|
/* 0x14 */ LETTER_MOVE,
|
|
/* 0x15 */ LETTER_CLOSE,
|
|
/* 0x16 */ FISHING_OPEN,
|
|
/* 0x17 */ FISHING_MOVE,
|
|
/* 0x18 */ FISHING_CLOSE,
|
|
/* 0x19 */ SKILL_OPEN,
|
|
/* 0x1A */ SKILL_MOVE,
|
|
/* 0x1B */ SKILL_CLOSE,
|
|
/* 0x1C */ INSECT_OPEN,
|
|
/* 0x1D */ INSECT_MOVE,
|
|
/* 0x1E */ INSECT_CLOSE,
|
|
/* 0x1F */ INSECT_AGITHA_OPEN1,
|
|
/* 0x20 */ INSECT_AGITHA_OPEN2,
|
|
/* 0x21 */ INSECT_AGITHA_MOVE,
|
|
/* 0x22 */ INSECT_AGITHA_CLOSE,
|
|
};
|
|
|
|
/* 801FA13C */ void key_wait_init(u8);
|
|
/* 801FA220 */ void ring_open_init(u8);
|
|
/* 801FA23C */ void ring_move_init(u8);
|
|
/* 801FA240 */ void ring_close_init(u8);
|
|
/* 801FA244 */ void collect_open_init(u8);
|
|
/* 801FA2D0 */ void collect_move_init(u8);
|
|
/* 801FA46C */ void collect_close_init(u8);
|
|
/* 801FA538 */ void fmap_open_init(u8);
|
|
/* 801FA55C */ void fmap_move_init(u8);
|
|
/* 801FA560 */ void fmap_close_init(u8);
|
|
/* 801FA564 */ void dmap_open_init(u8);
|
|
/* 801FA588 */ void dmap_move_init(u8);
|
|
/* 801FA58C */ void dmap_close_init(u8);
|
|
/* 801FA590 */ void collect_save_open_init(u8);
|
|
/* 801FA5E4 */ void collect_save_move_init(u8);
|
|
/* 801FA5E8 */ void collect_save_close_init(u8);
|
|
/* 801FA608 */ void collect_option_open_init(u8);
|
|
/* 801FA65C */ void collect_option_move_init(u8);
|
|
/* 801FA660 */ void collect_option_close_init(u8);
|
|
/* 801FA680 */ void collect_letter_open_init(u8);
|
|
/* 801FA6DC */ void collect_letter_move_init(u8);
|
|
/* 801FA6E0 */ void collect_letter_close_init(u8);
|
|
/* 801FA738 */ void collect_fishing_open_init(u8);
|
|
/* 801FA794 */ void collect_fishing_move_init(u8);
|
|
/* 801FA798 */ void collect_fishing_close_init(u8);
|
|
/* 801FA7F0 */ void collect_skill_open_init(u8);
|
|
/* 801FA84C */ void collect_skill_move_init(u8);
|
|
/* 801FA850 */ void collect_skill_close_init(u8);
|
|
/* 801FA8A8 */ void collect_insect_open_init(u8);
|
|
/* 801FA908 */ void collect_insect_move_init(u8);
|
|
/* 801FA90C */ void collect_insect_close_init(u8);
|
|
/* 801FA964 */ void insect_open_init(u8);
|
|
/* 801FA9E8 */ void insect_open2_init(u8);
|
|
/* 801FA9EC */ void insect_move_init(u8);
|
|
/* 801FA9F0 */ void insect_close_init(u8);
|
|
/* 801FAA48 */ void key_wait_proc();
|
|
/* 801FAFDC */ void ring_open_proc();
|
|
/* 801FB01C */ void ring_move_proc();
|
|
/* 801FB064 */ void ring_close_proc();
|
|
/* 801FB0B8 */ void collect_open_proc();
|
|
/* 801FB110 */ void collect_move_proc();
|
|
/* 801FB1A0 */ void collect_close_proc();
|
|
/* 801FB240 */ void fmap_open_proc();
|
|
/* 801FB298 */ void fmap_move_proc();
|
|
/* 801FB36C */ void fmap_close_proc();
|
|
/* 801FB3AC */ void dmap_open_proc();
|
|
/* 801FB404 */ void dmap_move_proc();
|
|
/* 801FB5DC */ void dmap_close_proc();
|
|
/* 801FB61C */ void collect_save_open_proc();
|
|
/* 801FB67C */ void collect_save_move_proc();
|
|
/* 801FB6D8 */ void collect_save_close_proc();
|
|
/* 801FB73C */ void collect_option_open_proc();
|
|
/* 801FB7AC */ void collect_option_move_proc();
|
|
/* 801FB800 */ void collect_option_close_proc();
|
|
/* 801FB81C */ void collect_letter_open_proc();
|
|
/* 801FB8AC */ void collect_letter_move_proc();
|
|
/* 801FB900 */ void collect_letter_close_proc();
|
|
/* 801FB91C */ void collect_fishing_open_proc();
|
|
/* 801FB9AC */ void collect_fishing_move_proc();
|
|
/* 801FBA00 */ void collect_fishing_close_proc();
|
|
/* 801FBA1C */ void collect_skill_open_proc();
|
|
/* 801FBAAC */ void collect_skill_move_proc();
|
|
/* 801FBB00 */ void collect_skill_close_proc();
|
|
/* 801FBB1C */ void collect_insect_open_proc();
|
|
/* 801FBBAC */ void collect_insect_move_proc();
|
|
/* 801FBC00 */ void collect_insect_close_proc();
|
|
/* 801FBC1C */ void insect_open_proc();
|
|
/* 801FBC78 */ void insect_open2_proc();
|
|
/* 801FBD08 */ void insect_move_proc();
|
|
/* 801FBD64 */ void insect_close_proc();
|
|
/* 801FBD80 */ void dMw_capture_create();
|
|
/* 801FBE14 */ void dMw_capture_delete();
|
|
/* 801FBE94 */ void dMw_ring_create(u8);
|
|
/* 801FBF60 */ bool dMw_ring_delete();
|
|
/* 801FBFF8 */ void dMw_collect_create();
|
|
/* 801FC090 */ bool dMw_collect_delete(bool);
|
|
/* 801FC0FC */ void dMw_fmap_create();
|
|
/* 801FC264 */ bool dMw_fmap_delete(bool);
|
|
/* 801FC350 */ void dMw_dmap_create();
|
|
/* 801FC46C */ bool dMw_dmap_delete(bool);
|
|
/* 801FC520 */ void dMw_save_create();
|
|
/* 801FC5D0 */ bool dMw_save_delete();
|
|
/* 801FC668 */ void dMw_option_create();
|
|
/* 801FC70C */ bool dMw_option_delete();
|
|
/* 801FC7BC */ void dMw_letter_create();
|
|
/* 801FC85C */ bool dMw_letter_delete();
|
|
/* 801FC904 */ void dMw_fishing_create();
|
|
/* 801FC9A4 */ bool dMw_fishing_delete();
|
|
/* 801FCA4C */ void dMw_skill_create();
|
|
/* 801FCAEC */ bool dMw_skill_delete();
|
|
/* 801FCB94 */ void dMw_insect_create(u8);
|
|
/* 801FCC44 */ bool dMw_insect_delete();
|
|
/* 801FCCEC */ void dMw_onButtonBit(u8);
|
|
/* 801FCCFC */ void dMw_offButtonBit(u8);
|
|
/* 801FCD0C */ BOOL dMw_isButtonBit(u8);
|
|
/* 801FCD24 */ BOOL dMw_isPush_S_Button();
|
|
/* 801FCDD8 */ bool isPauseReady();
|
|
/* 801FCE08 */ static void dMw_fade_out();
|
|
/* 801FCE78 */ static void dMw_fade_in();
|
|
/* 801FCEE8 */ int checkCStickTrigger();
|
|
/* 801FCF84 */ bool isEventCheck();
|
|
/* 801FD094 */ void markMemSize();
|
|
/* 801FD0D4 */ void checkMemSize();
|
|
/* 801FD140 */ int _create();
|
|
/* 801FD2D8 */ int _execute();
|
|
/* 801FD450 */ int _draw();
|
|
/* 801FD67C */ int _delete();
|
|
|
|
void onPauseWindow() { mPauseWindow = true; }
|
|
void offPauseWindow() { mPauseWindow = false; }
|
|
void onShowFlag() { mShowFlag |= 1; }
|
|
void offShowFlag() { mShowFlag &= ~1; }
|
|
bool isShowFlag() { return mShowFlag & 1 != 0; }
|
|
bool isFadeNowCheck() { return mDoGph_gInf_c::getFader()->getStatus() == 1; }
|
|
|
|
private:
|
|
/* 0x0FC */ int field_0xfc;
|
|
/* 0x100 */ JKRExpHeap* mpHeap;
|
|
/* 0x104 */ STControl* mpStick;
|
|
/* 0x108 */ CSTControl* mpCStick;
|
|
/* 0x10C */ dDlst_MENU_CAPTURE_c* mpCapture;
|
|
/* 0x110 */ dMenu_Ring_c* mpMenuRing;
|
|
/* 0x114 */ dMenu_Collect_c* mpMenuCollect;
|
|
/* 0x118 */ dMenu_Dmap_c* mpMenuDmap;
|
|
/* 0x11C */ dMenu_Fmap_c* mpMenuFmap;
|
|
/* 0x120 */ dMenu_save_c* mpMenuSave;
|
|
/* 0x124 */ dMenu_Option_c* mpMenuOption;
|
|
/* 0x128 */ dMenu_Letter_c* mpMenuLetter;
|
|
/* 0x12C */ dMenu_Fishing_c* mpMenuFishing;
|
|
/* 0x130 */ dMenu_Skill_c* mpMenuSkill;
|
|
/* 0x134 */ dMenu_Insect_c* mpMenuInsect;
|
|
/* 0x138 */ s32 mMemSize;
|
|
/* 0x13C */ f32 field_0x13c;
|
|
/* 0x140 */ f32 field_0x140;
|
|
/* 0x144 */ u8 field_0x144;
|
|
/* 0x145 */ u8 mButtons;
|
|
/* 0x146 */ u8 mMenuStatus;
|
|
/* 0x147 */ u8 mShowFlag;
|
|
/* 0x148 */ s8 field_0x148;
|
|
/* 0x149 */ u8 field_0x149;
|
|
/* 0x14A */ u8 field_0x14A;
|
|
/* 0x14B */ u8 field_0x14B;
|
|
/* 0x14C */ u8 field_0x14C;
|
|
/* 0x14D */ u8 field_0x14D;
|
|
/* 0x14E */ u8 field_0x14E;
|
|
/* 0x14F */ u8 field_0x14F;
|
|
/* 0x150 */ u8 field_0x150;
|
|
/* 0x151 */ u8 field_0x151;
|
|
/* 0x152 */ u8 field_0x152;
|
|
/* 0x153 */ u8 field_0x153;
|
|
/* 0x154 */ bool mPauseWindow;
|
|
};
|
|
|
|
BOOL dMw_LEFT_TRIGGER();
|
|
BOOL dMw_RIGHT_TRIGGER();
|
|
|
|
static int dMw_Draw(dMw_c*);
|
|
static int dMw_Execute(dMw_c*);
|
|
static int dMw_IsDelete(dMw_c*);
|
|
static int dMw_Delete(dMw_c*);
|
|
static int dMw_Create(msg_class*);
|
|
|
|
typedef int (*dMw_Method)(dMw_c*);
|
|
|
|
#endif /* D_MENU_D_MENU_WINDOW_H */
|