tp/include/d/d_msg_class.h

805 lines
29 KiB
C++

#ifndef D_MSG_D_MSG_CLASS_H
#define D_MSG_D_MSG_CLASS_H
#include "JSystem/JMessage/control.h"
#include "JSystem/JMessage/JMessage.h"
#include "SSystem/SComponent/c_xyz.h"
#if REGION_JPN
#define D_MSG_CLASS_PAGE_CNT_MAX 30
#define D_MSG_CLASS_CHAR_CNT_MAX 0x210
#define D_MSG_CLASS_LINE_MAX 9
#else
#define D_MSG_CLASS_PAGE_CNT_MAX 40
#define D_MSG_CLASS_CHAR_CNT_MAX 0x200
#define D_MSG_CLASS_LINE_MAX 12
#endif
class JMSMesgEntry_c {
public:
/* 0x0 */ u32 string_offset;
// Attributes
/* 0x04 */ u16 message_id;
/* 0x06 */ u16 event_label_id;
/* 0x08 */ u8 se_speaker;
/* 0x09 */ u8 fuki_kind;
/* 0x0A */ u8 output_type;
/* 0x0B */ u8 fuki_pos_type;
/* 0x0C */ u8 unk_0xc;
/* 0x0D */ u8 unk_0xd;
/* 0x0E */ u8 se_mood;
/* 0x0F */ u8 camera_id;
/* 0x10 */ u8 base_anm_id;
/* 0x11 */ u8 face_anm_id;
/* 0x12 */ u16 unk_0x12;
};
class JMSMesgInfo_c {
public:
/* 0x00 */ bmg_section_t header; // section header
/* 0x08 */ u16 entry_num; // number of entries in this section
/* 0x0A */ u16 entry_size; // size of an entry
/* 0x0C */ u8 padding[4]; // padding
/* 0x10 */ JMSMesgEntry_c entries[0];
};
class COutFont_c;
class J2DTextBox;
class JUTFont;
class STControl;
class dMsgObject_c;
struct jmessage_tReference : public JMessage::TReference {
jmessage_tReference();
void calcDistance();
u8 getLineMax();
bool isKanban();
bool isPlaceName();
bool isBossName();
bool isSaveSeq();
bool isBook();
bool isStaffRoll();
bool isHowl();
bool isMidona();
void resetReference();
void pageSend();
void selectMessage();
void inputNumber();
char* getWord(int);
void resetWord();
void setCharactor(u16);
void addCharactor(u16);
void resetCharactor();
void shiftCharCountBuffer();
void resetCharCountBuffer();
void allsetCharCountBuffer();
bool isCharSend();
bool isLightSend();
bool isLightEnd();
void decideOutFontRupeeColor(int);
cXyz getActorPos() { return mActorPos; }
void setActorPos(cXyz pos) { mActorPos = pos; }
bool isSelectSetCancelFlag() {
return mSelectSetCancelFlag ? true : false;
}
BOOL isSelectRubyFlag(int i_flag) {
BOOL var_r31;
if (mSelectRubyFlag & (u8)(1 << i_flag)) {
var_r31 = true;
} else {
var_r31 = false;
}
return var_r31;
}
bool isBatchFlag() { return mBatchFlag ? true : false; }
bool isLightBatchFlag() { return mLightBatchFlag ? true : false; }
void setAddCharAllAlphaRate(f32 i_alphaRate) { mAddCharAllAlphaRate = i_alphaRate; }
void setCharAllAlphaRate(f32 i_alphaRate) { mCharAllAlphaRate = i_alphaRate; }
void resetNowLightCount() { mNowLightCount = 0; }
void resetDrawLightCount() { mDrawLightCount = 0; }
void setBatchColorFlag(u8 i_flag) { mBatchColorFlag = i_flag; }
void setSendTimer(s16 i_timer) { mSendTimer = i_timer; }
void setSendFlag(u8 i_flag) { mSendFlag = i_flag; }
void setSelectNum(u8 i_num) { mSelectNum = i_num; }
void setSelectType(u8 i_type) { mSelectType = i_type; }
void resetInputFigure() { mInputFigure = 0; }
void onButtonTagStopFlag() { mButtonTagStopFlag = 1; }
void setDemoFrame(u32 i_frame) { mDemoFrame = i_frame; }
void setTopColorType(u8 i_colorType) { mTopColorType = i_colorType; }
void setNowColorType(u8 i_colorType) { mNowColorType = i_colorType; }
void setTopTagScale(u16 i_tagScale) { mTopTagScale = i_tagScale; }
void setNowTagScale(u16 i_tagScale) { mNowTagScale = i_tagScale; }
void setRevoMessageID(u32 i_msgID) { mRevoMessageID = i_msgID; }
void setPageLine(int i_no, s8 i_pageLine) { mPageLine[i_no] = i_pageLine; }
void setPageLineMax(int i_no, s8 i_pageLineMax) { mPageLineMax[i_no] = i_pageLineMax; }
void setPageType(int i_no, u8 i_pageType) { mPageType[i_no] = i_pageType; }
void setLineArrange(int i_no, u8 i_arrange) { mLineArrange[i_no] = i_arrange; }
void setLineScale(int i_no, u16 i_lineScale) { mLineScale[i_no] = i_lineScale; }
void setSelLength(int i_no, f32 i_selLength) { mSelLength[i_no] = i_selLength; }
void setTopWordCount(s8 wordCount) { mTopWordCount = wordCount; }
void setNowWordCount(s8 wordCount) { mNowWordCount = wordCount; }
void offSelectRubyFlag(int i_flag) { mSelectRubyFlag &= ~(u8)(1 << i_flag); }
void setPageEndCount(s16 i_endCount) { mPageEndCount = i_endCount; }
void onBombNameUseFlag() { mBombNameUseFlag = 1; }
void onSelectRubyFlag(int i_flag) { mSelectRubyFlag |= (u8)(1 << i_flag); }
void setpStatus(u16* status) { mpStatus = status; }
void setObjectPtr(dMsgObject_c* ptr) { mpObjectPtr = ptr; }
void setCountBackUp() { mCharactor.mCountBackUp = mCharactor.field_0x40e; }
void setSelMsgPtr(char* ptr) { mpSelMsgPtr = ptr; }
void setPageNum(s16 pageNum) { mPageNum = pageNum; }
void setStopFlag(u8 flag) { mStopFlag = flag; }
void setStatus(u16 status) { *mpStatus = status; }
void setFont(JUTFont* font) { mpFont = font; }
void setFontSizeX(f32 x) { mFontSizeX = x; }
void setFontSizeY(f32 y) { mFontSizeY = y; }
void setRubySize(f32 size) { mRubySize = size; }
void setTBoxWidth(f32 width) { mTBoxWidth = width; }
void setTBoxHeight(f32 height) { mTBoxHeight = height; }
void setLineSpace(f32 space) { mLineSpace = space; }
void setCharSpace(f32 space) { mCharSpace = space; }
void setRubyCharSpace(f32 space) { mRubyCharSpace = space; }
void setSelFontSize(f32 size) { mSelFontSize = size; }
void setSelRubySize(f32 size) { mSelRubySize = size; }
void setSelTBoxWidth(f32 width) { mSelTBoxWidth = width; }
void setSelCharSpace(f32 space) { mSelCharSpace = space; }
void setSelRubyCharSpace(f32 space) { mSelRubyCharSpace = space; }
void decSendTimer() { mSendTimer--; }
void resetCharCnt() { mCharCnt = 0; }
void setFukiPosType(u8 type) { mFukiPosType = type; }
void setFukiKind(u8 kind) { mFukiKind = kind; }
void setForm(u8 form) { mForm = form; }
void setArrange(u8 arrange) { mArrange = arrange; }
void setMsgID(u16 id) { mMsgID = id; }
void offBombNameUseFlag() { mBombNameUseFlag = false; }
void setNowLightCount(u8 count) { mNowLightCount = count; }
void setCharCnt(s16 cnt) { mCharCnt = cnt; }
void offButtonTagStopFlag() { mButtonTagStopFlag = false; }
void onLightBatchFlag() { mLightBatchFlag = true; }
void addNowLightCount() { mNowLightCount++; }
void addLineCount() { mLineCount++; }
void addEndLineCount() { mEndLineCount++; }
void onSelectSetCancelFlag() { mSelectSetCancelFlag = true; }
void offSelectSetCancelFlag() { mSelectSetCancelFlag = false; }
void addDrawLightCount() { mDrawLightCount++; }
void setCharAlpha(f32 alpha) { mCharAlpha = alpha; }
void addCharAlpha() {
mCharAlpha += mAddCharAlpha;
if (mCharAlpha > 255.0f) {
mCharAlpha = 255.0f;
}
}
void setLineLength(int i_no, f32 i_strLen, f32 i_spaceLen) {
mStrLength[i_no] = i_strLen;
mSpaceLength[i_no] = i_spaceLen;
}
void setSelectPos(u8 i_pos) {
if (!isSelectSetCancelFlag()) {
mSelectPos = i_pos;
}
}
void addCharAllAlphaRate() {
mCharAllAlphaRate += mAddCharAllAlphaRate;
if (mCharAllAlphaRate > 1.0f) {
mCharAllAlphaRate = 1.0f;
}
}
void addLineLength(int param_0, f32 param_1, f32 param_2) {
mStrLength[param_0] += param_1;
mSpaceLength[param_0] += param_2;
}
void addSelLength(int param_0, f32 param_1) {
mSelLength[param_0] += param_1;
}
dMsgObject_c* getObjectPtr() { return mpObjectPtr; }
u8 getForm() { return mForm; }
u8 getNowLightCount() { return mNowLightCount; }
u8 getCharCountBuffer(int i_no) { return mCharCountBuffer[i_no]; }
u8 getDrawLightCount() { return mDrawLightCount; }
u8 getFukiKind() { return mFukiKind; }
s16 getSendTimer() { return mSendTimer; }
u8 getSelectNum() { return mSelectNum; }
u8 getSelectType() { return mSelectType; }
const char* getSelMsgPtr() { return mpSelMsgPtr; }
f32 getDistanceScale() { return mDistanceScale; }
f32 getFontSizeX() { return mFontSizeX; }
f32 getFontSizeY() { return mFontSizeY; }
s16 getStartLineCount() { return mStartLineCount; }
f32 getStrLength(int param_0) { return mStrLength[param_0]; }
f32 getSpaceLength(int param_0) { return mSpaceLength[param_0]; }
f32 getCharSpace() { return mCharSpace; }
u8 getPageType(int i_no) { return mPageType[i_no]; }
u8 getInputFigure() { return mInputFigure; }
JUTFont* getFont() { return mpFont; }
f32 getSelRubySize() { return mSelRubySize; }
f32 getSelRubyCharSpace() { return mSelRubyCharSpace; }
f32 getRubySize() { return mRubySize; }
f32 getRubyCharSpace() { return mRubyCharSpace; }
char* getSelTextPtr(int idx) { return mSelText[idx]; }
char* getSelRubyPtr(int idx) { return mSelRuby[idx]; }
char* getTextPtr() { return mText; }
char* getTextSPtr() { return mTextS; }
char* getRubyPtr() { return mRuby; }
u8 getSelectRubyFlag() { return mSelectRubyFlag; }
f32 getSelTBoxWidth() { return mSelTBoxWidth; }
u8 getSelectPos() { return mSelectPos; }
u16 getMsgID() { return mMsgID; }
bool isButtonTagStopFlag() { return mButtonTagStopFlag ? true : false; }
u8 getStopFlag() { return mStopFlag; }
u8 getSendFlag() { return mSendFlag; }
u8 getFukiPosType() { return mFukiPosType; }
u16 getStatus() { return *mpStatus; }
u8 getArrange() { return mArrange; }
u8 getLineArrange(int idx) { return mLineArrange[idx]; }
f32 getSelFontSize() { return mSelFontSize; }
f32 getSelCharSpace() { return mSelCharSpace; }
u16 getLineScale(int i_no) { return mLineScale[i_no]; }
bool isBombNameUseFlag() { return mBombNameUseFlag ? true : false; }
f32 getSelLength(int idx) { return mSelLength[idx]; }
void setAddCharAlpha(f32 alpha) { mAddCharAlpha = alpha; }
s8 getNowPageLineMax() { return mPageLineMax[field_0x5d2]; }
s16 getLineCount() { return mLineCount; }
void onBatchFlag() { mBatchFlag = true; }
s16 getPageNum() { return mPageNum; }
s16 getPageEndCount() { return mPageEndCount; }
s8 getTopWordCount() { return mTopWordCount; }
u8 getTopColorType() { return mTopColorType; }
u16 getTopTagScale() { return mTopTagScale; }
u8 getBatchColorFlag() { return mBatchColorFlag; }
f32 getLineSpace() { return mLineSpace; }
u8 getNowPageType() { return mPageType[field_0x5d2]; }
f32 getTBoxWidth() { return mTBoxWidth;}
f32 getTBoxHeight() { return mTBoxHeight;}
s8 getNowPageLine() { return mPageLine[field_0x5d2]; }
u8 getOutFontRupeeColor() { return mOutFontRupeeColor; }
f32 getCharAlpha() { return mCharAlpha; }
s16 getCharCnt() { return mCharCnt; }
struct CharSoundInfo {
u16 data[D_MSG_CLASS_CHAR_CNT_MAX];
s16 field_0x40c;
s16 field_0x40e;
s16 mCountBackUp;
};
CharSoundInfo getCharSoundInfo() { return mCharactor; }
u32 getDemoFrame() { return mDemoFrame; }
u32 getRevoMessageID() { return mRevoMessageID; }
f32 getCharAllAlphaRate() { return mCharAllAlphaRate; }
virtual ~jmessage_tReference();
/* 0x0008 */ STControl* mpStick;
/* 0x000C */ CharSoundInfo mCharactor;
/* 0x0414 */ cXyz mActorPos;
/* 0x0420 */ f32 mFontSizeX;
/* 0x0424 */ f32 mFontSizeY;
/* 0x0428 */ f32 mRubySize;
/* 0x042C */ f32 mTBoxWidth;
/* 0x0430 */ f32 mTBoxHeight;
/* 0x0434 */ f32 mLineSpace;
/* 0x0438 */ f32 mCharSpace;
/* 0x043C */ f32 mRubyCharSpace;
/* 0x0440 */ f32 mSelFontSize;
/* 0x0444 */ f32 mSelRubySize;
/* 0x0448 */ f32 mSelTBoxWidth;
/* 0x044C */ f32 mSelCharSpace;
/* 0x0450 */ f32 mSelRubyCharSpace;
/* 0x0454 */ f32 mDistanceScale;
/* 0x0458 */ f32 mAddCharAllAlphaRate;
/* 0x045C */ f32 mCharAllAlphaRate;
/* 0x0460 */ f32 mAddCharAlpha;
/* 0x0464 */ f32 mCharAlpha;
/* 0x0468 */ f32 mStrLength[D_MSG_CLASS_PAGE_CNT_MAX];
/* 0x0508 */ f32 mSpaceLength[D_MSG_CLASS_PAGE_CNT_MAX];
/* 0x05A8 */ f32 mSelLength[3];
/* 0x05B4 */ u32 mDemoFrame;
/* 0x05B8 */ u32 mRevoMessageID;
/* 0x05BC */ u16* mpStatus;
/* 0x05C0 */ dMsgObject_c* mpObjectPtr;
/* 0x05C4 */ char* mpSelMsgPtr;
/* 0x05C8 */ JUTFont* mpFont;
/* 0x05CC */ s16 mStartLineCount;
/* 0x05CE */ s16 mEndLineCount;
/* 0x05D0 */ s16 mLineCount;
/* 0x05D2 */ s16 field_0x5d2;
/* 0x05D4 */ s16 mPageEndCount;
/* 0x05D6 */ s16 mSendTimer;
/* 0x05D8 */ s16 mCharCnt;
/* 0x05DA */ s16 mPageNum;
/* 0x05DC */ u8 mNowLightCount;
/* 0x05DD */ u8 mDrawLightCount;
/* 0x05DE */ u16 mMsgID;
/* 0x05E0 */ u16 mLineScale[D_MSG_CLASS_PAGE_CNT_MAX];
/* 0x0630 */ u16 mTopTagScale;
/* 0x0632 */ u16 mNowTagScale;
/* 0x0634 */ char mWord[10][100];
/* 0x0A1C */ char mText[D_MSG_CLASS_CHAR_CNT_MAX];
/* 0x0C1C */ char mTextS[D_MSG_CLASS_CHAR_CNT_MAX];
/* 0x0E1C */ char mRuby[D_MSG_CLASS_CHAR_CNT_MAX];
/* 0x101C */ char mSelText[3][50];
/* 0x10B2 */ char mSelRuby[3][80];
/* 0x11A2 */ s8 mPageLine[D_MSG_CLASS_PAGE_CNT_MAX];
/* 0x11CA */ s8 mPageLineMax[D_MSG_CLASS_PAGE_CNT_MAX];
/* 0x11F2 */ u8 mPageType[D_MSG_CLASS_PAGE_CNT_MAX];
/* 0x121A */ u8 mLineArrange[D_MSG_CLASS_PAGE_CNT_MAX];
/* 0x1242 */ u8 mSelectNum;
/* 0x1243 */ u8 mSelectType;
/* 0x1244 */ u8 mSelectPos;
/* 0x1245 */ u8 mFukiPosType;
/* 0x1246 */ u8 mFukiKind;
/* 0x1247 */ u8 mForm;
/* 0x1248 */ u8 mArrange;
/* 0x1249 */ u8 mNowColorType;
/* 0x124A */ u8 mTopColorType;
/* 0x124B */ bool mButtonTagStopFlag;
/* 0x124C */ u8 mSendFlag;
/* 0x124D */ u8 mStopFlag;
/* 0x124E */ u8 mSelectRubyFlag;
/* 0x124F */ u8 mInputFigure;
/* 0x1250 */ u8 mOutFontRupeeColor;
/* 0x1251 */ s8 mNowWordCount;
/* 0x1252 */ s8 mTopWordCount;
/* 0x1253 */ u8 mCharCountBuffer[31];
/* 0x1272 */ bool mLightBatchFlag;
/* 0x1273 */ bool mBatchFlag;
/* 0x1274 */ bool mSelectSetCancelFlag;
/* 0x1275 */ bool mBombNameUseFlag;
/* 0x1276 */ u8 mBatchColorFlag;
}; // Size: 0x1278
struct jmessage_tMeasureProcessor : public JMessage::TRenderingProcessor {
jmessage_tMeasureProcessor(jmessage_tReference const* pReference);
void do_scale(f32);
void do_space(u32);
void do_pageType(int);
void do_name1();
void do_rubyset(void const*, u32);
void push_word(char*);
virtual void do_begin(void const* pEntry, char const* pszText);
virtual void do_end();
virtual void do_character(int iCharacter);
virtual bool do_tag(u32 uTag, void const* pData, u32 uSize);
/* 0x38 */ f32 field_0x38;
/* 0x3C */ s16 mTotalLineCnt;
/* 0x3E */ s16 field_0x3e;
/* 0x40 */ s16 field_0x40;
/* 0x42 */ u16 mSeMood;
/* 0x44 */ u8 field_0x44;
/* 0x45 */ u8 mSelectType;
/* 0x46 */ u8 field_0x46;
/* 0x47 */ u8 field_0x47;
/* 0x48 */ u8 field_0x48;
/* 0x49 */ s8 field_0x49;
/* 0x4A */ s8 mPageLineMax;
/* 0x4B */ s8 field_0x4b;
/* 0x4C */ u8 mSeSpeaker;
/* 0x4D */ u8 field_0x4d;
}; // Size: 0x50
struct jmessage_tControl : public JMessage::TControl {
jmessage_tControl();
virtual ~jmessage_tControl();
};
struct jmessage_tSequenceProcessor : public JMessage::TSequenceProcessor {
jmessage_tSequenceProcessor(jmessage_tReference const* pReference, jmessage_tControl* pControl);
void do_name1();
void do_space(u32);
void do_rubyset(void const*, u32);
void push_word();
void messageSePlay(u8, u8, cXyz*);
void calcStringLength();
virtual void do_reset();
virtual void do_begin(void const* pEntry, char const* pszText);
virtual void do_end();
virtual void do_character(int iCharacter);
virtual bool do_tag(u32 uTag, void const* pData, u32 uSize);
virtual bool do_isReady();
virtual bool do_jump_isReady();
virtual void do_jump(void const* pEntry, char const* pszText);
u8 getMouthCheck() { return mMouthCheck; }
void setForceForm(u8 forceForm) { mForceForm = forceForm; }
/* 0x4C */ jmessage_tMeasureProcessor mMeasureProcessor;
/* 0x9C */ const void* mpEntry;
/* 0xA0 */ const char* mpText;
/* 0xA4 */ s16 field_0xa4;
/* 0xA6 */ s16 field_0xa6;
/* 0xA8 */ s16 field_0xa8;
/* 0xAA */ s16 field_0xaa;
/* 0xAC */ u8 field_0xac;
/* 0xAD */ u8 field_0xad;
/* 0xAE */ u8 field_0xae;
/* 0xAF */ u8 mForceForm;
/* 0xB0 */ u8 mMouthCheck;
/* 0xB1 */ u8 field_0xb1;
/* 0xB2 */ u8 field_0xb2;
/* 0xB3 */ u8 field_0xb3;
/* 0xB4 */ u8 field_0xb4;
/* 0xB5 */ s8 field_0xb5;
};
struct CharInfo_c {
/* 0x00 */ f32 field_0x00;
/* 0x04 */ f32 field_0x04;
/* 0x08 */ f32 field_0x08;
/* 0x0C */ f32 field_0x0c;
/* 0x10 */ f32 field_0x10;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ u8 mColorNo;
/* 0x19 */ u8 field_0x19;
};
struct jmessage_tRenderingProcessor : public JMessage::TRenderingProcessor {
jmessage_tRenderingProcessor(jmessage_tReference const* pReference);
void resetRendering();
void do_widthcenter();
void do_selwidthcenter(int);
void do_heightcenter();
void do_color(u8);
void do_scale(f32);
void do_linedown(s16);
void do_transY(s16, bool);
void do_outfont(u8, u32);
void do_arrow2();
f32 getLineLength(int);
void do_strcat(char*, bool, bool, bool);
void do_rubyset(void const*, u32);
void do_rubystrcat(char*, char*, f32, f32);
void do_name1();
void do_numset(s16);
void push_word();
void getCharInfo(f32, f32, f32, f32, f32);
virtual void do_reset();
virtual void do_begin(void const* pEntry, char const* pszText);
virtual void do_end();
virtual void do_character(int iCharacter);
virtual bool do_tag(u32 uTag, void const* pData, u32 uSize);
void setTextInitPos(float x, float y) {
mTextInitPosX = x;
mTextInitPosY = y;
}
void setTextScale(float x, float y) {
mTextInitScaleX = x;
mTextInitScaleY = y;
}
void setSelTextInitPos(int idx, float x, float y) {
mSelTextInitPosX[idx] = x;
mSelTextInitPosY[idx] = y;
}
void setTextInitOffsetPos(f32 offset) { mTextInitOffsetPos = offset; }
void setOutFont(COutFont_c* font) { mpOutFont = font; }
void setCharInfoPtr(CharInfo_c* info) { mCharInfoPtr = info; }
/* 0x038 */ COutFont_c* mpOutFont;
/* 0x03C */ CharInfo_c* mCharInfoPtr;
/* 0x040 */ s16* mpCharInfoCnt;
/* 0x044 */ f32 field_0x44;
/* 0x048 */ f32 field_0x48;
/* 0x04C */ f32 field_0x4c;
/* 0x050 */ f32 mTextInitPosX;
/* 0x054 */ f32 mTextInitPosY;
/* 0x058 */ f32 mTextInitScaleX;
/* 0x05C */ f32 mTextInitScaleY;
/* 0x060 */ f32 mSelTextInitPosX[3];
/* 0x06C */ f32 mSelTextInitPosY[3];
/* 0x078 */ f32 mTextInitOffsetPos;
/* 0x07C */ f32 field_0x7c[D_MSG_CLASS_PAGE_CNT_MAX];
/* 0x11C */ int field_0x11c;
/* 0x120 */ u32 mCCColor;
/* 0x124 */ u32 mGCColor;
/* 0x128 */ f32 field_0x128;
/* 0x12C */ f32 field_0x12c;
/* 0x130 */ f32 field_0x130;
/* 0x134 */ f32 field_0x134;
/* 0x138 */ f32 field_0x138;
/* 0x13C */ u16 field_0x13c;
/* 0x13E */ s16 field_0x13e;
/* 0x140 */ s16 field_0x140;
/* 0x142 */ s16 field_0x142;
/* 0x144 */ u16 field_0x144;
/* 0x146 */ s16 field_0x146;
/* 0x148 */ u16 field_0x148;
/* 0x14A */ u16 field_0x14a;
/* 0x14C */ u8 field_0x14c;
/* 0x14D */ u8 field_0x14d;
/* 0x14E */ u8 field_0x14e;
/* 0x14F */ s8 field_0x14f;
/* 0x150 */ u8 mColorNo;
/* 0x151 */ u8 field_0x151;
/* 0x152 */ char field_0x152[0x184 - 0x152];
/* 0x184 */ char field_0x184[3];
/* 0x187 */ u8 field_0x187;
};
struct jmessage_string_tControl : public JMessage::TControl {
jmessage_string_tControl();
};
struct jmessage_string_tReference : public JMessage::TReference {
jmessage_string_tReference();
void init(J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, u8);
void setCharactor(u16);
void addCharactor(u16);
void resetCharactor();
f32 getLineLength(int);
void addLineLength(int, f32);
f32 getOutfontLength(int);
void setOutfontLength(int, f32);
void clearOutfontLength(int);
s16 getLineCountNowPage();
J2DTextBox* getPanePtr() { return mPanePtr; }
J2DTextBox* getRubyPanePtr() { return mRubyPanePtr; }
u32 getCCColor() { return mCCColor; }
u32 getGCColor() { return mGCColor; }
u8 getLineMax() { return mLineMax; }
u8 getNowPage() { return mNowPage; }
JUTFont* getFont() { return mpFont; }
s16 getLineCount() { return mLineCount; }
void setLineCount(s16 lineCount) { mLineCount = lineCount; }
void addLineCount() { mLineCount++; }
BOOL isFlag(u8 flag) {
BOOL rv;
if (mFlags & flag) {
rv = 1;
} else {
rv = 0;
}
return rv;
}
void setColor(u32 ccColor, u32 gcColor) {
mCCColor = ccColor;
mGCColor = gcColor;
}
void setNowPage(u8 nowPage) { mNowPage = nowPage; }
void setLineMax(u8 lineMax) { mLineMax = lineMax; }
COutFont_c* getOutFontPtr() { return mOutFontPtr; }
virtual ~jmessage_string_tReference();
/* 0x08 */ J2DTextBox* mPanePtr;
/* 0x0C */ J2DTextBox* mRubyPanePtr;
/* 0x10 */ COutFont_c* mOutFontPtr;
/* 0x14 */ JUTFont* mpFont;
/* 0x18 */ f32 mLineLength[D_MSG_CLASS_LINE_MAX];
/* 0x3C */ f32 mOutfontLength[D_MSG_CLASS_LINE_MAX];
/* 0x78 */ u32 mCCColor;
/* 0x7C */ u32 mGCColor;
/* 0x80 */ s16 mLineCount;
/* 0x82 */ u8 mLineMax;
/* 0x83 */ u8 mNowPage;
/* 0x84 */ u8 mFlags;
};
struct jmessage_string_tMeasureProcessor : public JMessage::TRenderingProcessor {
jmessage_string_tMeasureProcessor(jmessage_string_tReference const* pReference);
void do_rubyset(void const*, u32);
virtual void do_begin(void const* pEntry, char const* pszText);
virtual void do_end();
virtual void do_character(int iCharacter);
virtual bool do_tag(u32 uTag, void const* pData, u32 uSize);
/* 0x38 */ jmessage_string_tReference* mpReference;
};
struct jmessage_string_tSequenceProcessor : public JMessage::TSequenceProcessor {
jmessage_string_tSequenceProcessor(jmessage_string_tReference const* pReference,
jmessage_string_tControl* pControl);
virtual void do_reset();
virtual void do_begin(void const* pEntry, char const* pszText);
virtual void do_end();
virtual void do_character(int iCharacter);
virtual bool do_tag(u32 uTag, void const* pData, u32 uSize);
virtual bool do_isReady();
virtual bool do_jump_isReady();
virtual void do_jump(void const* pEntry, char const* pszText);
/* 0x4C */ jmessage_string_tMeasureProcessor mMeasureProcessor;
/* 0x88 */ jmessage_string_tReference* mpSeqReference;
};
struct jmessage_string_tRenderingProcessor : public JMessage::TRenderingProcessor {
jmessage_string_tRenderingProcessor(jmessage_string_tReference const* pReference);
s16 getLineCountNowPage();
void do_widthcenter();
void do_heightcenter();
void do_strcat(char*);
void do_rubyset(void const*, u32);
void do_rubystrcat(char*);
void do_outfont(u8);
void do_color(u8);
void do_scale(f32);
void do_linedown(s16);
void do_numset(s16);
void push_word(char const*);
virtual void do_reset();
virtual void do_begin(void const* pEntry, char const* pszText);
virtual void do_end();
virtual void do_character(int iCharacter);
virtual bool do_tag(u32 uTag, void const* pData, u32 uSize);
char* getString() { return field_0x54; }
/* 0x038 */ jmessage_string_tReference* mpReference;
/* 0x03C */ f32 field_0x3c;
/* 0x040 */ f32 field_0x40;
/* 0x044 */ f32 field_0x44;
/* 0x048 */ f32 field_0x48;
/* 0x04C */ f32 field_0x4c;
/* 0x050 */ f32 field_0x50;
/* 0x054 */ char field_0x54[D_MSG_CLASS_CHAR_CNT_MAX];
/* 0x254 */ char field_0x254[D_MSG_CLASS_CHAR_CNT_MAX];
/* 0x454 */ char field_0x454[0x486 - 0x454];
/* 0x486 */ char field_0x486[0x20]; // Unknown length
/* 0x4A6 */ u8 field_0x4a6[0x54e - 0x4a6];
/* 0x54E */ s16 field_0x54e;
/* 0x550 */ s16 field_0x550;
/* 0x552 */ s16 field_0x552;
/* 0x554 */ u8 field_0x554;
};
#define MSGTAG_GROUP(g) (g << 16)
// Group 0
#define MSGTAG_PLAYER_NAME 0
#define MSGTAG_INSTANT 1
#define MSGTAG_TYPE 2
#define MSGTAG_UNK_3 3 // appears the same as autobox
#define MSGTAG_AUTOBOX 4
#define MSGTAG_BOXATMOST 5
#define MSGTAG_UNK_6 6
#define MSGTAG_PAUSE 7
#define MSGTAG_SELECT_2WAY 8
#define MSGTAG_SELECT_3WAY 9
#define MSGTAG_ABTN 10
#define MSGTAG_BBTN 11
#define MSGTAG_CSTICK 12
#define MSGTAG_LBTN 13
#define MSGTAG_RBTN 14
#define MSGTAG_XBTN 15
#define MSGTAG_YBTN 16
#define MSGTAG_ZBTN 17
#define MSGTAG_DPAD 18
#define MSGTAG_STICK_CROSS 19
#define MSGTAG_LEFT_ARROW 20
#define MSGTAG_RIGHT_ARROW 21
#define MSGTAG_UP_ARROW 22
#define MSGTAG_DOWN_ARROW 23
#define MSGTAG_STICK_UP 24
#define MSGTAG_STICK_DOWN 25
#define MSGTAG_STICK_LEFT 26
#define MSGTAG_STICK_RIGHT 27
#define MSGTAG_STICK_VERTICAL 28
#define MSGTAG_STICK_HORIZONTAL 29
#define MSGTAG_INLINE_2_NEXT 30
#define MSGTAG_INLINE_2_FIRST 31
#define MSGTAG_AWAIT_CHOICE 32
#define MSGTAG_UNK_33 33 // calls "do_name1" but the function does nothing
#define MSGTAG_HORSE_NAME 34
#define MSGTAG_RED_TARGET 35
#define MSGTAG_YELLOW_TARGET 36
#define MSGTAG_INPUT_VALUE 37
#define MSGTAG_ACKNOWLEDGE 38
#define MSGTAG_ABTN_STAR 39
#define MSGTAG_DEMOBOX 40
#define MSGTAG_SCENT_NAME 41
#define MSGTAG_WHITE_TARGET 42
#define MSGTAG_PORTAL_NAME 43
#define MSGTAG_WARP_ICON 44
#define MSGTAG_BOMB_NAME 45
#define MSGTAG_XYBTN 46
#define MSGTAG_YXBTN 47
#define MSGTAG_BOMB_BAG_ICON 48
#define MSGTAG_BOMB_NUM 49
#define MSGTAG_BOMB_PRICE 50
#define MSGTAG_INLINE_3_NEXT 51
#define MSGTAG_INLINE_3_FIRST 52
#define MSGTAG_UNK_53 53
#define MSGTAG_BOXATLEAST 54
#define MSGTAG_BOMB_MAX 55
#define MSGTAG_ARROW_MAX 56
#define MSGTAG_HEART 57
#define MSGTAG_QUAVER 58
#define MSGTAG_INSECT_NAME 59
#define MSGTAG_LETTER_NAME 60
#define MSGTAG_LINE_DOWN 61
#define MSGTAG_CURRENT_LETTER_PAGE 62
#define MSGTAG_MAX_LETTER_PAGE 63
// Group 3
#define MSGTAG_WII_MSGID_OVERRIDE 0
#define MSGTAG_WII_ABTN 1
#define MSGTAG_WII_BBTN 2
#define MSGTAG_WII_HOMEBTN 3
#define MSGTAG_WII_MINUSBTN 4
#define MSGTAG_WII_PLUSBTN 5
#define MSGTAG_WII_1BTN 6
#define MSGTAG_WII_2BTN 7
#define MSGTAG_WII_DPAD_ITEM 8
#define MSGTAG_WII_DPAD_UP 9
#define MSGTAG_WII_DPAD_DOWN 10
#define MSGTAG_WII_DPAD_HORIZONTAL 11
#define MSGTAG_WII_DPAD_RIGHT 12
#define MSGTAG_WII_DPAD_LEFT 13
#define MSGTAG_WII_WIIMOTE 14
#define MSGTAG_WII_RETICULE 15
#define MSGTAG_WII_NUNCHUK 16
#define MSGTAG_WII_WIIMOTE2 17
#define MSGTAG_WII_FAIRY 18
#define MSGTAG_WII_CBTN 19
#define MSGTAG_WII_ZBTN 20
// Group 4
#define MSGTAG_GLYPH_DOLLARSIGN 0
#define MSGTAG_GLYPH_BACKSLASH 1
#define MSGTAG_GLYPH_ATMARK 2
#define MSGTAG_GLYPH_SHARP 3
#define MSGTAG_GLYPH_FLAT 4
#define MSGTAG_GLYPH_SQRT 5
#define MSGTAG_GLYPH_PERCENT 6
#define MSGTAG_GLYPH_HECTARE 7
#define MSGTAG_GLYPH_ARE 8
#define MSGTAG_GLYPH_LITRE 9
#define MSGTAG_GLYPH_WATT 10
#define MSGTAG_GLYPH_CALORIE 11
#define MSGTAG_GLYPH_DOLLAR 12
#define MSGTAG_GLYPH_CENT 13
// Group 5
#define MSGTAG_TIME_INFO 0
#define MSGTAG_INSECT_INFO 3
#define MSGTAG_RIVER_POINTS 7
#define MSGTAG_FISH_LENGTH 8
#define MSGTAG_FUNDRAISE_REMAIN 9
#define MSGTAG_NEW_LETTER_NUM 10
#define MSGTAG_POE_NUM 11
#define MSGTAG_BALLOON_SCORE 12
#define MSGTAG_FISH_COUNT 13
#define MSGTAG_ROLLGOAL_LV 14
// Group 6
#define MSGTAG_PLAYER_GENITIV 0
#define MSGTAG_HORSE_GENITIV 1
#define MSGTAG_MALE_ICON 2
#define MSGTAG_FEMALE_ICON 3
#define MSGTAG_STAR_ICON 4
#define MSGTAG_REFMARK 5
#define MSGTAG_THIN_LEFT_ARROW 6
#define MSGTAG_THIN_RIGHT_ARROW 7
#define MSGTAG_THIN_UP_ARROW 8
#define MSGTAG_THIN_DOWN_ARROW 9
#define MSGTAG_BULLET 10
#define MSGTAG_BULLET_SPACE 11
// Group 255
#define MSGTAG_COLOR (MSGTAG_GROUP(255) | 0)
#define MSGTAG_SCALE (MSGTAG_GROUP(255) | 1)
#define MSGTAG_RUBY (MSGTAG_GROUP(255) | 2)
#endif /* D_MSG_D_MSG_CLASS_H */