mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-05 01:19:11 -04:00
201 lines
7.4 KiB
C++
201 lines
7.4 KiB
C++
#ifndef D_PICTURE_BOX_H
|
|
#define D_PICTURE_BOX_H
|
|
|
|
#include "dolphin/types.h"
|
|
#include "f_op/f_op_msg.h"
|
|
#include "f_op/f_op_msg_mng.h"
|
|
#include "d/d_drawlist.h"
|
|
#include "JSystem/J2DGraph/J2DScreen.h"
|
|
#include "JSystem/J2DGraph/J2DTextBox.h"
|
|
#include "d/d_lib.h"
|
|
#include "m_Do/m_Do_MemCardRWmng.h"
|
|
|
|
|
|
class J3DModel;
|
|
class JKRExpHeap;
|
|
class J2DScreen;
|
|
class J2DTextBox;
|
|
class mDoDvdThd_toMainRam_c;
|
|
struct fopMsgM_pane_class;
|
|
struct fopMsgM_pane_alpha_class;
|
|
|
|
enum dJlePbExecState {
|
|
PB_EXEC_CAMERA_OPEN_e = 0x0,
|
|
PB_EXEC_CAMERA_MOVE_e = 0x1,
|
|
PB_EXEC_BROWSE_OPEN_e = 0x2,
|
|
PB_EXEC_BROWSE_MOVE_e = 0x3,
|
|
PB_EXEC_GET_OPEN_e = 0x4,
|
|
PB_EXEC_GET_MOVE_e = 0x5,
|
|
PB_EXEC_CLOSE_e = 0x6,
|
|
PB_EXEC_CLOSED_e = 0x7,
|
|
};
|
|
|
|
enum dJlePbModeSubState {
|
|
PB_SUB_IDLE_e = 0x0,
|
|
PB_SUB_CONFIRM_e = 0x1,
|
|
PB_SUB_SHIFT_1_TO_0_e = 0x2,
|
|
PB_SUB_SHIFT_0_TO_2_e = 0x3,
|
|
PB_SUB_SHIFT_0_TO_1_e = 0x4,
|
|
PB_SUB_SHIFT_2_TO_0_e = 0x5,
|
|
};
|
|
|
|
enum dJlePbViewMode {
|
|
PB_VIEW_CAMERA_e = 0x0,
|
|
PB_VIEW_BROWSE_e = 0x1,
|
|
PB_VIEW_GET_e = 0x2,
|
|
};
|
|
|
|
void dPb_erasePicture();
|
|
|
|
class dJle_Pb_c : public dDlst_base_c {
|
|
public:
|
|
u8 getStatus() { return mExecState; }
|
|
// was this supposed to be called setMemory? typo?
|
|
void getMemory(void* buffer, int idx) {
|
|
mPhotoBuffer[idx] = (card_pictdata*)buffer;
|
|
}
|
|
void setTextArea(char* buffer, int idx) {
|
|
mMsgTextBuffer[idx] = buffer;
|
|
}
|
|
|
|
void alphaChange(fopMsgM_pane_alpha_class*, f32) {}
|
|
void alphaChange(fopMsgM_pane_class*, f32) {}
|
|
|
|
void screenSet();
|
|
void screenSet2();
|
|
void cameraAlphaInc(f32);
|
|
void browseAlphaInc(f32);
|
|
void getAlphaInc(f32);
|
|
void alphaDec(f32);
|
|
void zoomScale();
|
|
void changeScale(int);
|
|
void up_downIconMove();
|
|
void left_rightIconMove();
|
|
void clickShutterMode();
|
|
void selectMode();
|
|
void cameraMode();
|
|
void pictureDraw(u8, int);
|
|
void pictureEraseWait();
|
|
void pictureDecide();
|
|
void pictureErase();
|
|
void pictureTransX(f32, f32, f32, f32, f32);
|
|
void changePicture();
|
|
void shutterChange();
|
|
void moveCamera();
|
|
void moveBrowse();
|
|
void selectBrowse();
|
|
void getBrowse();
|
|
void changeBrowseToCamera();
|
|
void changeCameraToBrowse();
|
|
void setColorInit(u8);
|
|
void setColorAnime(u8);
|
|
void changeData();
|
|
bool label_sort();
|
|
u8 getPicLabelData(u8);
|
|
void shutterLineRotateCenter(f32, int);
|
|
void shutterLineRotateInitPos(f32, int);
|
|
void shutterLineMove();
|
|
void shutterLineDraw(u8);
|
|
void messageSet(u32);
|
|
void remainMessageSet(u8);
|
|
void existMessageSet(u8);
|
|
void shutterShow();
|
|
void shutterHide();
|
|
void _create(JKRExpHeap*);
|
|
void _copen();
|
|
void _bopen();
|
|
void _gopen();
|
|
void _close();
|
|
void _cmove();
|
|
void _bmove();
|
|
void _gmove();
|
|
void draw();
|
|
void _delete(JKRExpHeap*);
|
|
|
|
private:
|
|
/* 0x004 */ J2DScreen* scrn;
|
|
/* 0x008 */ J2DScreen* scrn1;
|
|
/* 0x00C */ J2DScreen* scrn2;
|
|
/* 0x010 */ fopMsgM_pane_class pane_st[12];
|
|
/* 0x2B0 */ fopMsgM_pane_class pane_sb[12];
|
|
/* 0x550 */ fopMsgM_pane_class pane_ylig;
|
|
/* 0x588 */ fopMsgM_pane_class pane_ylef;
|
|
/* 0x5C0 */ fopMsgM_pane_class pane_icn[3];
|
|
/* 0x668 */ fopMsgM_pane_class pane_emp[3];
|
|
/* 0x710 */ fopMsgM_pane_class pane_ct1;
|
|
/* 0x748 */ fopMsgM_pane_class pane_ct2;
|
|
/* 0x780 */ fopMsgM_pane_class pane_sp[8];
|
|
/* 0x940 */ fopMsgM_pane_class pane_no[3];
|
|
/* 0x9E8 */ fopMsgM_pane_class pane_nob[3];
|
|
/* 0xA90 */ fopMsgM_pane_class pane_nok[3];
|
|
/* 0xB38 */ fopMsgM_pane_class pane_b1;
|
|
/* 0xB70 */ fopMsgM_pane_class pane_b2;
|
|
/* 0xBA8 */ fopMsgM_pane_class pane_wnum;
|
|
/* 0xBE0 */ fopMsgM_pane_class pane_wnuk;
|
|
/* 0xC18 */ fopMsgM_pane_class pane_wpba;
|
|
/* 0xC50 */ fopMsgM_pane_class pane_wbap;
|
|
/* 0xC88 */ fopMsgM_pane_class pane_wpsc;
|
|
/* 0xCC0 */ fopMsgM_pane_class pane_yrtn;
|
|
/* 0xCF8 */ fopMsgM_pane_class pane_yzom;
|
|
/* 0xD30 */ fopMsgM_pane_class pane_crtn;
|
|
/* 0xD68 */ fopMsgM_pane_class pane_czom;
|
|
/* 0xDA0 */ fopMsgM_pane_class pane_lrtn;
|
|
/* 0xDD8 */ fopMsgM_pane_class pane_rzom;
|
|
/* 0xE10 */ fopMsgM_pane_class pane_shut;
|
|
/* 0xE48 */ fopMsgM_pane_class pane_fd00;
|
|
/* 0xE80 */ fopMsgM_pane_class pane_wp04;
|
|
/* 0xEB8 */ fopMsgM_pane_class pane_wp01;
|
|
/* 0xEF0 */ fopMsgM_pane_class pane_wp02;
|
|
/* 0xF28 */ fopMsgM_pane_class pane_wp03;
|
|
/* 0xF60 */ fopMsgM_pane_alpha_class pane_tx[4];
|
|
/* 0xF80 */ mDoDvdThd_toMainRam_c* mImportedPhotoLoadReq; // Async request for imported gallery photo data.
|
|
/* 0xF84 */ J2DPicture* mMsgIconFontMainPic; // Message icon sheet used by fopMsgM_outFontDraw.
|
|
/* 0xF88 */ J2DPicture* mMsgIconFontSubPic; // Secondary icon sheet used by fopMsgM_outFontDraw.
|
|
/* 0xF8C */ J2DPicture* mMsgSelectArrowPic; // Select-arrow sprite for two-choice message prompts.
|
|
/* 0xF90 */ JUTFont* font0;
|
|
/* 0xF94 */ JUTFont* font1;
|
|
/* 0xF98 */ STControl* stick;
|
|
/* 0xF9C */ u8 mF9C[0xFA0 - 0xF9C];
|
|
/* 0xFA0 */ mesg_header* head_p;
|
|
/* 0xFA4 */ JMSMesgEntry_c mMsgEntry; // Current parsed message entry metadata.
|
|
/* 0xFBC */ fopMsgM_msgDataProc_c mMsgDataProc; // Message parser/layout state and choice helper.
|
|
/* 0x125C */ JUtility::TColor icn_white;
|
|
/* 0x1260 */ JUtility::TColor icn_black;
|
|
/* 0x1264 */ JUtility::TColor emp_white;
|
|
/* 0x1268 */ JUtility::TColor emp_black;
|
|
/* 0x126C */ card_pictdata* mPhotoBuffer[4]; // Three saved slots + one import/get temporary slot.
|
|
/* 0x127C */ f32 mZoomScale;
|
|
/* 0x1280 */ f32 mShutterLineX1[12];
|
|
/* 0x12B0 */ f32 mShutterLineY1[12];
|
|
/* 0x12E0 */ f32 mShutterLineX2[12];
|
|
/* 0x1310 */ f32 mShutterLineY2[12];
|
|
/* 0x1340 */ int mChoiceCursorX0; // X anchor for first message choice marker.
|
|
/* 0x1344 */ int mChoiceCursorX1; // X anchor for second message choice marker.
|
|
/* 0x1348 */ int mChoiceCursorY; // Y anchor for message choice marker.
|
|
/* 0x134C */ int mChoiceCursorYAlt; // Alternate Y anchor parsed from second choice token.
|
|
/* 0x1350 */ char* mMsgTextBuffer[4]; // Output text buffers for the four message panes.
|
|
/* 0x1360 */ s16 mFadeTimer; // Open/close fade timer.
|
|
/* 0x1362 */ s16 mShutterCounter;
|
|
/* 0x1364 */ s16 mMsgLineCount; // Cached message line count for vertical alignment.
|
|
/* 0x1366 */ s16 mMsgIconDrawState; // Scratch state used by icon font setup/draw helpers.
|
|
/* 0x1368 */ u8 mPictureSlotSortMap[3]; // Mapping from sorted slot order to source slot index.
|
|
/* 0x136B */ u8 mExecState; // Top-level state machine used by execute dispatch (open/move/close/etc.).
|
|
/* 0x136C */ u8 mModeSubState; // Per-mode substate (camera capture/select, browse erase/slide animation states).
|
|
/* 0x136D */ u8 mViewMode; // Selects camera vs browse vs get-photo mode paths.
|
|
/* 0x136E */ u8 mSelectedPhotoSlot; // Active browse slot index.
|
|
/* 0x136F */ u8 mSelectedChoiceIndex; // Active index in two-choice message prompts.
|
|
/* 0x1370 */ u8 mModeSwapActive; // Non-zero while shutter transition between camera/browse is running.
|
|
/* 0x1371 */ u8 mPhotoSlotOccupied[3]; // Per-slot occupancy flags for saved photos.
|
|
/* 0x1374 */ u8 mPhotoDeletedFlag; // Set when a photo was deleted during this session.
|
|
/* 0x1375 */ u8 mChoiceArrowIconIdx; // Icon token index currently used for select-arrow placement.
|
|
/* 0x1376 */ u8 mCaptureFormat;
|
|
};
|
|
|
|
class sub_pb_class : public msg_class {
|
|
public:
|
|
/* 0x00FC */ JKRExpHeap* heap;
|
|
/* 0x0100 */ dJle_Pb_c* dPb_c;
|
|
/* 0x0104 */ card_pictdata* buffer[4];
|
|
};
|
|
#endif /* D_PICTURE_BOX_H */
|