auto_caption, auto_explain largely matching

This commit is contained in:
robojumper
2025-04-02 13:36:11 +02:00
parent 5e2343afb7
commit 4e88b4aec7
16 changed files with 584 additions and 122 deletions
+10
View File
@@ -487,10 +487,20 @@ d/lyt/msg_window/d_lyt_simple_window.cpp:
d/lyt/d_lyt_auto_caption.cpp:
.text start:0x8012B950 end:0x8012C568
.ctors start:0x804DB760 end:0x804DB764
.rodata start:0x804E7668 end:0x804E7688
.data start:0x8051E548 end:0x8051E7C0
.sdata start:0x80572638 end:0x80572648
.sdata2 start:0x80579EF8 end:0x80579F10
.bss start:0x805AF1F0 end:0x805AF2F0
d/lyt/d_lyt_auto_explain.cpp:
.text start:0x8012C570 end:0x8012D188
.ctors start:0x804DB764 end:0x804DB768
.rodata start:0x804E7688 end:0x804E76A0
.data start:0x8051E7C0 end:0x8051EA08
.sdata start:0x80572648 end:0x80572658
.sdata2 start:0x80579F10 end:0x80579F28
.bss start:0x805AF2F0 end:0x805AF3F0
d/lyt/d_lyt_map_capture.cpp:
.text start:0x8012D190 end:0x8012DC28
+81 -81
View File
@@ -3843,7 +3843,7 @@ fn_800AF3E0 = .text:0x800AF3E0; // type:function size:0x8C
fn_800AF470 = .text:0x800AF470; // type:function size:0xCC
fn_800AF540__10dTextBox_cFPCwP15dTagProcessor_ce = .text:0x800AF540; // type:function size:0x8C
fn_800AF5D0 = .text:0x800AF5D0; // type:function size:0xD4
fn_800AF6B0 = .text:0x800AF6B0; // type:function size:0x64
fn_800AF6B0__10dTextBox_cFPCwP15dTagProcessor_c = .text:0x800AF6B0; // type:function size:0x64
fn_800AF720 = .text:0x800AF720; // type:function size:0x8C
fn_800AF7B0 = .text:0x800AF7B0; // type:function size:0x84
fn_800AF840 = .text:0x800AF840; // type:function size:0xEC
@@ -3949,7 +3949,7 @@ fn_800B8340 = .text:0x800B8340; // type:function size:0x18C
fn_800B84D0 = .text:0x800B84D0; // type:function size:0x8C
fn_800B8560 = .text:0x800B8560; // type:function size:0x54
fn_800B85C0 = .text:0x800B85C0; // type:function size:0x290
getNumLines__15dTagProcessor_cFl = .text:0x800B8850; // type:function size:0x38
getMaxNumLines__15dTagProcessor_cFl = .text:0x800B8850; // type:function size:0x38
getTextCommand__15dTagProcessor_cFwPCwPUcPlPPw = .text:0x800B8890; // type:function size:0x38
process0xFCommand__15dTagProcessor_cFwPCwPl = .text:0x800B88D0; // type:function size:0xC
tick0x830__15dTagProcessor_cFv = .text:0x800B88E0; // type:function size:0x30
@@ -6764,14 +6764,14 @@ LytMsgWindow__stateInUpdate = .text:0x80115910; // type:function size:0x60
LytMsgWindow__stateInLeave = .text:0x80115970; // type:function size:0x4
LytMsgWindow__stateOutputTextEnter = .text:0x80115980; // type:function size:0x18
LytMsgWindow__stateOutputTextUpdate = .text:0x801159A0; // type:function size:0x2A0
fn_80115C40 = .text:0x80115C40; // type:function size:0x8
vt_0x34__20dLytMsgWindowSubtypeFv = .text:0x80115C40; // type:function size:0x8
LytMsgWindow__stateOutputTextLeave = .text:0x80115C50; // type:function size:0x4
stateChangePageNonFinalTextboxEnter = .text:0x80115C60; // type:function size:0x30
stateChangePageNonFinalTextboxUpdate = .text:0x80115C90; // type:function size:0x140
LytMsgWindow__stateChangePageNonFinalTextboxLeave = .text:0x80115DD0; // type:function size:0x4
LytMsgWindow__stateWaitKeyChangePage1Enter = .text:0x80115DE0; // type:function size:0x4
LytMsgWindow__stateWaitKeyChangePage1Update = .text:0x80115DF0; // type:function size:0xB4
fn_80115EB0 = .text:0x80115EB0; // type:function size:0x8
vt_0x38__20dLytMsgWindowSubtypeFb = .text:0x80115EB0; // type:function size:0x8
LytMsgWindow__stateWaitKeyChangePage1Leave = .text:0x80115EC0; // type:function size:0x4
stateChangePageFinalTextboxEnter = .text:0x80115ED0; // type:function size:0x40
stateChangePageFinalTextboxUpdate = .text:0x80115F10; // type:function size:0x258
@@ -6781,7 +6781,7 @@ LytMsgWindow__stateWaitKeyMsgEnd1Update = .text:0x80116190; // type:function siz
LytMsgWindow__stateWaitKeyMsgEnd1Leave = .text:0x80116370; // type:function size:0x4
LytMsgWindow__stateWaitKeyMsgEnd2Enter = .text:0x80116380; // type:function size:0x4
LytMsgWindow__stateWaitKeyMsgEnd2Update = .text:0x80116390; // type:function size:0x60
fn_801163F0 = .text:0x801163F0; // type:function size:0x8
vt_0x3C__20dLytMsgWindowSubtypeCFv = .text:0x801163F0; // type:function size:0x8
LytMsgWindow__stateWaitKeyMsgEnd2Leave = .text:0x80116400; // type:function size:0x4
LytMsgWindow__stateWaitKeySelectQuestionEnter = .text:0x80116410; // type:function size:0xD0
LytMsgWindow__stateWaitKeySelectQuestionUpdate = .text:0x801164E0; // type:function size:0x15C
@@ -6881,8 +6881,8 @@ __dt__19dLytMsgWindowWood_cFv = .text:0x80119DB0; // type:function size:0x170
__dt__20dLytMsgWindowStone_cFv = .text:0x80119F20; // type:function size:0x170
fn_8011A090 = .text:0x8011A090; // type:function size:0x198
fn_8011A230 = .text:0x8011A230; // type:function size:0x158
fn_8011A390 = .text:0x8011A390; // type:function size:0x118
fn_8011A4B0 = .text:0x8011A4B0; // type:function size:0x118
__dt__17dLytAutoExplain_cFv = .text:0x8011A390; // type:function size:0x118
__dt__17dLytAutoCaption_cFv = .text:0x8011A4B0; // type:function size:0x118
fn_8011A5D0 = .text:0x8011A5D0; // type:function size:0x1AC
fn_8011A780 = .text:0x8011A780; // type:function size:0x10
fn_8011A790 = .text:0x8011A790; // type:function size:0x10
@@ -7034,12 +7034,12 @@ fn_8011B7A0 = .text:0x8011B7A0; // type:function size:0x30
fn_8011B7D0 = .text:0x8011B7D0; // type:function size:0x30
fn_8011B800 = .text:0x8011B800; // type:function size:0x30
fn_8011B830 = .text:0x8011B830; // type:function size:0x30
fn_8011B860 = .text:0x8011B860; // type:function size:0x30
fn_8011B890 = .text:0x8011B890; // type:function size:0x30
fn_8011B8C0 = .text:0x8011B8C0; // type:function size:0x30
fn_8011B8F0 = .text:0x8011B8F0; // type:function size:0x30
fn_8011B920 = .text:0x8011B920; // type:function size:0x30
fn_8011B950 = .text:0x8011B950; // type:function size:0x30
finalizeState__32sFStateID_c<17dLytAutoExplain_c>CFR17dLytAutoExplain_c = .text:0x8011B860; // type:function size:0x30
executeState__32sFStateID_c<17dLytAutoExplain_c>CFR17dLytAutoExplain_c = .text:0x8011B890; // type:function size:0x30
initializeState__32sFStateID_c<17dLytAutoExplain_c>CFR17dLytAutoExplain_c = .text:0x8011B8C0; // type:function size:0x30
finalizeState__32sFStateID_c<17dLytAutoCaption_c>CFR17dLytAutoCaption_c = .text:0x8011B8F0; // type:function size:0x30
executeState__32sFStateID_c<17dLytAutoCaption_c>CFR17dLytAutoCaption_c = .text:0x8011B920; // type:function size:0x30
initializeState__32sFStateID_c<17dLytAutoCaption_c>CFR17dLytAutoCaption_c = .text:0x8011B950; // type:function size:0x30
LytMsgWindow__initStates = .text:0x8011B980; // type:function size:0xE58
LytMsgWindow__dtor = .text:0x8011C7E0; // type:function size:0x58
fn_8011C840 = .text:0x8011C840; // type:function size:0x88
@@ -7253,7 +7253,7 @@ fn_801256B0 = .text:0x801256B0; // type:function size:0x8
LytMsgWindowSword__initStates = .text:0x801256C0; // type:function size:0x3F4
LytMsgWindowSword__dtor2 = .text:0x80125AC0; // type:function size:0x58
fn_80125B20 = .text:0x80125B20; // type:function size:0x88
build__19dLytMsgWindowWood_cFPvPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x80125BB0; // type:function size:0x278
build__19dLytMsgWindowWood_cFPQ23d2d10ResAccIf_cPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x80125BB0; // type:function size:0x278
remove__19dLytMsgWindowWood_cFv = .text:0x80125E30; // type:function size:0xD8
initializeState_Invisible__19dLytMsgWindowWood_cFv = .text:0x80125F10; // type:function size:0x8
executeState_Invisible__19dLytMsgWindowWood_cFv = .text:0x80125F20; // type:function size:0x28
@@ -7281,7 +7281,7 @@ vt_0x30__19dLytMsgWindowWood_cFv = .text:0x801263C0; // type:function size:0x8
__sinit_\d_lyt_msg_window_wood_cpp = .text:0x801263D0; // type:function size:0x338 scope:local
__dt__34sFStateID_c<19dLytMsgWindowWood_c>Fv = .text:0x80126710; // type:function size:0x58
isSameName__34sFStateID_c<19dLytMsgWindowWood_c>CFPCc = .text:0x80126770; // type:function size:0x88
build__20dLytMsgWindowStone_cFPvPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x80126800; // type:function size:0x284
build__20dLytMsgWindowStone_cFPQ23d2d10ResAccIf_cPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x80126800; // type:function size:0x284
remove__20dLytMsgWindowStone_cFv = .text:0x80126A90; // type:function size:0xD8
initializeState_Invisible__20dLytMsgWindowStone_cFv = .text:0x80126B70; // type:function size:0x8
executeState_Invisible__20dLytMsgWindowStone_cFv = .text:0x80126B80; // type:function size:0x28
@@ -7421,58 +7421,58 @@ fn_8012B4F0 = .text:0x8012B4F0; // type:function size:0x30
LytSimpleWindow__initStates = .text:0x8012B520; // type:function size:0x338
LytSimpleWindow__dtor = .text:0x8012B860; // type:function size:0x58
fn_8012B8C0 = .text:0x8012B8C0; // type:function size:0x88
fn_8012B950 = .text:0x8012B950; // type:function size:0x4
fn_8012B960 = .text:0x8012B960; // type:function size:0x28
fn_8012B990 = .text:0x8012B990; // type:function size:0x4
fn_8012B9A0 = .text:0x8012B9A0; // type:function size:0xFC
fn_8012BAA0 = .text:0x8012BAA0; // type:function size:0x78
fn_8012BB20 = .text:0x8012BB20; // type:function size:0x4
fn_8012BB30 = .text:0x8012BB30; // type:function size:0x4
fn_8012BB40 = .text:0x8012BB40; // type:function size:0x28
fn_8012BB70 = .text:0x8012BB70; // type:function size:0x4
fn_8012BB80 = .text:0x8012BB80; // type:function size:0x48
fn_8012BBD0 = .text:0x8012BBD0; // type:function size:0x78
fn_8012BC50 = .text:0x8012BC50; // type:function size:0x4
fn_8012BC60 = .text:0x8012BC60; // type:function size:0x178
fn_8012BDE0 = .text:0x8012BDE0; // type:function size:0x50
fn_8012BE30 = .text:0x8012BE30; // type:function size:0xA8
fn_8012BEE0 = .text:0x8012BEE0; // type:function size:0x14
fn_8012BF00 = .text:0x8012BF00; // type:function size:0xC
fn_8012BF10 = .text:0x8012BF10; // type:function size:0x4C
fn_8012BF60 = .text:0x8012BF60; // type:function size:0xC
fn_8012BF70 = .text:0x8012BF70; // type:function size:0x4C
fn_8012BFC0 = .text:0x8012BFC0; // type:function size:0x64
fn_8012C030 = .text:0x8012C030; // type:function size:0xF4
fn_8012C130 = .text:0x8012C130; // type:function size:0x8
LytAutoCaption__initStates = .text:0x8012C140; // type:function size:0x338
LytAutoCaption__dtor = .text:0x8012C480; // type:function size:0x58
fn_8012C4E0 = .text:0x8012C4E0; // type:function size:0x88
fn_8012C570 = .text:0x8012C570; // type:function size:0x4
fn_8012C580 = .text:0x8012C580; // type:function size:0x28
fn_8012C5B0 = .text:0x8012C5B0; // type:function size:0x4
fn_8012C5C0 = .text:0x8012C5C0; // type:function size:0xCC
fn_8012C690 = .text:0x8012C690; // type:function size:0x78
fn_8012C710 = .text:0x8012C710; // type:function size:0x4
fn_8012C720 = .text:0x8012C720; // type:function size:0x4
fn_8012C730 = .text:0x8012C730; // type:function size:0x28
fn_8012C760 = .text:0x8012C760; // type:function size:0x4
fn_8012C770 = .text:0x8012C770; // type:function size:0x48
fn_8012C7C0 = .text:0x8012C7C0; // type:function size:0x78
fn_8012C840 = .text:0x8012C840; // type:function size:0x4
fn_8012C850 = .text:0x8012C850; // type:function size:0x194
fn_8012C9F0 = .text:0x8012C9F0; // type:function size:0x50
fn_8012CA40 = .text:0x8012CA40; // type:function size:0xA8
fn_8012CAF0 = .text:0x8012CAF0; // type:function size:0x14
fn_8012CB10 = .text:0x8012CB10; // type:function size:0xC
fn_8012CB20 = .text:0x8012CB20; // type:function size:0x4C
fn_8012CB70 = .text:0x8012CB70; // type:function size:0xC
fn_8012CB80 = .text:0x8012CB80; // type:function size:0x4C
fn_8012CBD0 = .text:0x8012CBD0; // type:function size:0x7C
fn_8012CC50 = .text:0x8012CC50; // type:function size:0xF4
fn_8012CD50 = .text:0x8012CD50; // type:function size:0x8
LytAutoExplain__initStates = .text:0x8012CD60; // type:function size:0x338
LytAutoExplain__dtor = .text:0x8012D0A0; // type:function size:0x58
fn_8012D100 = .text:0x8012D100; // type:function size:0x88
initializeState_Invisible__17dLytAutoCaption_cFv = .text:0x8012B950; // type:function size:0x4
executeState_Invisible__17dLytAutoCaption_cFv = .text:0x8012B960; // type:function size:0x28
finalizeState_Invisible__17dLytAutoCaption_cFv = .text:0x8012B990; // type:function size:0x4
initializeState_In__17dLytAutoCaption_cFv = .text:0x8012B9A0; // type:function size:0xFC
executeState_In__17dLytAutoCaption_cFv = .text:0x8012BAA0; // type:function size:0x78
finalizeState_In__17dLytAutoCaption_cFv = .text:0x8012BB20; // type:function size:0x4
initializeState_OutputText__17dLytAutoCaption_cFv = .text:0x8012BB30; // type:function size:0x4
executeState_OutputText__17dLytAutoCaption_cFv = .text:0x8012BB40; // type:function size:0x28
finalizeState_OutputText__17dLytAutoCaption_cFv = .text:0x8012BB70; // type:function size:0x4
initializeState_Out__17dLytAutoCaption_cFv = .text:0x8012BB80; // type:function size:0x48
executeState_Out__17dLytAutoCaption_cFv = .text:0x8012BBD0; // type:function size:0x78
finalizeState_Out__17dLytAutoCaption_cFv = .text:0x8012BC50; // type:function size:0x4
build__17dLytAutoCaption_cFPQ23d2d10ResAccIf_cPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x8012BC60; // type:function size:0x178
remove__17dLytAutoCaption_cFv = .text:0x8012BDE0; // type:function size:0x50
execute__17dLytAutoCaption_cFv = .text:0x8012BE30; // type:function size:0xA8
draw__17dLytAutoCaption_cFv = .text:0x8012BEE0; // type:function size:0x14
open__17dLytAutoCaption_cFv = .text:0x8012BF00; // type:function size:0xC
isOpening__17dLytAutoCaption_cCFv = .text:0x8012BF10; // type:function size:0x4C
close__17dLytAutoCaption_cFv = .text:0x8012BF60; // type:function size:0xC
isClosing__17dLytAutoCaption_cCFv = .text:0x8012BF70; // type:function size:0x4C
setText__17dLytAutoCaption_cFPCw = .text:0x8012BFC0; // type:function size:0x64
checkSomethingMeter__17dLytAutoCaption_cFv = .text:0x8012C030; // type:function size:0xF4
vt_0x30__17dLytAutoCaption_cFv = .text:0x8012C130; // type:function size:0x8
__sinit_\d_lyt_auto_caption_cpp = .text:0x8012C140; // type:function size:0x338
__dt__32sFStateID_c<17dLytAutoCaption_c>Fv = .text:0x8012C480; // type:function size:0x58
isSameName__32sFStateID_c<17dLytAutoCaption_c>CFPCc = .text:0x8012C4E0; // type:function size:0x88
initializeState_Invisible__17dLytAutoExplain_cFv = .text:0x8012C570; // type:function size:0x4
executeState_Invisible__17dLytAutoExplain_cFv = .text:0x8012C580; // type:function size:0x28
finalizeState_Invisible__17dLytAutoExplain_cFv = .text:0x8012C5B0; // type:function size:0x4
initializeState_In__17dLytAutoExplain_cFv = .text:0x8012C5C0; // type:function size:0xCC
executeState_In__17dLytAutoExplain_cFv = .text:0x8012C690; // type:function size:0x78
finalizeState_In__17dLytAutoExplain_cFv = .text:0x8012C710; // type:function size:0x4
initializeState_OutputText__17dLytAutoExplain_cFv = .text:0x8012C720; // type:function size:0x4
executeState_OutputText__17dLytAutoExplain_cFv = .text:0x8012C730; // type:function size:0x28
finalizeState_OutputText__17dLytAutoExplain_cFv = .text:0x8012C760; // type:function size:0x4
initializeState_Out__17dLytAutoExplain_cFv = .text:0x8012C770; // type:function size:0x48
executeState_Out__17dLytAutoExplain_cFv = .text:0x8012C7C0; // type:function size:0x78
finalizeState_Out__17dLytAutoExplain_cFv = .text:0x8012C840; // type:function size:0x4
build__17dLytAutoExplain_cFPQ23d2d10ResAccIf_cPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x8012C850; // type:function size:0x194
remove__17dLytAutoExplain_cFv = .text:0x8012C9F0; // type:function size:0x50
execute__17dLytAutoExplain_cFv = .text:0x8012CA40; // type:function size:0xA8
draw__17dLytAutoExplain_cFv = .text:0x8012CAF0; // type:function size:0x14
open__17dLytAutoExplain_cFv = .text:0x8012CB10; // type:function size:0xC
isOpening__17dLytAutoExplain_cCFv = .text:0x8012CB20; // type:function size:0x4C
close__17dLytAutoExplain_cFv = .text:0x8012CB70; // type:function size:0xC
isClosing__17dLytAutoExplain_cCFv = .text:0x8012CB80; // type:function size:0x4C
setText__17dLytAutoExplain_cFPCw = .text:0x8012CBD0; // type:function size:0x7C
checkSomethingMeter__17dLytAutoExplain_cFv = .text:0x8012CC50; // type:function size:0xF4
vt_0x30__17dLytAutoExplain_cFv = .text:0x8012CD50; // type:function size:0x8
__sinit_\d_lyt_auto_explain_cpp = .text:0x8012CD60; // type:function size:0x338
__dt__32sFStateID_c<17dLytAutoExplain_c>Fv = .text:0x8012D0A0; // type:function size:0x58
isSameName__32sFStateID_c<17dLytAutoExplain_c>CFPCc = .text:0x8012D100; // type:function size:0x88
fn_8012D190 = .text:0x8012D190; // type:function size:0x68
fn_8012D200 = .text:0x8012D200; // type:function size:0x108
projectForMapMaybe = .text:0x8012D310; // type:function size:0x18
@@ -32317,8 +32317,8 @@ lbl_8051E5E0 = .data:0x8051E5E0; // type:object size:0x10
lbl_8051E5F0 = .data:0x8051E5F0; // type:object size:0x10
lbl_8051E600 = .data:0x8051E600; // type:object size:0x10
lbl_8051E610 = .data:0x8051E610; // type:object size:0x18
lbl_8051E628 = .data:0x8051E628; // type:object size:0x164
lbl_8051E78C = .data:0x8051E78C; // type:object size:0x34
__vt__17dLytAutoCaption_c = .data:0x8051E628; // type:object size:0x44
__vt__32sFStateID_c<17dLytAutoCaption_c> = .data:0x8051E78C; // type:object size:0x34
lbl_8051E7C0 = .data:0x8051E7C0; // type:object size:0x18 data:string
lbl_8051E7D8 = .data:0x8051E7D8; // type:object size:0xC
lbl_8051E7E4 = .data:0x8051E7E4; // type:object size:0x1C
@@ -32328,8 +32328,8 @@ lbl_8051E828 = .data:0x8051E828; // type:object size:0x10
lbl_8051E838 = .data:0x8051E838; // type:object size:0x10
lbl_8051E848 = .data:0x8051E848; // type:object size:0x10
lbl_8051E858 = .data:0x8051E858; // type:object size:0x18
lbl_8051E870 = .data:0x8051E870; // type:object size:0x164
lbl_8051E9D4 = .data:0x8051E9D4; // type:object size:0x34
__vt__17dLytAutoExplain_c = .data:0x8051E870; // type:object size:0x44
__vt__32sFStateID_c<17dLytAutoExplain_c> = .data:0x8051E9D4; // type:object size:0x34
lbl_8051EA08 = .data:0x8051EA08; // type:object size:0xA0 data:4byte
lbl_8051EAA8 = .data:0x8051EAA8; // type:object size:0x38
lbl_8051EAE0 = .data:0x8051EAE0; // type:object size:0x14
@@ -48878,16 +48878,16 @@ LytSimpleWindow__STATE_INVISIBLE = .bss:0x805AF100; // type:object size:0x40 dat
LytSimpleWindow__STATE_IN = .bss:0x805AF140; // type:object size:0x40 data:4byte
LytSimpleWindow__STATE_OUTPUT_TEXT = .bss:0x805AF180; // type:object size:0x40 data:4byte
LytSimpleWindow__STATE_OUT = .bss:0x805AF1C0; // type:object size:0x30 data:4byte
lbl_805AF1F0 = .bss:0x805AF1F0; // type:object size:0x10
LytAutoCaption__STATE_INVISIBLE = .bss:0x805AF200; // type:object size:0x40 data:4byte
LytAutoCaption__STATE_IN = .bss:0x805AF240; // type:object size:0x40 data:4byte
LytAutoCaption__STATE_OUTPUT_TEXT = .bss:0x805AF280; // type:object size:0x40 data:4byte
LytAutoCaption__STATE_OUT = .bss:0x805AF2C0; // type:object size:0x30 data:4byte
lbl_805AF2F0 = .bss:0x805AF2F0; // type:object size:0x10
LytAutoExplain__STATE_INVISIBLE = .bss:0x805AF300; // type:object size:0x40 data:4byte
LytAutoExplain__STATE_IN = .bss:0x805AF340; // type:object size:0x40 data:4byte
LytAutoExplain__STATE_OUTPUT_TEXT = .bss:0x805AF380; // type:object size:0x40 data:4byte
LytAutoExplain__STATE_OUT = .bss:0x805AF3C0; // type:object size:0x30 data:4byte
lbl_805AF1F0 = .bss:0x805AF1F0; // type:object size:0xC
StateID_Invisible__17dLytAutoCaption_c = .bss:0x805AF200; // type:object size:0x30 data:4byte
StateID_In__17dLytAutoCaption_c = .bss:0x805AF240; // type:object size:0x30 data:4byte
StateID_OutputText__17dLytAutoCaption_c = .bss:0x805AF280; // type:object size:0x30 data:4byte
StateID_Out__17dLytAutoCaption_c = .bss:0x805AF2C0; // type:object size:0x30 data:4byte
lbl_805AF2F0 = .bss:0x805AF2F0; // type:object size:0xC
StateID_Invisible__17dLytAutoExplain_c = .bss:0x805AF300; // type:object size:0x30 data:4byte
StateID_In__17dLytAutoExplain_c = .bss:0x805AF340; // type:object size:0x30 data:4byte
StateID_OutputText__17dLytAutoExplain_c = .bss:0x805AF380; // type:object size:0x30 data:4byte
StateID_Out__17dLytAutoExplain_c = .bss:0x805AF3C0; // type:object size:0x30 data:4byte
lbl_805AF3F0 = .bss:0x805AF3F0; // type:object size:0x10
StateID_RenderingWait__16dLytMapCapture_c = .bss:0x805AF400; // type:object size:0x40 data:4byte
StateID_RenderingWaitStep2__16dLytMapCapture_c = .bss:0x805AF440; // type:object size:0x30 data:4byte
+7 -3
View File
@@ -45,7 +45,7 @@ public:
u8 symbolToFontIdx(s32 s);
void setStringArg(const wchar_t *arg, s32 index);
static s32 getNumLines(s32 arg);
static s32 getMaxNumLines(s32 arg);
static void getTextCommand(wchar_t _0xe, const wchar_t *src, u8 *outCmdLen, s32 *outCmd, wchar_t **outEndPtr);
static void process0xFCommand(wchar_t _0xf, const wchar_t *src, s32 *outCmd);
@@ -68,6 +68,10 @@ public:
s32 tickPauseFrame();
s32 tick0x830();
s32 getNumLinesMaybe() const {
return mCommandInsert;
}
private:
/* 0x004 */ dTextBox_c *field_0x004;
/* 0x008 */ wchar_t field_0x008[4][256];
@@ -121,8 +125,8 @@ private:
/* 0x90D */ u8 field_0x90D;
/* 0x90E */ u8 field_0x90E;
/* 0x90F */ u8 field_0x90F[4];
/* 0x914 */ f32 field_0x914[0x32];
/* 0x9DC */ s32 mCommandInsert;
/* 0x914 */ f32 field_0x914[0x32]; // Maybe width for each individual line
/* 0x9DC */ s32 mCommandInsert; // Maybe number of lines
/* 0x9E0 */ wchar_t mStringArgs[8][64];
/* 0xDE0 */ u8 field_0xDE0[0xEE0 - 0xDE0];
/* 0xEE0 */ u8 field_0xEE0;
+45
View File
@@ -0,0 +1,45 @@
#ifndef D_LYT_AUTO_CAPTION_H
#define D_LYT_AUTO_CAPTION_H
#include "d/d_tag_processor.h"
#include "d/lyt/d2d.h"
#include "d/lyt/d_textbox.h"
#include "d/lyt/msg_window/d_lyt_msg_window_common.h"
#include "nw4r/lyt/lyt_pane.h"
#include "s/s_State.hpp"
class dLytAutoCaption_c : public dLytMsgWindowSubtype {
public:
/* vt 0x08 */ virtual ~dLytAutoCaption_c() {}
/* vt 0x0C */ virtual void draw() override;
/* vt 0x10 */ virtual bool build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) override;
/* vt 0x14 */ virtual bool remove() override;
/* vt 0x18 */ virtual bool execute() override;
/* vt 0x1C */ virtual void open() override;
/* vt 0x20 */ virtual bool isOpening() const override;
/* vt 0x24 */ virtual void close() override;
/* vt 0x28 */ virtual bool isClosing() const override;
/* vt 0x2C */ virtual bool setText(const wchar_t *text) override;
/* vt 0x30 */ virtual dTextBox_c *vt_0x30() override {
return mpTextboxes[0];
}
STATE_FUNC_DECLARE(dLytAutoCaption_c, Invisible);
STATE_FUNC_DECLARE(dLytAutoCaption_c, In);
STATE_FUNC_DECLARE(dLytAutoCaption_c, OutputText);
STATE_FUNC_DECLARE(dLytAutoCaption_c, Out);
private:
static bool checkSomethingMeter();
/* 0x010 */ UI_STATE_MGR_DECLARE(dLytAutoCaption_c);
/* 0x068 */ d2d::ResAccIf_c mResAcc;
/* 0x3C4 */ d2d::LytBase_c mLyt;
/* 0x44C */ d2d::AnmGroup_c mAnm[4];
/* 0x54C */ dTextBox_c *mpTextboxes[2];
/* 0x554 */ nw4r::lyt::Pane *mpPane;
/* 0x558 */ dTagProcessor_c *mpTagProcessor;
/* 0x55C */ bool mShouldBeOpen;
};
#endif
+45
View File
@@ -0,0 +1,45 @@
#ifndef D_LYT_AUTO_EXPLAIN_H
#define D_LYT_AUTO_EXPLAIN_H
#include "d/d_tag_processor.h"
#include "d/lyt/d2d.h"
#include "d/lyt/d_textbox.h"
#include "d/lyt/msg_window/d_lyt_msg_window_common.h"
#include "nw4r/lyt/lyt_pane.h"
#include "s/s_State.hpp"
class dLytAutoExplain_c : public dLytMsgWindowSubtype {
public:
/* vt 0x08 */ virtual ~dLytAutoExplain_c() {}
/* vt 0x0C */ virtual void draw() override;
/* vt 0x10 */ virtual bool build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) override;
/* vt 0x14 */ virtual bool remove() override;
/* vt 0x18 */ virtual bool execute() override;
/* vt 0x1C */ virtual void open() override;
/* vt 0x20 */ virtual bool isOpening() const override;
/* vt 0x24 */ virtual void close() override;
/* vt 0x28 */ virtual bool isClosing() const override;
/* vt 0x2C */ virtual bool setText(const wchar_t *text) override;
/* vt 0x30 */ virtual dTextBox_c *vt_0x30() override {
return mpTextboxes[0];
}
STATE_FUNC_DECLARE(dLytAutoExplain_c, Invisible);
STATE_FUNC_DECLARE(dLytAutoExplain_c, In);
STATE_FUNC_DECLARE(dLytAutoExplain_c, OutputText);
STATE_FUNC_DECLARE(dLytAutoExplain_c, Out);
private:
static bool checkSomethingMeter();
/* 0x010 */ UI_STATE_MGR_DECLARE(dLytAutoExplain_c);
/* 0x068 */ d2d::ResAccIf_c mResAcc;
/* 0x3C4 */ d2d::LytBase_c mLyt;
/* 0x44C */ d2d::AnmGroup_c mAnm[3];
/* 0x50C */ dTextBox_c *mpTextboxes[2];
/* 0x514 */ nw4r::lyt::Pane *mpPane;
/* 0x518 */ dTagProcessor_c *mpTagProcessor;
/* 0x51C */ bool mShouldBeOpen;
};
#endif
+1 -1
View File
@@ -24,7 +24,7 @@ public:
return mLyt.getName();
}
u8 isDoneOut() const {
bool isDoneOut() const {
return mIsDoneOut;
}
+1
View File
@@ -44,6 +44,7 @@ public:
// TODO
}
s32 fn_800AF6B0(const wchar_t *, dTagProcessor_c *tagProcessor);
void fn_800AF930(const wchar_t *);
void fn_800AF540(const wchar_t *text, dTagProcessor_c *tagProcessor, ...);
@@ -9,7 +9,7 @@ class dLytMsgWindowSubtype : public m2d::Base_c {
public:
/* vt 0x08 */ virtual ~dLytMsgWindowSubtype() {}
// vt 0x0C = m2d::Base_c::draw
/* vt 0x10 */ virtual bool build(void *unk, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor);
/* vt 0x10 */ virtual bool build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor);
/* vt 0x14 */ virtual bool remove();
/* vt 0x18 */ virtual bool execute();
/* vt 0x1C */ virtual void open();
@@ -18,9 +18,15 @@ public:
/* vt 0x28 */ virtual bool isClosing() const;
/* vt 0x2C */ virtual bool setText(const wchar_t *text);
/* vt 0x30 */ virtual dTextBox_c *vt_0x30();
/* vt 0x34 */ virtual void vt_0x34();
/* vt 0x38 */ virtual void vt_0x38(bool b);
/* vt 0x3C */ virtual u8 vt_0x3C() const;
/* vt 0x34 */ virtual bool vt_0x34() {
return true;
}
/* vt 0x38 */ virtual bool vt_0x38(bool b) {
return true;
}
/* vt 0x3C */ virtual bool vt_0x3C() const {
return true;
}
/* vt 0x40 */ virtual bool vt_0x40() const;
};
@@ -13,7 +13,8 @@ class dLytMsgWindowStone_c : public dLytMsgWindowSubtype {
public:
/* vt 0x08 */ virtual ~dLytMsgWindowStone_c() {}
/* vt 0x0C */ virtual void draw() override;
/* vt 0x10 */ virtual bool build(void *unk, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) override;
/* vt 0x10 */ virtual bool
build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) override;
/* vt 0x14 */ virtual bool remove() override;
/* vt 0x18 */ virtual bool execute() override;
/* vt 0x1C */ virtual void open() override;
@@ -24,14 +25,14 @@ public:
/* vt 0x30 */ virtual dTextBox_c *vt_0x30() override {
return mpTextboxes[0];
}
/* vt 0x34 */ virtual void vt_0x34() override {
mCommon.requestIn();
/* vt 0x34 */ virtual bool vt_0x34() override {
return mBtn.requestIn();
}
/* vt 0x38 */ virtual void vt_0x38(bool b) override {
mCommon.requestOut(b);
/* vt 0x38 */ virtual bool vt_0x38(bool b) override {
return mBtn.requestOut(b);
}
/* vt 0x3C */ virtual u8 vt_0x3C() const override {
return mCommon.isDoneOut();
/* vt 0x3C */ virtual bool vt_0x3C() const override {
return mBtn.isDoneOut();
}
STATE_FUNC_DECLARE(dLytMsgWindowStone_c, Invisible);
@@ -49,7 +50,7 @@ private:
/* 0x528 */ dTextBox_c *mpTextboxes[3];
/* 0x530 */ nw4r::lyt::Pane *mpPanes[2];
/* 0x538 */ dTagProcessor_c *mpTagProcessor;
/* 0x53C */ dLytCommonABtn_c mCommon;
/* 0x53C */ dLytCommonABtn_c mBtn;
/* 0x6EC */ bool mShouldBeOpen;
};
@@ -13,7 +13,8 @@ class dLytMsgWindowWood_c : public dLytMsgWindowSubtype {
public:
/* vt 0x08 */ virtual ~dLytMsgWindowWood_c() {}
/* vt 0x0C */ virtual void draw() override;
/* vt 0x10 */ virtual bool build(void *unk, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) override;
/* vt 0x10 */ virtual bool
build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) override;
/* vt 0x14 */ virtual bool remove() override;
/* vt 0x18 */ virtual bool execute() override;
/* vt 0x1C */ virtual void open() override;
@@ -24,14 +25,14 @@ public:
/* vt 0x30 */ virtual dTextBox_c *vt_0x30() override {
return mpTextboxes[0];
}
/* vt 0x34 */ virtual void vt_0x34() override {
mCommon.requestIn();
/* vt 0x34 */ virtual bool vt_0x34() override {
return mBtn.requestIn();
}
/* vt 0x38 */ virtual void vt_0x38(bool b) override {
mCommon.requestOut(b);
/* vt 0x38 */ virtual bool vt_0x38(bool b) override {
return mBtn.requestOut(b);
}
/* vt 0x3C */ virtual u8 vt_0x3C() const override {
return mCommon.isDoneOut();
/* vt 0x3C */ virtual bool vt_0x3C() const override {
return mBtn.isDoneOut();
}
STATE_FUNC_DECLARE(dLytMsgWindowWood_c, Invisible);
@@ -49,7 +50,7 @@ private:
/* 0x528 */ dTextBox_c *mpTextboxes[2];
/* 0x530 */ nw4r::lyt::Pane *mpPanes[2];
/* 0x538 */ dTagProcessor_c *mpTagProcessor;
/* 0x53C */ dLytCommonABtn_c mCommon;
/* 0x53C */ dLytCommonABtn_c mBtn;
/* 0x6EC */ bool mShouldBeOpen;
};
+4
View File
@@ -77,6 +77,10 @@ public:
mpTagProcessor = pTagProcessor;
}
const wchar_t *GetString() const {
return mTextBuf;
}
virtual ~TextBox();
NW4R_UT_RTTI_DECL(TextBox);
virtual void DrawSelf(const DrawInfo &drawInfo); // at 0x18
+7 -7
View File
@@ -407,12 +407,12 @@ void dTagProcessor_c::eventFlowTextProcessingRelated(
}
} else {
if (textBox != nullptr) {
if (c == 10) {
if (c == '\n') {
*writePtr = c;
src++;
writePtr++;
mCommandInsert++;
s32 i10 = getNumLines(field_0x90C);
s32 i10 = getMaxNumLines(field_0x90C);
if (mCommandInsert % i10 == 0) {
float1 = fn_800B8040(0, field_0x90C);
float1 *= textBox->getMyScale();
@@ -628,11 +628,11 @@ void dTagProcessor_c::fn_800B4FF0(nw4r::ut::Rect *rect, nw4r::ut::PrintContext<w
int arg = ptr[0];
nw4r::lyt::Size textBoxSize = field_0x004->GetSize();
nw4r::lyt::Size fontSize = field_0x004->GetFontSize();
int i1 = getNumLines(field_0x90C);
int i1 = getMaxNumLines(field_0x90C);
if (arg % i1 == 0 && field_0x90C != 31 && field_0x90C != 8) {
int u = 0;
int v = 0;
for (int i = arg; i < arg + getNumLines(field_0x90C) && i < 0x32; i++) {
for (int i = arg; i < arg + getMaxNumLines(field_0x90C) && i < 0x32; i++) {
f32 f6 = getFloat(i);
if (f6 > 0.0f) {
v++;
@@ -650,7 +650,7 @@ void dTagProcessor_c::fn_800B4FF0(nw4r::ut::Rect *rect, nw4r::ut::PrintContext<w
// completely hidden in the Ghidra decompiler, apparently
// because the results aren't used?
if (u < getNumLines(field_0x90C)) {
if (u < getMaxNumLines(field_0x90C)) {
f32 w1 = fontSize.width * 0.5f;
f32 h1 = fontSize.height * 0.5f;
if (!(w1 < UnkTextThing::getField0x758())) {
@@ -660,7 +660,7 @@ void dTagProcessor_c::fn_800B4FF0(nw4r::ut::Rect *rect, nw4r::ut::PrintContext<w
h1 = UnkTextThing::getField0x758();
}
f32 f7 = (fontSize.height + field_0x004->GetLineSpace()) * 0.5f * (getNumLines(field_0x90C) - v);
f32 f7 = (fontSize.height + field_0x004->GetLineSpace()) * 0.5f * (getMaxNumLines(field_0x90C) - v);
field_0x814 = ctx->writer->GetCursorY();
field_0x818 = ctx->y;
field_0xEE4 = 1;
@@ -983,7 +983,7 @@ f32 dTagProcessor_c::fn_800B8040(s8 factor, u32 windowType) {
}
}
s32 dTagProcessor_c::getNumLines(s32 arg) {
s32 dTagProcessor_c::getMaxNumLines(s32 arg) {
if (arg >= 6 && arg < 8) {
return 4;
} else if (arg == 9) {
+176
View File
@@ -0,0 +1,176 @@
#include "d/lyt/d_lyt_auto_caption.h"
#include "common.h"
#include "d/d_tag_processor.h"
#include "d/lyt/d2d.h"
#include "d/lyt/d_textbox.h"
#include "s/s_State.hpp"
STATE_DEFINE(dLytAutoCaption_c, Invisible);
STATE_DEFINE(dLytAutoCaption_c, In);
STATE_DEFINE(dLytAutoCaption_c, OutputText);
STATE_DEFINE(dLytAutoCaption_c, Out);
static const d2d::LytBrlanMapping brlanMap[] = {
{ "autoCaption_00_in.brlan", "G_inOut_00"},
{ "autoCaption_00_out.brlan", "G_inOut_00"},
{ "autoCaption_00_loop.brlan", "G_loop_00"},
{"autoCaption_00_textLine.brlan", "G_textLine_00"},
};
#define AUTO_CAPTION_ANIM_IN 0
#define AUTO_CAPTION_ANIM_OUT 1
#define AUTO_CAPTION_ANIM_LOOP 2
#define AUTO_CAPTION_ANIM_TEXTLINE 3
#define AUTO_CAPTION_NUM_ANIMS 4
static const char *sPanes[] = {
"N_inOutAll_00",
};
static const char *sTextBoxes[] = {
"T_textBox_00",
"T_textBoxS_00",
};
static const char *sGroupName = "G_ref_00";
void dLytAutoCaption_c::initializeState_Invisible() {}
void dLytAutoCaption_c::executeState_Invisible() {
if (mShouldBeOpen) {
mStateMgr.changeState(StateID_In);
}
}
void dLytAutoCaption_c::finalizeState_Invisible() {}
void dLytAutoCaption_c::initializeState_In() {
s32 unk = mpTextboxes[0]->fn_800AF6B0(mpTextboxes[0]->GetString(), mpTagProcessor);
f32 lineWidth = mpTextboxes[0]->GetLineWidth(nullptr);
f32 frame = 0.0f;
if (lineWidth <= 226.0f) {
if (unk > 1) {
frame = 1.0f;
}
} else if (unk > 1) {
frame = 3.0f;
} else {
frame = 2.0f;
}
mAnm[AUTO_CAPTION_ANIM_TEXTLINE].setAnimEnable(true);
mAnm[AUTO_CAPTION_ANIM_TEXTLINE].setFrame(frame);
mLyt.calc();
mAnm[AUTO_CAPTION_ANIM_TEXTLINE].setAnimEnable(false);
mAnm[AUTO_CAPTION_ANIM_IN].setAnimEnable(true);
mAnm[AUTO_CAPTION_ANIM_IN].setFrame(0.0f);
}
void dLytAutoCaption_c::executeState_In() {
if (mAnm[AUTO_CAPTION_ANIM_IN].isEndReached()) {
mAnm[AUTO_CAPTION_ANIM_IN].setAnimEnable(false);
mStateMgr.changeState(StateID_OutputText);
}
}
void dLytAutoCaption_c::finalizeState_In() {}
void dLytAutoCaption_c::initializeState_OutputText() {}
void dLytAutoCaption_c::executeState_OutputText() {
if (!mShouldBeOpen) {
mStateMgr.changeState(StateID_Out);
}
}
void dLytAutoCaption_c::finalizeState_OutputText() {}
void dLytAutoCaption_c::initializeState_Out() {
mAnm[AUTO_CAPTION_ANIM_OUT].setAnimEnable(true);
mAnm[AUTO_CAPTION_ANIM_OUT].setFrame(0.0f);
}
void dLytAutoCaption_c::executeState_Out() {
if (mAnm[AUTO_CAPTION_ANIM_OUT].isEndReached()) {
mAnm[AUTO_CAPTION_ANIM_OUT].setAnimEnable(false);
mStateMgr.changeState(StateID_Invisible);
}
}
void dLytAutoCaption_c::finalizeState_Out() {}
bool dLytAutoCaption_c::build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
mLyt.setResAcc(resAcc1);
mLyt.build("autoCaption_00.brlyt", nullptr);
mLyt.setPriority(0x8A);
for (int i = 0; i < AUTO_CAPTION_NUM_ANIMS; i++) {
mAnm[i].init(brlanMap[i].mFile, resAcc1, mLyt.getLayout(), brlanMap[i].mName);
mAnm[i].bind(false);
mAnm[i].setAnimEnable(false);
}
mpPane = mLyt.findPane(sPanes[0]);
for (int i = 0; i < 2; i++) {
mpTextboxes[i] = mLyt.getTextBox(sTextBoxes[i]);
}
mpTagProcessor = tagProcessor;
mShouldBeOpen = false;
mAnm[AUTO_CAPTION_ANIM_LOOP].setAnimEnable(true);
mAnm[AUTO_CAPTION_ANIM_OUT].setAnimEnable(true);
mAnm[AUTO_CAPTION_ANIM_OUT].setToEnd();
mLyt.calc();
mAnm[AUTO_CAPTION_ANIM_OUT].setAnimEnable(false);
mStateMgr.changeState(StateID_Invisible);
return true;
}
bool dLytAutoCaption_c::remove() {
for (int i = 0; i < AUTO_CAPTION_NUM_ANIMS; i++) {
mAnm[i].remove();
}
return true;
}
bool dLytAutoCaption_c::execute() {
mStateMgr.executeState();
for (int i = 0; i < AUTO_CAPTION_NUM_ANIMS; i++) {
if (mAnm[i].isEnabled()) {
mAnm[i].play();
}
}
mLyt.calc();
return true;
}
void dLytAutoCaption_c::draw() {
mLyt.draw();
}
void dLytAutoCaption_c::open() {
mShouldBeOpen = true;
}
bool dLytAutoCaption_c::isOpening() const {
return !(*mStateMgr.getStateID() == StateID_In);
}
void dLytAutoCaption_c::close() {
mShouldBeOpen = false;
}
bool dLytAutoCaption_c::isClosing() const {
return !(*mStateMgr.getStateID() == StateID_Out);
}
bool dLytAutoCaption_c::setText(const wchar_t *text) {
mpTextboxes[0]->SetTagProcessor(mpTagProcessor);
mpTextboxes[1]->SetTagProcessor(mpTagProcessor);
mpTextboxes[0]->fn_800AF930(text);
mpTextboxes[1]->fn_800AF930(text);
return true;
}
bool dLytAutoCaption_c::checkSomethingMeter() {
// TODO - too many dependencies on dLytMeter
return false;
}
+169
View File
@@ -0,0 +1,169 @@
#include "d/lyt/d_lyt_auto_explain.h"
#include "common.h"
#include "d/d_tag_processor.h"
#include "d/lyt/d2d.h"
#include "d/lyt/d_textbox.h"
#include "s/s_State.hpp"
STATE_DEFINE(dLytAutoExplain_c, Invisible);
STATE_DEFINE(dLytAutoExplain_c, In);
STATE_DEFINE(dLytAutoExplain_c, OutputText);
STATE_DEFINE(dLytAutoExplain_c, Out);
static const d2d::LytBrlanMapping brlanMap[] = {
{ "autoMessage_00_in.brlan", "G_inOut_00"},
{ "autoMessage_00_out.brlan", "G_inOut_00"},
{"autoMessage_00_line.brlan", "G_line_00"},
};
#define AUTO_EXPLAIN_ANIM_IN 0
#define AUTO_EXPLAIN_ANIM_OUT 1
#define AUTO_EXPLAIN_ANIM_TEXTLINE 2
#define AUTO_EXPLAIN_NUM_ANIMS 3
static const char *sPanes[] = {
"N_inOutAll_00",
};
static const char *sTextBoxes[] = {
"T_autoMsg_00",
"T_autoMsgS_00",
};
static const char *sGroupName = "G_ref_00";
void dLytAutoExplain_c::initializeState_Invisible() {}
void dLytAutoExplain_c::executeState_Invisible() {
if (mShouldBeOpen) {
mStateMgr.changeState(StateID_In);
}
}
void dLytAutoExplain_c::finalizeState_Invisible() {}
extern "C" u8 fn_80054F30();
void dLytAutoExplain_c::initializeState_In() {
int numLines = mpTagProcessor->getNumLinesMaybe() - 1;
if (fn_80054F30() != 0 && numLines == 3) {
numLines = 2;
}
mAnm[AUTO_EXPLAIN_ANIM_TEXTLINE].setAnimEnable(true);
mAnm[AUTO_EXPLAIN_ANIM_TEXTLINE].setFrame(numLines);
mLyt.calc();
mAnm[AUTO_EXPLAIN_ANIM_TEXTLINE].setAnimEnable(false);
mAnm[AUTO_EXPLAIN_ANIM_IN].setAnimEnable(true);
mAnm[AUTO_EXPLAIN_ANIM_IN].setFrame(0.0f);
}
void dLytAutoExplain_c::executeState_In() {
if (mAnm[AUTO_EXPLAIN_ANIM_IN].isEndReached()) {
mAnm[AUTO_EXPLAIN_ANIM_IN].setAnimEnable(false);
mStateMgr.changeState(StateID_OutputText);
}
}
void dLytAutoExplain_c::finalizeState_In() {}
void dLytAutoExplain_c::initializeState_OutputText() {}
void dLytAutoExplain_c::executeState_OutputText() {
if (!mShouldBeOpen) {
mStateMgr.changeState(StateID_Out);
}
}
void dLytAutoExplain_c::finalizeState_OutputText() {}
void dLytAutoExplain_c::initializeState_Out() {
mAnm[AUTO_EXPLAIN_ANIM_OUT].setAnimEnable(true);
mAnm[AUTO_EXPLAIN_ANIM_OUT].setFrame(0.0f);
}
void dLytAutoExplain_c::executeState_Out() {
if (mAnm[AUTO_EXPLAIN_ANIM_OUT].isEndReached()) {
mAnm[AUTO_EXPLAIN_ANIM_OUT].setAnimEnable(false);
mStateMgr.changeState(StateID_Invisible);
}
}
void dLytAutoExplain_c::finalizeState_Out() {}
bool dLytAutoExplain_c::build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
mLyt.setResAcc(resAcc1);
mLyt.build("autoMessage_00.brlyt", nullptr);
mLyt.setPriority(0x8A);
for (int i = 0; i < AUTO_EXPLAIN_NUM_ANIMS; i++) {
mAnm[i].init(brlanMap[i].mFile, resAcc1, mLyt.getLayout(), brlanMap[i].mName);
mAnm[i].bind(false);
mAnm[i].setAnimEnable(false);
}
mpPane = mLyt.findPane(sPanes[0]);
for (int i = 0; i < 2; i++) {
mpTextboxes[i] = mLyt.getTextBox(sTextBoxes[i]);
mpTextboxes[i]->SetTextPositionH(0);
// mpTextboxes[i]->SetTextPositionV(0);
}
mpTagProcessor = tagProcessor;
mShouldBeOpen = false;
mAnm[AUTO_EXPLAIN_ANIM_OUT].setAnimEnable(true);
mAnm[AUTO_EXPLAIN_ANIM_OUT].setToEnd();
mLyt.calc();
mAnm[AUTO_EXPLAIN_ANIM_OUT].setAnimEnable(false);
mStateMgr.changeState(StateID_Invisible);
return true;
}
bool dLytAutoExplain_c::remove() {
for (int i = 0; i < AUTO_EXPLAIN_NUM_ANIMS; i++) {
mAnm[i].remove();
}
return true;
}
bool dLytAutoExplain_c::execute() {
mStateMgr.executeState();
for (int i = 0; i < AUTO_EXPLAIN_NUM_ANIMS; i++) {
if (mAnm[i].isEnabled()) {
mAnm[i].play();
}
}
mLyt.calc();
return true;
}
void dLytAutoExplain_c::draw() {
mLyt.draw();
}
void dLytAutoExplain_c::open() {
mShouldBeOpen = true;
}
bool dLytAutoExplain_c::isOpening() const {
return !(*mStateMgr.getStateID() == StateID_In);
}
void dLytAutoExplain_c::close() {
mShouldBeOpen = false;
}
bool dLytAutoExplain_c::isClosing() const {
return !(*mStateMgr.getStateID() == StateID_Out);
}
bool dLytAutoExplain_c::setText(const wchar_t *text) {
mpTextboxes[0]->SetTagProcessor(mpTagProcessor);
mpTextboxes[1]->SetTagProcessor(mpTagProcessor);
mpTextboxes[0]->fn_800AF540(text, mpTagProcessor, 0);
mpTextboxes[1]->fn_800AF540(text, mpTagProcessor, 0);
return true;
}
bool dLytAutoExplain_c::checkSomethingMeter() {
// TODO - too many dependencies on dLytMeter
return false;
}
@@ -38,7 +38,7 @@ static const char *sTextBoxes[] = {
static const char *sGroupName = "G_ref_00";
bool dLytMsgWindowStone_c::build(void *unk, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
bool dLytMsgWindowStone_c::build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
mLyt.setResAcc(resAcc);
mLyt.build("sekibanWindow_00.brlyt", nullptr);
mLyt.setPriority(0x8A);
@@ -69,8 +69,8 @@ bool dLytMsgWindowStone_c::build(void *unk, d2d::ResAccIf_c *resAcc, dTagProcess
mpTextboxes[2]->set0x1F6(1);
for (int i = 0; i < 1; i++) {
mNodes[i].mpLytPane = &mCommon;
mCommon.build(resAcc);
mNodes[i].mpLytPane = &mBtn;
mBtn.build(resAcc);
mSubpaneList.PushBack(&mNodes[i]);
}
@@ -101,7 +101,7 @@ bool dLytMsgWindowStone_c::remove() {
for (int i = 0; i < 1; i++) {
mNodes[i].mpLytPane->remove();
}
mCommon.remove();
mBtn.remove();
for (int i = 0; i < SEKIBAN_NUM_ANIMS; i++) {
mAnm[i].remove();
}
@@ -109,7 +109,7 @@ bool dLytMsgWindowStone_c::remove() {
}
void dLytMsgWindowStone_c::initializeState_Invisible() {
mCommon.resetToInvisble();
mBtn.resetToInvisble();
}
void dLytMsgWindowStone_c::executeState_Invisible() {
if (mShouldBeOpen) {
@@ -37,7 +37,7 @@ static const char *sTextBoxes[] = {
static const char *sGroupName = "G_ref_00";
bool dLytMsgWindowWood_c::build(void *unk, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
bool dLytMsgWindowWood_c::build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
mLyt.setResAcc(resAcc);
mLyt.build("kanbanWindow_00.brlyt", nullptr);
mLyt.setPriority(0x8A);
@@ -67,8 +67,8 @@ bool dLytMsgWindowWood_c::build(void *unk, d2d::ResAccIf_c *resAcc, dTagProcesso
mpTextboxes[1]->set0x1F6(1);
for (int i = 0; i < 1; i++) {
mNodes[i].mpLytPane = &mCommon;
mCommon.build(resAcc);
mNodes[i].mpLytPane = &mBtn;
mBtn.build(resAcc);
mSubpaneList.PushBack(&mNodes[i]);
}
@@ -99,7 +99,7 @@ bool dLytMsgWindowWood_c::remove() {
for (int i = 0; i < 1; i++) {
mNodes[i].mpLytPane->remove();
}
mCommon.remove();
mBtn.remove();
for (int i = 0; i < KANBAN_NUM_ANIMS; i++) {
mAnm[i].remove();
}
@@ -107,7 +107,7 @@ bool dLytMsgWindowWood_c::remove() {
}
void dLytMsgWindowWood_c::initializeState_Invisible() {
mCommon.resetToInvisble();
mBtn.resetToInvisble();
}
void dLytMsgWindowWood_c::executeState_Invisible() {
if (mShouldBeOpen) {