Files
tww/include/f_op/f_op_msg_mng.h
T
2026-05-07 00:03:43 -04:00

418 lines
14 KiB
C++

#ifndef F_OP_MSG_MNG_H
#define F_OP_MSG_MNG_H
#include "JSystem/J2DGraph/J2DPicture.h"
#include "SSystem/SComponent/c_xyz.h"
#include "f_pc/f_pc_leaf.h"
#include "f_op/f_op_msg.h"
class JKRExpHeap;
class JKRHeap;
class fopAc_ac_c;
class msg_class;
class J2DPane;
class J2DScreen;
class J2DPicture;
class JUTFont;
struct mesg_header;
struct mesg_data;
struct mesg_info;
// BMG INF1 messageEntry
struct mesg_entry {
// mesg_entry() {} // fixes fopMsgM_selectMessageGet, but messes up getMesgEntry
/* 0x00 */ u32 mDataOffs;
/* 0x04 */ u16 mMsgNo;
/* 0x06 */ s16 mItemPrice;
/* 0x08 */ u16 mNextMsgNo;
/* 0x0A */ u16 field_0x0a;
/* 0x0C */ u8 mTextboxType;
/* 0x0D */ u8 mDrawType;
/* 0x0E */ u8 mTextboxPosition;
/* 0x0F */ u8 mItemImage;
/* 0x10 */ u8 mTextAlignment;
/* 0x11 */ u8 mInitialSound;
/* 0x12 */ u8 mInitialCamera;
/* 0x13 */ u8 mInitialAnimation;
/* 0x14 */ u8 field_0x14;
/* 0x15 */ u8 field_0x15;
/* 0x16 */ u8 field_0x16;
/* 0x17 */ u8 field_0x17;
};
struct msg_process_profile_definition {
/* 0x00 */ leaf_process_profile_definition base;
/* 0x24 */ msg_method_class* sub_method; // Subclass methods
};
struct fopMsg_prm_class {
/* 0x00 */ fopAc_ac_c* mpActor;
/* 0x04 */ cXyz mPos;
/* 0x10 */ u32 mMsgNo;
/* 0x14 */ u32 field_0x14;
/* 0x18 */ int field_0x18;
}; // Size: 0x1C
struct fopMsg_prm_timer : public fopMsg_prm_class {
/* 0x1C */ int mTimerMode;
/* 0x20 */ u16 mLimitTimeMs;
/* 0x22 */ u8 mShowType;
/* 0x23 */ u8 mIconType;
/* 0x24 */ cXy mTimerPos;
/* 0x2C */ cXy mRupeePos;
}; // Size: 0x34
class J2DScreen;
class fopMsgM_f2d_class {
public:
f32 x;
f32 y;
};
struct fopMsgM_pane_class {
/* 0x00 */ J2DPane * pane;
/* 0x04 */ fopMsgM_f2d_class mPosTopLeftOrig;
/* 0x0C */ fopMsgM_f2d_class mPosTopLeft;
/* 0x14 */ fopMsgM_f2d_class mPosCenterOrig;
/* 0x1C */ fopMsgM_f2d_class mPosCenter;
/* 0x24 */ fopMsgM_f2d_class mSizeOrig;
/* 0x2C */ fopMsgM_f2d_class mSize;
/* 0x34 */ u8 mInitAlpha;
/* 0x35 */ u8 mNowAlpha;
/* 0x36 */ s16 mUserArea;
}; // Size: 0x38
struct fopMsgM_pane_alpha_class {
/* 0x00 */ J2DPane * pane;
/* 0x04 */ u8 mInitAlpha;
/* 0x05 */ u8 mNowAlpha;
};
class fopMsgM_msgGet_c {
public:
virtual ~fopMsgM_msgGet_c() {}
mesg_header* getMesgHeader(u32);
mesg_info* getMesgInfo(mesg_header*);
mesg_data* getMesgData(mesg_header*);
mesg_entry getMesgEntry(mesg_header*);
const char* getMessage(mesg_header*);
public:
/* 0x04 */ u32 mMsgIdx;
/* 0x08 */ u16 mGroupID;
/* 0x0A */ u16 mMsgNo;
/* 0x0C */ u16 mResMsgNo;
};
class fopMsgM_itemMsgGet_c {
public:
virtual ~fopMsgM_itemMsgGet_c() {}
mesg_header* getMesgHeader(u32);
mesg_info* getMesgInfo(mesg_header*);
mesg_data* getMesgData(mesg_header*);
mesg_entry getMesgEntry(mesg_header*);
const char* getMessage(mesg_header*);
public:
/* 0x04 */ u32 mMsgIdx;
/* 0x08 */ u16 mMsgNo;
/* 0x0A */ u16 mResMsgNo;
};
class MyPicture : public J2DPicture {
public:
MyPicture(J2DPane* pParent, JSURandomInputStream* pStream) : J2DPicture(pParent, pStream) {
m134 = 0;
}
virtual ~MyPicture() {}
virtual void drawSelf(f32, f32);
virtual void drawSelf(f32, f32, Mtx*);
virtual void drawFullSet2(f32, f32, f32, f32, J2DBinding, J2DMirror, bool, Mtx*);
public:
/* 0x124 */ f32 m124;
/* 0x128 */ f32 m128;
/* 0x12C */ f32 m12C;
/* 0x130 */ f32 m130;
/* 0x134 */ u8 m134;
};
class fopMsgM_msgDataProc_c {
public:
fopMsgM_msgDataProc_c();
virtual ~fopMsgM_msgDataProc_c() {}
void dataInit();
f32 charLength(int, int, bool);
f32 rubyLength(int, bool);
void stringLength();
void stringShift();
void iconSelect(int, u8);
void iconIdxRefresh();
int selectCheck2(J2DPane*, int, int, int);
int selectCheck3(J2DPane*, int, int, int);
int selectCheckYoko(J2DPane*, int, int, int);
int inputNumber(int);
void selectArrow(J2DPicture*, f32, f32, f32, f32);
void selectArrow(J2DPicture*, f32, f32);
void colorAnime(J2DPicture*);
void stringSet();
void setSelectFlagYokoOn();
void setSelectFlagOn();
void setHandSendFlagOn();
void setAutoSendFlagOn();
u8 getHandSendFlag();
u8 getAutoSendFlag();
void getString(char*, u32);
void getString(char*, char*, char*, char*, u32, f32*, f32*, int*);
void getRubyString(char*, char*, char*, char*, char*, char*, f32*, f32*, int*);
#if VERSION >= VERSION_USA
void tag_len_kaisen_game(int*, f32*, int*, int*, int*);
void tag_len_rupee(int*, f32*, int*, int*, int*);
void tag_len_num_input(int*, f32*, int*, int*, int*);
void tag_len_sword_game(int*, f32*, int*, int*, int*);
void tag_len_letter_game(int*, f32*, int*, int*, int*);
void tag_len_letter_game_max(int*, f32*, int*, int*, int*);
void tag_len_fish(int*, f32*, int*, int*, int*);
void tag_len_fish_rupee(int*, f32*, int*, int*, int*);
void tag_len_letter(int*, f32*, int*, int*, int*);
void tag_len_rescue(int*, f32*, int*, int*, int*);
void tag_len_forest_timer(int*, f32*, int*, int*, int*);
void tag_len_birdman(int*, f32*, int*, int*, int*);
void tag_len_point(int*, f32*, int*, int*, int*);
void tag_len_get_pendant(int*, f32*, int*, int*, int*);
void tag_len_rev_pendant(int*, f32*, int*, int*, int*);
void tag_len_pig_timer(int*, f32*, int*, int*, int*);
void tag_len_get_bomb(int*, f32*, int*, int*, int*);
void tag_len_get_arrow(int*, f32*, int*, int*, int*);
void tag_len_stock_bokobaba(int*, f32*, int*, int*, int*);
void tag_len_stock_dokuro(int*, f32*, int*, int*, int*);
void tag_len_stock_chuchu(int*, f32*, int*, int*, int*);
void tag_len_stock_pendant(int*, f32*, int*, int*, int*);
void tag_len_stock_hane(int*, f32*, int*, int*, int*);
void tag_len_stock_kenshi(int*, f32*, int*, int*, int*);
void tag_len_terry_rupee(int*, f32*, int*, int*, int*);
void tag_len_input_bokobaba(int*, f32*, int*, int*, int*);
void tag_len_input_dokuro(int*, f32*, int*, int*, int*);
void tag_len_input_chuchu(int*, f32*, int*, int*, int*);
void tag_len_input_pendant(int*, f32*, int*, int*, int*);
void tag_len_input_hane(int*, f32*, int*, int*, int*);
void tag_len_input_kenshi(int*, f32*, int*, int*, int*);
void tag_kaisen_game();
void tag_rupee();
void tag_num_input();
void tag_sword_game();
void tag_letter_game();
void tag_letter_game_max();
void tag_fish();
void tag_fish_rupee();
void tag_letter();
void tag_rescue();
void tag_forest_timer();
void tag_birdman();
void tag_point();
void tag_get_pendant();
void tag_rev_pendant();
void tag_pig_timer();
void tag_get_bomb();
void tag_get_arrow();
void tag_stock_bokobaba();
void tag_stock_dokuro();
void tag_stock_chuchu();
void tag_stock_pendant();
void tag_stock_hane();
void tag_stock_kenshi();
void tag_terry_rupee();
void tag_input_bokobaba();
void tag_input_dokuro();
void tag_input_chuchu();
void tag_input_pendant();
void tag_input_hane();
void tag_input_kenshi();
#endif
public:
/* 0x004 */ JUTFont* font[2];
/* 0x00C */ mesg_entry* field_0x0C;
/* 0x010 */ u32 field_0x10;
/* 0x014 */ f32 field_0x14;
/* 0x018 */ f32 field_0x18;
/* 0x01C */ f32 field_0x1C;
/* 0x020 */ f32 field_0x20;
/* 0x024 */ f32 field_0x24;
/* 0x028 */ f32 field_0x28;
/* 0x02C */ u32 field_0x2C;
/* 0x030 */ u32 field_0x30;
/* 0x034 */ u32 field_0x34;
/* 0x038 */ u32 field_0x38;
/* 0x03C */ char* field_0x3C;
/* 0x040 */ char* field_0x40;
/* 0x044 */ char* field_0x44;
/* 0x048 */ char* field_0x48;
/* 0x04C */ char* field_0x4C;
/* 0x050 */ char* field_0x50[4];
/* 0x060 */ char* field_0x60;
/* 0x064 */ char* field_0x64;
/* 0x068 */ char* field_0x68;
/* 0x06C */ char* field_0x6C;
/* 0x070 */ char field_0x70[0x64]; // no idea how big this array is
/* 0x0D4 */ char field_0xD4[4];
/* 0x0D4 */ s32 field_0xD8[4];
/* 0x0D4 */ s32 field_0xE8[4];
/* 0x0F8 */ s32 field_0xF8[4];
/* 0x108 */ s32 field_0x108[4];
/* 0x118 */ u32 field_0x118;
/* 0x11C */ s32 field_0x11C;
/* 0x120 */ s32 field_0x120;
/* 0x124 */ s32 field_0x124;
/* 0x128 */ s32 field_0x128;
/* 0x12C */ u32 field_0x12C;
/* 0x130 */ s32 field_0x130;
/* 0x134 */ u32 field_0x134;
/* 0x138 */ u32 field_0x138;
/* 0x13C */ u32 field_0x13C;
/* 0x140 */ u32 field_0x140;
/* 0x144 */ s32 field_0x144;
/* 0x148 */ u32 field_0x148;
/* 0x14C */ s32 field_0x14C;
/* 0x150 */ int field_0x150;
/* 0x154 */ u32 field_0x154;
/* 0x158 */ u32 field_0x158;
/* 0x15C */ u32 field_0x15C;
/* 0x160 */ u32 field_0x160;
/* 0x164 */ int field_0x164;
/* 0x168 */ s32 field_0x168[0xF];
/* 0x1A4 */ u32 field_0x1A4[0xF];
/* 0x1A4 */ u32 field_0x1E0[0xF];
/* 0x21C */ u32 field_0x21C;
/* 0x21C */ u32 field_0x220[0xF];
/* 0x25C */ u32 field_0x25C;
/* 0x260 */ s16 field_0x260;
/* 0x264 */ f32 field_0x264;
/* 0x268 */ f32 field_0x268;
/* 0x26C */ f32 field_0x26C;
/* 0x270 */ f32 field_0x270;
/* 0x274 */ f32 field_0x274;
/* 0x278 */ f32 field_0x278;
/* 0x27C */ u8 field_0x27C;
/* 0x27D */ u8 field_0x27D;
/* 0x27E */ u8 field_0x27E;
/* 0x27F */ u8 field_0x27F;
/* 0x280 */ u8 field_0x280;
/* 0x281 */ u8 field_0x281[0xF];
/* 0x290 */ u8 field_0x290;
/* 0x291 */ u8 field_0x291;
/* 0x292 */ u8 field_0x292;
/* 0x293 */ u8 field_0x293;
/* 0x294 */ u8 field_0x294;
/* 0x295 */ u8 field_0x295;
/* 0x296 */ u8 field_0x296;
/* 0x297 */ u8 field_0x297;
/* 0x298 */ u8 field_0x298;
/* 0x299 */ u8 field_0x299;
/* 0x29A */ u8 field_0x29A;
/* 0x29B */ u8 field_0x29B;
/* 0x29C */ u8 field_0x29C;
/* 0x29D */ u8 field_0x29D;
};
typedef int (*fopMsgCreateFunc)(void*);
JKRExpHeap* fopMsgM_createExpHeap(u32, JKRHeap*);
JKRExpHeap* fopMsgM_createExpHeap(u32);
fpc_ProcID fopMsgM_Create(s16, fopMsgCreateFunc, void*);
fpc_ProcID fopMsgM_create(s16 i_procName, fopAc_ac_c* param_1 = NULL, cXyz* param_2 = NULL,
u32* param_3 = NULL, u32* param_4 = NULL, fopMsgCreateFunc createFunc = NULL);
inline fpc_ProcID fopMsgM_MiniGameStarter_create(s16 i_procName, u8 param_1, u16 param_2, fopMsgCreateFunc createFunc) {
u32 parameter = param_1;
parameter |= param_2 << 16;
return fopMsgM_create(i_procName, NULL, NULL, &parameter, &parameter, createFunc);
}
fpc_ProcID fop_MGameTerm_create(s16, s16, s16, int, int, fopMsgCreateFunc);
inline fpc_ProcID fopMsgM_MiniGameTerminater_create(s16 param_0, s16 param_1, s16 param_2, int param_3, int param_4, fopMsgCreateFunc createFunc) {
return fop_MGameTerm_create(param_0, param_1, param_2, param_3, param_4, createFunc);
}
void fopMsgM_Delete(void* process);
fopMsg_prm_class* fopMsgM_GetAppend(void* msg);
void fopMsgM_destroyExpHeap(JKRExpHeap*);
f32 fopMsgM_valueIncrease(int param_0, int param_1, u8 param_2);
#if VERSION >= VERSION_USA
bool fopMsgM_hyrule_language_check(u32 msgNo);
#endif
s32 fopMsgM_setStageLayer(void*);
fpc_ProcID fopMsgM_messageSet(u32 i_msgNo, fopAc_ac_c* i_actorP);
fpc_ProcID fopMsgM_messageSet(u32 param_0, cXyz*);
fpc_ProcID fopMsgM_messageSet(u32 param_0);
fpc_ProcID fopMsgM_scopeMessageSet(u32 param_0);
int fopMsgM_messageSetDemo(u32 param_0);
msg_class* fopMsgM_SearchByID(fpc_ProcID param_0);
char* fopMsgM_messageGet(char* dst, u32 msgNo);
char* fopMsgM_passwordGet(char* dst, u32 msgNo);
fpc_ProcID fop_Timer_create(s16 param_0, u8 param_1, u16 param_2, u8 param_3, u8 param_4, f32 param_5,
f32 param_6, f32 param_7, f32 param_8, fopMsgCreateFunc createFunc);
inline fpc_ProcID fopMsgM_Timer_create(s16 param_0, u8 param_1, u16 param_2, u8 param_3, u8 param_4,
f32 param_5, f32 param_6, f32 param_7, f32 param_8,
fopMsgCreateFunc createFunc) {
return fop_Timer_create(param_0, param_1, param_2, param_3, param_4, param_5, param_6, param_7,
param_8, createFunc);
}
void fopMsgM_setPaneData(fopMsgM_pane_class*, J2DPane*);
void fopMsgM_setPaneData(fopMsgM_pane_class*, J2DScreen*, u32);
void fopMsgM_setInitAlpha(fopMsgM_pane_class*);
void fopMsgM_setNowAlpha(fopMsgM_pane_class*, f32);
void fopMsgM_setNowAlphaZero(fopMsgM_pane_class*);
void fopMsgM_setAlpha(fopMsgM_pane_class*);
void fopMsgM_paneScaleX(fopMsgM_pane_class* i_this, f32 s);
void fopMsgM_paneScaleY(fopMsgM_pane_class* i_this, f32 s);
void fopMsgM_paneScale(fopMsgM_pane_class* i_this, f32 sx, f32 sy);
void fopMsgM_paneScaleXY(fopMsgM_pane_class*, f32);
void fopMsgM_cposMove(fopMsgM_pane_class*);
void fopMsgM_paneTrans(fopMsgM_pane_class*, f32, f32);
void fopMsgM_setPaneData(fopMsgM_pane_alpha_class*, J2DPane*);
void fopMsgM_setPaneData(fopMsgM_pane_alpha_class*, J2DScreen*, u32);
void fopMsgM_setNowAlpha(fopMsgM_pane_alpha_class*, f32);
void fopMsgM_setAlpha(fopMsgM_pane_alpha_class*);
u32 fopMsgM_searchMessageNumber(u32);
bool fopMsgM_forceSendOn();
void fopMsgM_messageSendOn();
void fopMsgM_messageSendOff();
bool fopMsgM_checkMessageSend();
u32 fopMsgM_tactMessageSet();
void fopMsgM_demoMsgFlagOn();
bool fopMsgM_getScopeMode();
bool fopMsgM_releaseScopeMode();
void fopMsgM_demoMsgFlagOn();
void fopMsgM_demoMsgFlagOff();
bool fopMsgM_demoMsgFlagCheck();
void fopMsgM_tactMsgFlagOn();
void fopMsgM_tactMsgFlagOff();
bool fopMsgM_tactMsgFlagCheck();
void fopMsgM_nextMsgFlagOff();
bool fopMsgM_nextMsgFlagCheck();
void fopMsgM_blendInit(fopMsgM_pane_class* i_this, const char* data);
void fopMsgM_blendInit(J2DPicture* pic, const char* data);
u8 fopMsgM_itemNumIdx(u8 i);
u8 fopMsgM_itemNum(u8 itemNo);
u32 fopMsgM_getColorTable(u16 param_1);
void fopMsgM_blendDraw(fopMsgM_pane_class* i_this, const char* data);
void fopMsgM_blendDraw(J2DPicture* pic, const char* data);
void fopMsgM_setFontsizeCenter(char* param_1, char* param_2, char* param_3, char* param_4, int param_5, int param_6);
void fopMsgM_setFontsizeCenter2(char* a, char* b, char* c, char* d, int, int size, int, int);
void fopMsgM_outFontSet(J2DPicture*, J2DPicture*, s16*, u32, u8);
void fopMsgM_outFontSet(J2DPicture*, s16*, u32, u8);
void fopMsgM_outFontDraw(J2DPicture*, J2DPicture*, int, int, int, s16*, u8, u8);
void fopMsgM_outFontDraw2(J2DPicture*, J2DPicture*, int, int, int, int, s16*, u8, u8);
extern u16 zfont[][2];
#endif /* F_OP_MSG_MNG_H */