d_lyt_pause largely done

This commit is contained in:
robojumper
2025-08-10 02:47:49 +02:00
parent e08d120f0b
commit de8cc996c6
17 changed files with 1253 additions and 208 deletions
+1
View File
@@ -1538,6 +1538,7 @@ d/lyt/d_lyt_pause.cpp:
.text start:0x8027E9E0 end:0x80282678 align:16
.ctors start:0x804DB85C end:0x804DB860
.data start:0x80537310 end:0x80537970
.sdata start:0x80573B48 end:0x80573B58
.sbss start:0x80575938 end:0x80575948
.bss start:0x805B5940 end:0x805B5D40
+150 -148
View File
@@ -309,12 +309,12 @@ setAngleT2__11FileManagerFs = .text:0x8000AFD0; // type:function size:0x30
getAngleT2__11FileManagerFv = .text:0x8000B000; // type:function size:0x44
setAngleT3__11FileManagerFs = .text:0x8000B050; // type:function size:0x30
getAngleT3__11FileManagerFv = .text:0x8000B080; // type:function size:0x44
setPouchData__11FileManagerFiUl = .text:0x8000B0D0; // type:function size:0x54
getPouchData__11FileManagerFi = .text:0x8000B130; // type:function size:0x74
setPouchItem__11FileManagerFi7ITEM_ID = .text:0x8000B1B0; // type:function size:0x6C
setPouchData__11FileManagerFlUl = .text:0x8000B0D0; // type:function size:0x54
getPouchData__11FileManagerFl = .text:0x8000B130; // type:function size:0x74
setPouchItem__11FileManagerFl7ITEM_ID = .text:0x8000B1B0; // type:function size:0x6C
getPouchItem__11FileManagerFl = .text:0x8000B220; // type:function size:0x24
setPouchUpperData__11FileManagerFii = .text:0x8000B250; // type:function size:0x6C
getPouchUpperData__11FileManagerFi = .text:0x8000B2C0; // type:function size:0x24
setPouchUpperData__11FileManagerFll = .text:0x8000B250; // type:function size:0x6C
getPouchUpperData__11FileManagerFl = .text:0x8000B2C0; // type:function size:0x24
setItemCheckData__11FileManagerFUlUl = .text:0x8000B2F0; // type:function size:0x70
getItemCheckData__11FileManagerFUl = .text:0x8000B360; // type:function size:0x88
setItemCheckItem__11FileManagerFUl7ITEM_ID = .text:0x8000B3F0; // type:function size:0x84
@@ -4288,11 +4288,11 @@ fn_800C4270 = .text:0x800C4270; // type:function size:0x54
fn_800C42D0 = .text:0x800C42D0; // type:function size:0xF8
fn_800C43D0 = .text:0x800C43D0; // type:function size:0x48
fn_800C4420 = .text:0x800C4420; // type:function size:0x5C
ActorLytBase__ctor = .text:0x800C4480; // type:function size:0x54
ActorLytBase__dtor = .text:0x800C44E0; // type:function size:0x94
ActorLytBase__allocateLytWork1Heap = .text:0x800C4580; // type:function size:0xB4
__ct__10dLytBase_cFv = .text:0x800C4480; // type:function size:0x54
__dt__10dLytBase_cFv = .text:0x800C44E0; // type:function size:0x94
allocateLytWork1Heap__10dLytBase_cFPCcb = .text:0x800C4580; // type:function size:0xB4
fn_800C4640 = .text:0x800C4640; // type:function size:0x8
fn_800C4650 = .text:0x800C4650; // type:function size:0x14
removeLyt__10dLytBase_cFv = .text:0x800C4650; // type:function size:0x14
fn_800C4670 = .text:0x800C4670; // type:function size:0x20
fn_800C4690 = .text:0x800C4690; // type:function size:0x14
fn_800C46B0 = .text:0x800C46B0; // type:function size:0xB0
@@ -8796,7 +8796,7 @@ drawDirectly__17dLytPauseDisp00_cFv = .text:0x8015A7B0; // type:function size:0x
requestIn__17dLytPauseDisp00_cFb = .text:0x8015A7D0; // type:function size:0x14
requestOut__17dLytPauseDisp00_cFb = .text:0x8015A7F0; // type:function size:0x14
requestSelect__17dLytPauseDisp00_cFv = .text:0x8015A810; // type:function size:0x10
requestRing__17dLytPauseDisp00_cFv = .text:0x8015A820; // type:function size:0x10
requestRingToggle__17dLytPauseDisp00_cFv = .text:0x8015A820; // type:function size:0x10
requestUnselect__17dLytPauseDisp00_cFv = .text:0x8015A830; // type:function size:0x10
requestSelectGuide__17dLytPauseDisp00_cFv = .text:0x8015A840; // type:function size:0x68
requestSelectMpls__17dLytPauseDisp00_cFv = .text:0x8015A8B0; // type:function size:0x28
@@ -11312,8 +11312,8 @@ CsGame__draw = .text:0x801BF520; // type:function size:0xBC
fn_801BF5E0__9dCsGame_cCFv = .text:0x801BF5E0; // type:function size:0x44
fn_801BF630 = .text:0x801BF630; // type:function size:0x288
setNextCursorType__9dCsGame_cFQ39dCsGame_c15lytItemCursor_c12CursorType_e = .text:0x801BF8C0; // type:function size:0x10
fn_801BF8D0 = .text:0x801BF8D0; // type:function size:0x8
fn_801BF8E0 = .text:0x801BF8E0; // type:function size:0x18
setCursorTypeNoneMaybe__9dCsGame_cFv = .text:0x801BF8D0; // type:function size:0x8
setCursorTypePointer__9dCsGame_cFv = .text:0x801BF8E0; // type:function size:0x18
fn_801BF900 = .text:0x801BF900; // type:function size:0x8
fn_801BF910 = .text:0x801BF910; // type:function size:0x58
CsGame__startDrawBow = .text:0x801BF970; // type:function size:0x58
@@ -14801,90 +14801,90 @@ fn_8027E8C0 = .text:0x8027E8C0; // type:function size:0x88
fn_8027E950 = .text:0x8027E950; // type:function size:0x30
fn_8027E980 = .text:0x8027E980; // type:function size:0x30
fn_8027E9B0 = .text:0x8027E9B0; // type:function size:0x30
fn_8027E9E0 = .text:0x8027E9E0; // type:function size:0xB8
fn_8027EAA0 = .text:0x8027EAA0; // type:function size:0xA4
fn_8027EB50 = .text:0x8027EB50; // type:function size:0xA0
fn_8027EBF0 = .text:0x8027EBF0; // type:function size:0x6C
fn_8027EC60 = .text:0x8027EC60; // type:function size:0x58
fn_8027ECC0 = .text:0x8027ECC0; // type:function size:0x128
fn_8027EDF0 = .text:0x8027EDF0; // type:function size:0x10
fn_8027EE00 = .text:0x8027EE00; // type:function size:0x198
fn_8027EFA0 = .text:0x8027EFA0; // type:function size:0x70
fn_8027F010 = .text:0x8027F010; // type:function size:0x10
fn_8027F020 = .text:0x8027F020; // type:function size:0x80
fn_8027F0A0 = .text:0x8027F0A0; // type:function size:0x24
__ct__15dLytPauseMain_cFv = .text:0x8027E9E0; // type:function size:0xB8
__dt__54sFStateMgr_c<15dLytPauseMain_c,20sStateMethodUsr_FI_c>Fv = .text:0x8027EAA0; // type:function size:0xA4
__dt__84sStateMgr_c<15dLytPauseMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8027EB50; // type:function size:0xA0
__dt__31sFStateFct_c<15dLytPauseMain_c>Fv = .text:0x8027EBF0; // type:function size:0x6C
__dt__28sFState_c<15dLytPauseMain_c>Fv = .text:0x8027EC60; // type:function size:0x58
build__15dLytPauseMain_cFv = .text:0x8027ECC0; // type:function size:0x128
changeState__84sStateMgr_c<15dLytPauseMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x8027EDF0; // type:function size:0x10
remove__15dLytPauseMain_cFv = .text:0x8027EE00; // type:function size:0x198
execute__15dLytPauseMain_cFv = .text:0x8027EFA0; // type:function size:0x70
executeState__84sStateMgr_c<15dLytPauseMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8027F010; // type:function size:0x10
draw__15dLytPauseMain_cFv = .text:0x8027F020; // type:function size:0x80
drawDirectly__15dLytPauseMain_cFv = .text:0x8027F0A0; // type:function size:0x24
fn_8027F0D0 = .text:0x8027F0D0; // type:function size:0x4
fn_8027F0E0 = .text:0x8027F0E0; // type:function size:0x14
fn_8027F100 = .text:0x8027F100; // type:function size:0xC
fn_8027F110 = .text:0x8027F110; // type:function size:0xC
fn_8027F120 = .text:0x8027F120; // type:function size:0xC
fn_8027F130 = .text:0x8027F130; // type:function size:0xC
fn_8027F140 = .text:0x8027F140; // type:function size:0xC
fn_8027F150 = .text:0x8027F150; // type:function size:0x34
fn_8027F190 = .text:0x8027F190; // type:function size:0x14
fn_8027F1B0 = .text:0x8027F1B0; // type:function size:0x2C
fn_8027F1E0 = .text:0x8027F1E0; // type:function size:0x98
fn_8027F280 = .text:0x8027F280; // type:function size:0x4
fn_8027F290 = .text:0x8027F290; // type:function size:0x10
fn_8027F2A0 = .text:0x8027F2A0; // type:function size:0x134
fn_8027F3E0 = .text:0x8027F3E0; // type:function size:0x10
fn_8027F3F0 = .text:0x8027F3F0; // type:function size:0x18
fn_8027F410 = .text:0x8027F410; // type:function size:0x128
fn_8027F540 = .text:0x8027F540; // type:function size:0x4
fn_8027F550 = .text:0x8027F550; // type:function size:0x78
fn_8027F5D0 = .text:0x8027F5D0; // type:function size:0x7C
fn_8027F650 = .text:0x8027F650; // type:function size:0x4
fn_8027F660 = .text:0x8027F660; // type:function size:0x11C
fn_8027F780 = .text:0x8027F780; // type:function size:0x20C
fn_8027F990 = .text:0x8027F990; // type:function size:0x18
fn_8027F9B0 = .text:0x8027F9B0; // type:function size:0x20
fn_8027F9D0 = .text:0x8027F9D0; // type:function size:0x9C
fn_8027FA70 = .text:0x8027FA70; // type:function size:0x4
fn_8027FA80 = .text:0x8027FA80; // type:function size:0xC
fn_8027FA90 = .text:0x8027FA90; // type:function size:0x78
fn_8027FB10 = .text:0x8027FB10; // type:function size:0x4
fn_8027FB20 = .text:0x8027FB20; // type:function size:0x20
fn_8027FB40 = .text:0x8027FB40; // type:function size:0xE0
fn_8027FC20 = .text:0x8027FC20; // type:function size:0x4
LytPauseDisp__ctor = .text:0x8027FC30; // type:function size:0x30
LytPauseDisp__ctorCont = .text:0x8027FC60; // type:function size:0x124
fn_8027FD90 = .text:0x8027FD90; // type:function size:0xB4
fn_8027FE50 = .text:0x8027FE50; // type:function size:0x58
fn_8027FEB0 = .text:0x8027FEB0; // type:function size:0x6C
fn_8027FF20 = .text:0x8027FF20; // type:function size:0xA0
fn_8027FFC0 = .text:0x8027FFC0; // type:function size:0xA4
fn_80280070 = .text:0x80280070; // type:function size:0x17C
fn_802801F0 = .text:0x802801F0; // type:function size:0x64
fn_80280260 = .text:0x80280260; // type:function size:0x10
fn_80280270 = .text:0x80280270; // type:function size:0x78
fn_802802F0 = .text:0x802802F0; // type:function size:0x7C
fn_80280370 = .text:0x80280370; // type:function size:0x10
fn_80280380 = .text:0x80280380; // type:function size:0x10
fn_80280390 = .text:0x80280390; // type:function size:0x68
fn_80280400 = .text:0x80280400; // type:function size:0x9C
fn_802804A0 = .text:0x802804A0; // type:function size:0xC4
fn_80280570 = .text:0x80280570; // type:function size:0x4
fn_80280580 = .text:0x80280580; // type:function size:0x4
fn_80280590 = .text:0x80280590; // type:function size:0x78
fn_80280610 = .text:0x80280610; // type:function size:0x4
fn_80280620 = .text:0x80280620; // type:function size:0x74
fn_802806A0 = .text:0x802806A0; // type:function size:0x2DC
fn_80280980 = .text:0x80280980; // type:function size:0xC
fn_80280990 = .text:0x80280990; // type:function size:0x60
fn_802809F0 = .text:0x802809F0; // type:function size:0x70
fn_80280A60 = .text:0x80280A60; // type:function size:0x4
fn_80280A70 = .text:0x80280A70; // type:function size:0x38
fn_80280AB0 = .text:0x80280AB0; // type:function size:0xF8
fn_80280BB0 = .text:0x80280BB0; // type:function size:0x4
fn_80280BC0 = .text:0x80280BC0; // type:function size:0x44
fn_80280C10 = .text:0x80280C10; // type:function size:0xF4
fn_80280D10 = .text:0x80280D10; // type:function size:0xC
fn_80280D20 = .text:0x80280D20; // type:function size:0x4
fn_80280D30 = .text:0x80280D30; // type:function size:0x64
fn_80280DA0 = .text:0x80280DA0; // type:function size:0x4
fn_80280DB0 = .text:0x80280DB0; // type:function size:0x10
fn_80280DC0 = .text:0x80280DC0; // type:function size:0x40
fn_80280E00 = .text:0x80280E00; // type:function size:0x20
requestIn__15dLytPauseMain_cFv = .text:0x8027F100; // type:function size:0xC
requestOut__15dLytPauseMain_cFv = .text:0x8027F110; // type:function size:0xC
requestChange__15dLytPauseMain_cFv = .text:0x8027F120; // type:function size:0xC
requestSelect__15dLytPauseMain_cFv = .text:0x8027F130; // type:function size:0xC
requestRingToggle__15dLytPauseMain_cFv = .text:0x8027F140; // type:function size:0xC
hasSelection__15dLytPauseMain_cCFv = .text:0x8027F150; // type:function size:0x34
updateTitle__15dLytPauseMain_cFv = .text:0x8027F190; // type:function size:0x14
initializeState_None__15dLytPauseMain_cFv = .text:0x8027F1B0; // type:function size:0x2C
executeState_None__15dLytPauseMain_cFv = .text:0x8027F1E0; // type:function size:0x98
finalizeState_None__15dLytPauseMain_cFv = .text:0x8027F280; // type:function size:0x4
initializeState_In__15dLytPauseMain_cFv = .text:0x8027F290; // type:function size:0x10
executeState_In__15dLytPauseMain_cFv = .text:0x8027F2A0; // type:function size:0x134
finalizeState_In__15dLytPauseMain_cFv = .text:0x8027F3E0; // type:function size:0x10
initializeState_Wait__15dLytPauseMain_cFv = .text:0x8027F3F0; // type:function size:0x18
executeState_Wait__15dLytPauseMain_cFv = .text:0x8027F410; // type:function size:0x128
finalizeState_Wait__15dLytPauseMain_cFv = .text:0x8027F540; // type:function size:0x4
initializeState_Change__15dLytPauseMain_cFv = .text:0x8027F550; // type:function size:0x78
executeState_Change__15dLytPauseMain_cFv = .text:0x8027F5D0; // type:function size:0x7C
finalizeState_Change__15dLytPauseMain_cFv = .text:0x8027F650; // type:function size:0x4
initializeState_Select__15dLytPauseMain_cFv = .text:0x8027F660; // type:function size:0x11C
executeState_Select__15dLytPauseMain_cFv = .text:0x8027F780; // type:function size:0x20C
finalizeState_Select__15dLytPauseMain_cFv = .text:0x8027F990; // type:function size:0x18
initializeState_Ring__15dLytPauseMain_cFv = .text:0x8027F9B0; // type:function size:0x20
executeState_Ring__15dLytPauseMain_cFv = .text:0x8027F9D0; // type:function size:0x9C
finalizeState_Ring__15dLytPauseMain_cFv = .text:0x8027FA70; // type:function size:0x4
initializeState_GetDemo__15dLytPauseMain_cFv = .text:0x8027FA80; // type:function size:0xC
executeState_GetDemo__15dLytPauseMain_cFv = .text:0x8027FA90; // type:function size:0x78
finalizeState_GetDemo__15dLytPauseMain_cFv = .text:0x8027FB10; // type:function size:0x4
initializeState_Out__15dLytPauseMain_cFv = .text:0x8027FB20; // type:function size:0x20
executeState_Out__15dLytPauseMain_cFv = .text:0x8027FB40; // type:function size:0xE0
finalizeState_Out__15dLytPauseMain_cFv = .text:0x8027FC20; // type:function size:0x4
dLytPauseMgr_c_classInit__Fv = .text:0x8027FC30; // type:function size:0x30
__ct__14dLytPauseMgr_cFv = .text:0x8027FC60; // type:function size:0x124
__dt__15dLytPauseMain_cFv = .text:0x8027FD90; // type:function size:0xB4
__dt__27sFState_c<14dLytPauseMgr_c>Fv = .text:0x8027FE50; // type:function size:0x58
__dt__30sFStateFct_c<14dLytPauseMgr_c>Fv = .text:0x8027FEB0; // type:function size:0x6C
__dt__83sStateMgr_c<14dLytPauseMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8027FF20; // type:function size:0xA0
__dt__53sFStateMgr_c<14dLytPauseMgr_c,20sStateMethodUsr_FI_c>Fv = .text:0x8027FFC0; // type:function size:0xA4
__dt__14dLytPauseMgr_cFv = .text:0x80280070; // type:function size:0x17C
create__14dLytPauseMgr_cFv = .text:0x802801F0; // type:function size:0x64
changeState__83sStateMgr_c<14dLytPauseMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x80280260; // type:function size:0x10
doDelete__14dLytPauseMgr_cFv = .text:0x80280270; // type:function size:0x78
execute__14dLytPauseMgr_cFv = .text:0x802802F0; // type:function size:0x7C
executeState__83sStateMgr_c<14dLytPauseMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80280370; // type:function size:0x10
getStateID__83sStateMgr_c<14dLytPauseMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80280380; // type:function size:0x10
draw__14dLytPauseMgr_cFv = .text:0x80280390; // type:function size:0x68
initializeState_None__14dLytPauseMgr_cFv = .text:0x80280400; // type:function size:0x9C
executeState_None__14dLytPauseMgr_cFv = .text:0x802804A0; // type:function size:0xC4
finalizeState_None__14dLytPauseMgr_cFv = .text:0x80280570; // type:function size:0x4
initializeState_In__14dLytPauseMgr_cFv = .text:0x80280580; // type:function size:0x4
executeState_In__14dLytPauseMgr_cFv = .text:0x80280590; // type:function size:0x78
finalizeState_In__14dLytPauseMgr_cFv = .text:0x80280610; // type:function size:0x4
initializeState_Wait__14dLytPauseMgr_cFv = .text:0x80280620; // type:function size:0x74
executeState_Wait__14dLytPauseMgr_cFv = .text:0x802806A0; // type:function size:0x2DC
finalizeState_Wait__14dLytPauseMgr_cFv = .text:0x80280980; // type:function size:0xC
initializeState_Change__14dLytPauseMgr_cFv = .text:0x80280990; // type:function size:0x60
executeState_Change__14dLytPauseMgr_cFv = .text:0x802809F0; // type:function size:0x70
finalizeState_Change__14dLytPauseMgr_cFv = .text:0x80280A60; // type:function size:0x4
initializeState_Select__14dLytPauseMgr_cFv = .text:0x80280A70; // type:function size:0x38
executeState_Select__14dLytPauseMgr_cFv = .text:0x80280AB0; // type:function size:0xF8
finalizeState_Select__14dLytPauseMgr_cFv = .text:0x80280BB0; // type:function size:0x4
initializeState_Ring__14dLytPauseMgr_cFv = .text:0x80280BC0; // type:function size:0x44
executeState_Ring__14dLytPauseMgr_cFv = .text:0x80280C10; // type:function size:0xF4
finalizeState_Ring__14dLytPauseMgr_cFv = .text:0x80280D10; // type:function size:0xC
initializeState_GetDemo__14dLytPauseMgr_cFv = .text:0x80280D20; // type:function size:0x4
executeState_GetDemo__14dLytPauseMgr_cFv = .text:0x80280D30; // type:function size:0x64
finalizeState_GetDemo__14dLytPauseMgr_cFv = .text:0x80280DA0; // type:function size:0x4
initializeState_Out__14dLytPauseMgr_cFv = .text:0x80280DB0; // type:function size:0x10
executeState_Out__14dLytPauseMgr_cFv = .text:0x80280DC0; // type:function size:0x40
finalizeState_Out__14dLytPauseMgr_cFv = .text:0x80280E00; // type:function size:0x20
fn_80280E20 = .text:0x80280E20; // type:function size:0x10
isStateWait__14dLytPauseMgr_cCFv = .text:0x80280E30; // type:function size:0x44
fn_80280E80 = .text:0x80280E80; // type:function size:0xB0
@@ -14892,47 +14892,47 @@ fn_80280F30 = .text:0x80280F30; // type:function size:0x9C
getArrowBounding__14dLytPauseMgr_cCFi = .text:0x80280FD0; // type:function size:0x14
setSelectedArrowBounding__14dLytPauseMgr_cCFi = .text:0x80280FF0; // type:function size:0xC
setSelection__14dLytPauseMgr_cFQ214dLytPauseMgr_c15SelectionType_eUsb = .text:0x80281000; // type:function size:0x3C
shouldShowGearWheel = .text:0x80281040; // type:function size:0x15C
fn_802811A0 = .text:0x802811A0; // type:function size:0x74
fn_80281220 = .text:0x80281220; // type:function size:0x134
fn_80281360 = .text:0x80281360; // type:function size:0x68
fn_802813D0 = .text:0x802813D0; // type:function size:0x34
fn_80281410 = .text:0x80281410; // type:function size:0xC8
fn_802814E0 = .text:0x802814E0; // type:function size:0xC
fn_802814F0 = .text:0x802814F0; // type:function size:0x60
fn_80281550 = .text:0x80281550; // type:function size:0xC
fn_80281560 = .text:0x80281560; // type:function size:0x60
fn_802815C0 = .text:0x802815C0; // type:function size:0xC
fn_802815D0 = .text:0x802815D0; // type:function size:0x1C
fn_802815F0 = .text:0x802815F0; // type:function size:0x1C
fn_80281610 = .text:0x80281610; // type:function size:0x1C
fn_80281630 = .text:0x80281630; // type:function size:0x1C
fn_80281650 = .text:0x80281650; // type:function size:0x1C
fn_80281670 = .text:0x80281670; // type:function size:0x1C
fn_80281690 = .text:0x80281690; // type:function size:0x10
fn_802816A0 = .text:0x802816A0; // type:function size:0x10
fn_802816B0 = .text:0x802816B0; // type:function size:0x10
fn_802816C0 = .text:0x802816C0; // type:function size:0x10
fn_802816D0 = .text:0x802816D0; // type:function size:0x10
fn_802816E0 = .text:0x802816E0; // type:function size:0x10
fn_802816F0 = .text:0x802816F0; // type:function size:0x10
fn_80281700 = .text:0x80281700; // type:function size:0x10
fn_80281710 = .text:0x80281710; // type:function size:0x10
fn_80281720 = .text:0x80281720; // type:function size:0x10
fn_80281730 = .text:0x80281730; // type:function size:0x10
fn_80281740 = .text:0x80281740; // type:function size:0x10
fn_80281750 = .text:0x80281750; // type:function size:0x10
fn_80281760 = .text:0x80281760; // type:function size:0x30
fn_80281790 = .text:0x80281790; // type:function size:0x30
fn_802817C0 = .text:0x802817C0; // type:function size:0x30
fn_802817F0 = .text:0x802817F0; // type:function size:0x30
fn_80281820 = .text:0x80281820; // type:function size:0x30
fn_80281850 = .text:0x80281850; // type:function size:0x30
LytPause__initStates = .text:0x80281880; // type:function size:0xC14
LytPauseMain__dtor = .text:0x802824A0; // type:function size:0x58
LytPauseMgr__dtor = .text:0x80282500; // type:function size:0x58
fn_80282560 = .text:0x80282560; // type:function size:0x88
fn_802825F0 = .text:0x802825F0; // type:function size:0x88
checkSelectRing__14dLytPauseMgr_cFv = .text:0x80281040; // type:function size:0x15C
build__14dLytPauseMgr_cFv = .text:0x802811A0; // type:function size:0x74
checkChangeGesture__14dLytPauseMgr_cFv = .text:0x80281220; // type:function size:0x134
saveDispFlag__14dLytPauseMgr_cFv = .text:0x80281360; // type:function size:0x68
saveTabFlag__14dLytPauseMgr_cFv = .text:0x802813D0; // type:function size:0x34
checkRing__14dLytPauseMgr_cFv = .text:0x80281410; // type:function size:0xC8
setSelectHand__14dLytPauseMgr_cFff = .text:0x802814E0; // type:function size:0xC
build__30sFStateFct_c<14dLytPauseMgr_c>FRC12sStateIDIf_c = .text:0x802814F0; // type:function size:0x60
dispose__30sFStateFct_c<14dLytPauseMgr_c>FRP10sStateIf_c = .text:0x80281550; // type:function size:0xC
build__31sFStateFct_c<15dLytPauseMain_c>FRC12sStateIDIf_c = .text:0x80281560; // type:function size:0x60
dispose__31sFStateFct_c<15dLytPauseMain_c>FRP10sStateIf_c = .text:0x802815C0; // type:function size:0xC
initialize__27sFState_c<14dLytPauseMgr_c>Fv = .text:0x802815D0; // type:function size:0x1C
execute__27sFState_c<14dLytPauseMgr_c>Fv = .text:0x802815F0; // type:function size:0x1C
finalize__27sFState_c<14dLytPauseMgr_c>Fv = .text:0x80281610; // type:function size:0x1C
initialize__28sFState_c<15dLytPauseMain_c>Fv = .text:0x80281630; // type:function size:0x1C
execute__28sFState_c<15dLytPauseMain_c>Fv = .text:0x80281650; // type:function size:0x1C
finalize__28sFState_c<15dLytPauseMain_c>Fv = .text:0x80281670; // type:function size:0x1C
initializeState__83sStateMgr_c<14dLytPauseMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80281690; // type:function size:0x10
finalizeState__83sStateMgr_c<14dLytPauseMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802816A0; // type:function size:0x10
refreshState__83sStateMgr_c<14dLytPauseMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802816B0; // type:function size:0x10
getState__83sStateMgr_c<14dLytPauseMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802816C0; // type:function size:0x10
getNewStateID__83sStateMgr_c<14dLytPauseMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802816D0; // type:function size:0x10
getOldStateID__83sStateMgr_c<14dLytPauseMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802816E0; // type:function size:0x10
initializeState__84sStateMgr_c<15dLytPauseMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802816F0; // type:function size:0x10
finalizeState__84sStateMgr_c<15dLytPauseMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80281700; // type:function size:0x10
refreshState__84sStateMgr_c<15dLytPauseMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80281710; // type:function size:0x10
getState__84sStateMgr_c<15dLytPauseMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80281720; // type:function size:0x10
getNewStateID__84sStateMgr_c<15dLytPauseMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80281730; // type:function size:0x10
getStateID__84sStateMgr_c<15dLytPauseMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80281740; // type:function size:0x10
getOldStateID__84sStateMgr_c<15dLytPauseMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80281750; // type:function size:0x10
finalizeState__30sFStateID_c<15dLytPauseMain_c>CFR15dLytPauseMain_c = .text:0x80281760; // type:function size:0x30
executeState__30sFStateID_c<15dLytPauseMain_c>CFR15dLytPauseMain_c = .text:0x80281790; // type:function size:0x30
initializeState__30sFStateID_c<15dLytPauseMain_c>CFR15dLytPauseMain_c = .text:0x802817C0; // type:function size:0x30
finalizeState__29sFStateID_c<14dLytPauseMgr_c>CFR14dLytPauseMgr_c = .text:0x802817F0; // type:function size:0x30
executeState__29sFStateID_c<14dLytPauseMgr_c>CFR14dLytPauseMgr_c = .text:0x80281820; // type:function size:0x30
initializeState__29sFStateID_c<14dLytPauseMgr_c>CFR14dLytPauseMgr_c = .text:0x80281850; // type:function size:0x30
__sinit_\d_lyt_pause_cpp = .text:0x80281880; // type:function size:0xC14
__dt__30sFStateID_c<15dLytPauseMain_c>Fv = .text:0x802824A0; // type:function size:0x58
__dt__29sFStateID_c<14dLytPauseMgr_c>Fv = .text:0x80282500; // type:function size:0x58
isSameName__29sFStateID_c<14dLytPauseMgr_c>CFPCc = .text:0x80282560; // type:function size:0x88
isSameName__30sFStateID_c<15dLytPauseMain_c>CFPCc = .text:0x802825F0; // type:function size:0x88
__ct__14dLytGameOver_cFv = .text:0x80282680; // type:function size:0x22C
__dt__53sFStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c>Fv = .text:0x802828B0; // type:function size:0xA4
__dt__83sStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80282960; // type:function size:0xA0
@@ -34479,7 +34479,9 @@ lbl_80525A18 = .data:0x80525A18; // type:object size:0x10 data:string
jumptable_80525A28 = .data:0x80525A28; // type:object size:0x20 scope:local
lbl_80525A48 = .data:0x80525A48; // type:object size:0x10
jumptable_80525A58 = .data:0x80525A58; // type:object size:0x54 scope:local
lbl_80525AAC = .data:0x80525AAC; // type:object size:0x28
lbl_80525AAC = .data:0x80525AAC; // type:object size:0xC data:string
lbl_80525AB8 = .data:0x80525AB8; // type:object size:0x10
lbl_80525AC8 = .data:0x80525AC8; // type:object size:0xC
__vt__17dLytPauseDisp00_c = .data:0x80525AD4; // type:object size:0xC
__vt__56sFStateMgr_c<17dLytPauseDisp00_c,20sStateMethodUsr_FI_c> = .data:0x80525AE0; // type:object size:0x30
__vt__86sStateMgr_c<17dLytPauseDisp00_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80525B10; // type:object size:0x30
@@ -36218,18 +36220,18 @@ lbl_805372A8 = .data:0x805372A8; // type:object size:0x68
g_profile_LYT_PAUSE = .data:0x80537310; // type:object size:0xC
lbl_8053731C = .data:0x8053731C; // type:object size:0xC
lbl_80537328 = .data:0x80537328; // type:object size:0x10
LytPauseDisp__vtable = .data:0x80537338; // type:object size:0x50
lbl_80537388 = .data:0x80537388; // type:object size:0x30
lbl_805373B8 = .data:0x805373B8; // type:object size:0x30
lbl_805373E8 = .data:0x805373E8; // type:object size:0x18
lbl_80537400 = .data:0x80537400; // type:object size:0x18
lbl_80537418 = .data:0x80537418; // type:object size:0x10
lbl_80537428 = .data:0x80537428; // type:object size:0x30
lbl_80537458 = .data:0x80537458; // type:object size:0x30
lbl_80537488 = .data:0x80537488; // type:object size:0x18
lbl_805374A0 = .data:0x805374A0; // type:object size:0x464
lbl_80537904 = .data:0x80537904; // type:object size:0x34
lbl_80537938 = .data:0x80537938; // type:object size:0x38
__vt__14dLytPauseMgr_c = .data:0x80537338; // type:object size:0x50
__vt__53sFStateMgr_c<14dLytPauseMgr_c,20sStateMethodUsr_FI_c> = .data:0x80537388; // type:object size:0x30
__vt__83sStateMgr_c<14dLytPauseMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805373B8; // type:object size:0x30
__vt__30sFStateFct_c<14dLytPauseMgr_c> = .data:0x805373E8; // type:object size:0x18
__vt__27sFState_c<14dLytPauseMgr_c> = .data:0x80537400; // type:object size:0x18
__vt__15dLytPauseMain_c = .data:0x80537418; // type:object size:0x10
__vt__54sFStateMgr_c<15dLytPauseMain_c,20sStateMethodUsr_FI_c> = .data:0x80537428; // type:object size:0x30
__vt__84sStateMgr_c<15dLytPauseMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80537458; // type:object size:0x30
__vt__31sFStateFct_c<15dLytPauseMain_c> = .data:0x80537488; // type:object size:0x18
__vt__28sFState_c<15dLytPauseMain_c> = .data:0x805374A0; // type:object size:0x464
__vt__29sFStateID_c<14dLytPauseMgr_c> = .data:0x80537904; // type:object size:0x34
__vt__30sFStateID_c<15dLytPauseMain_c> = .data:0x80537938; // type:object size:0x38
lbl_80537970 = .data:0x80537970; // type:object size:0x1C
lbl_8053798C = .data:0x8053798C; // type:object size:0x10
lbl_8053799C = .data:0x8053799C; // type:object size:0x18
+11 -1
View File
@@ -317,10 +317,14 @@ public:
mCursorActive = val;
}
// TODO - maybe a system for overriding cursor type
void setNextCursorType(CursorType_e cs) {
mNextCursor = 1;
mNextCursor = true;
mNextCursorType = cs;
}
void offNextCursor() {
mNextCursor = false;
}
void changeState(const sFStateID_c<lytItemCursor_c> &newState);
@@ -361,6 +365,12 @@ public:
};
void setNextCursorType(lytItemCursor_c::CursorType_e);
void setCursorTypeNoneMaybe();
void setCursorTypePointer();
void offNextCursor() {
mCursor.offNextCursor();
}
static dCsGame_c *sInstance;
+1 -1
View File
@@ -52,7 +52,7 @@ inline s32 getFSStickNavDirection() {
void init();
void calc();
void setNavEnabled(bool navEnabled, bool autoReturnToPointerNav);
void setNavEnabled(bool navEnabled, bool disableAutoReturnToPointerNav);
// I really wish these returned enums but the codegen requires not-enums
s32 getFSStickDirection();
+25
View File
@@ -0,0 +1,25 @@
#ifndef D_LYT_BASE_H
#define D_LYT_BASE_H
#include "common.h"
#include "d/d_base.h"
#include "m/m_allocator.h"
class dLytBase_c : public dBase_c {
public:
dLytBase_c();
virtual ~dLytBase_c();
/* 0x4C */ virtual bool build();
protected:
bool allocateLytWork1Heap(const char *name, bool exp);
void removeLyt();
private:
/* 0x68 */ mHeapAllocator_c mAllocator;
/* 0x84 */ UNKWORD field_0x84;
/* 0x88 */ u8 field_0x88;
};
#endif
+10 -2
View File
@@ -29,6 +29,14 @@ public:
bool requestIn();
bool requestOut();
void unk() {
field_0x6B8 = mTargetedBounding;
}
void setBackwards(bool b) {
mBackwards = b;
}
private:
void setTranslate(const Vec *);
bool fn_80168760();
@@ -52,8 +60,8 @@ private:
/* 0x6C8 */ bool mInRequested;
/* 0x6C9 */ bool mOutRequested;
/* 0x6CA */ u8 field_0x6CA;
/* 0x6CB */ u8 field_0x6CB;
/* 0x6CC */ u8 field_0x6CC;
/* 0x6CB */ bool mVisible;
/* 0x6CC */ bool mBackwards;
};
#endif
+13
View File
@@ -25,6 +25,14 @@ public:
return field_0x15C2C;
}
void setField_0x15C2C(s32 value) {
field_0x15C2C = value;
}
void setPauseDisp00Tab(s32 tab) {
mPauseDisp00Tab = tab;
}
s32 getPauseDisp00Tab() const {
return mPauseDisp00Tab;
}
@@ -41,6 +49,10 @@ public:
return field_0x15C67;
}
bool getField_0x15C68() const {
return field_0x15C68;
}
STATE_FUNC_DECLARE(dLytControlGame_c, Normal);
STATE_FUNC_DECLARE(dLytControlGame_c, Pause_SetRes);
STATE_FUNC_DECLARE(dLytControlGame_c, Pause_SyncRes);
@@ -71,6 +83,7 @@ private:
/* 0x15C64 */ u16 mItemCountForPauseDemo;
/* 0x15C66 */ u8 field_0x15C66;
/* 0x15C67 */ bool field_0x15C67;
/* 0x15C68 */ bool field_0x15C68;
static dLytControlGame_c *sInstance;
};
+117 -21
View File
@@ -1,12 +1,84 @@
#ifndef D_LYT_PAUSE_H
#define D_LYT_PAUSE_H
#include "common.h"
#include "d/lyt/d2d.h"
#include "d/lyt/d_lyt_base.h"
#include "egg/gfx/eggCpuTexture.h"
#include "egg/gfx/eggTextureBuffer.h"
#include "nw4r/lyt/lyt_bounding.h"
#include "s/s_State.hpp"
class dLytPauseMgr_c {
class dLytPauseBack_c;
class dLytPauseInfo_c;
class dLytPauseText_c;
class dLytCommonArrow_c;
class dLytPauseDisp00_c;
class dLytPauseDisp01_c;
class dLytPauseMain_c {
public:
dLytPauseMain_c();
virtual ~dLytPauseMain_c() {}
bool build();
bool remove();
bool execute();
bool draw();
void drawDirectly();
void requestIn();
void requestOut();
void requestChange();
void requestSelect();
void requestRingToggle();
bool hasSelection() const;
void updateTitle();
bool getField_0x63() const {
return field_0x63;
}
private:
STATE_FUNC_DECLARE(dLytPauseMain_c, None);
STATE_FUNC_DECLARE(dLytPauseMain_c, In);
STATE_FUNC_DECLARE(dLytPauseMain_c, Wait);
STATE_FUNC_DECLARE(dLytPauseMain_c, Change);
STATE_FUNC_DECLARE(dLytPauseMain_c, Select);
STATE_FUNC_DECLARE(dLytPauseMain_c, Ring);
STATE_FUNC_DECLARE(dLytPauseMain_c, GetDemo);
STATE_FUNC_DECLARE(dLytPauseMain_c, Out);
/* 0x04 */ UI_STATE_MGR_DECLARE(dLytPauseMain_c);
/* 0x40 */ dLytPauseBack_c *mpPauseBack;
/* 0x44 */ dLytPauseDisp00_c *mpDisp00;
/* 0x48 */ dLytPauseDisp01_c *mpDisp01;
/* 0x4C */ dLytPauseInfo_c *mpPauseInfo;
/* 0x50 */ dLytPauseText_c *mpPauseText;
/* 0x54 */ dLytCommonArrow_c *mpArrow;
/* 0x58 */ s32 mTimer;
/* 0x5C */ s32 mStep;
/* 0x60 */ u8 mPartStateChangeFlags;
/* 0x61 */ bool mInRequest;
/* 0x62 */ bool mOutRequest;
/* 0x63 */ bool field_0x63;
/* 0x64 */ bool mChangeRequest;
/* 0x65 */ bool mSelectRequest;
/* 0x66 */ bool mRingToggleRequest;
};
class dLytPauseMgr_c : public dLytBase_c {
public:
dLytPauseMgr_c();
~dLytPauseMgr_c();
/* 0x08 */ virtual int create() override;
/* 0x14 */ virtual int doDelete() override;
/* 0x20 */ virtual int execute() override;
/* 0x2C */ virtual int draw() override;
/* 0x4C */ virtual bool build() override;
static dLytPauseMgr_c *GetInstance() {
return sInstance;
}
@@ -43,10 +115,18 @@ public:
return field_0x083B;
}
bool getField_0x083C() const {
return field_0x083C;
}
void setField_0x083C(bool b) {
field_0x083C = b;
}
bool getField_0x083D() const {
return field_0x083D;
}
void setField_0x083D(bool b) {
field_0x083D = b;
}
@@ -55,6 +135,10 @@ public:
return field_0x083E;
}
void setField_0x083E(bool b) {
field_0x083E = b;
}
bool getField_0x0840() const {
return field_0x0840;
}
@@ -101,44 +185,56 @@ public:
nw4r::lyt::Bounding *getArrowBounding(int idx) const;
void setSelectedArrowBounding(int idx) const;
static void setSelectHand(f32 rotation, f32 length);
static f32 sDisp00ArrowRotation;
static f32 sDisp00ArrowLength;
private:
bool checkSelectRing();
bool checkChangeGesture();
bool checkRing();
void saveDispFlag();
void saveTabFlag();
STATE_FUNC_DECLARE(dLytPauseMgr_c, None);
STATE_FUNC_DECLARE(dLytPauseMgr_c, In);
STATE_FUNC_DECLARE(dLytPauseMgr_c, Wait);
STATE_FUNC_DECLARE(dLytPauseMgr_c, Change);
STATE_FUNC_DECLARE(dLytPauseMgr_c, Select);
STATE_FUNC_DECLARE(dLytPauseMgr_c, Ring);
STATE_FUNC_DECLARE(dLytPauseMgr_c, GetDemo);
STATE_FUNC_DECLARE(dLytPauseMgr_c, Out);
static dLytPauseMgr_c *sInstance;
/* 0x0000 */ u8 _0x0000[0x00C8 - 0x0000];
/* 0x008C */ UI_STATE_MGR_DECLARE(dLytPauseMgr_c);
/* 0x00C8 */ d2d::ResAccIf_c mResAcc1;
/* 0x0438 */ d2d::ResAccIf_c mResAcc2;
/* 0x07A8 */ dLytPauseMain_c mMain;
/* 0x07A8 */ u8 _0x0438[0x0814 - 0x07A8];
/* 0x0814 */ EGG::CpuTexture *mpBgTexture;
/* 0x0810 */ EGG::TextureBuffer *mpTexture0x0810;
/* 0x0814 */ EGG::TextureBuffer *mpBgTexture;
/* 0x0818 */ SelectionType_e mCurrentSelectionType;
/* 0x081C */ u8 _0x081C[0x0820 - 0x081C];
/* 0x081C */ SelectionType_e mPrevSelectionType;
/* 0x0820 */ s32 mCurrentDisp00Tab;
/* 0x0824 */ u8 _0x0824[0x082C - 0x0824];
/* 0x0824 */ UNKWORD field_0x0824;
/* 0x0828 */ UNKWORD field_0x0828;
/* 0x082C */ u16 mCurrentSelectionId;
/* 0x082E */ u8 _0x082E[0x0831 - 0x082E];
/* 0x082E */ u16 mPrevSelectionId;
/* 0x0830 */ bool mInRequest;
/* 0x0831 */ bool field_0x0831;
/* 0x0832 */ bool field_0x0832;
/* 0x0833 */ u8 mCurrentSelectionTab;
/* 0x0834 */ u8 _0x0834[0x0837 - 0x0834];
/* 0x0834 */ u8 mTimer;
/* 0x0835 */ u8 field_0x0835;
/* 0x0836 */ bool field_0x0836;
/* 0x0837 */ bool field_0x0837;
/* 0x0838 */ bool field_0x0838;
/* 0x0839 */ u8 _0x0839[0x083B - 0x0839];
/* 0x0839 */ bool field_0x0839;
/* 0x083A */ bool field_0x083A;
/* 0x083B */ bool field_0x083B;
/* 0x083C */ bool field_0x083C;
/* 0x083D */ bool field_0x083D;
/* 0x083E */ bool field_0x083E;
+4
View File
@@ -19,6 +19,10 @@ public:
void requestIn();
void requestOut();
bool getField_0x156() const {
return field_0x156;
}
private:
void startAnim(int idx);
void stopAnim(int idx);
+6 -2
View File
@@ -21,7 +21,7 @@ public:
void requestIn(bool scroll);
void requestOut(bool scroll);
void requestSelect();
void requestRing();
void requestRingToggle();
void requestUnselect();
bool requestSelectGuide();
@@ -35,6 +35,10 @@ public:
STATE_FUNC_DECLARE(dLytPauseDisp00_c, GetDemo);
STATE_FUNC_DECLARE(dLytPauseDisp00_c, Out);
bool getField_0xE36E() const {
return field_0xE36E;
}
private:
void setAnm(int idx, f32 value);
void stopAnm(int idx);
@@ -98,7 +102,7 @@ private:
/* 0xE373 */ bool mSelectGuideRequest;
/* 0xE374 */ bool mStopCallRequest;
/* 0xE375 */ bool mSelectMplsRequest;
/* 0xE376 */ bool field_0xE376;
/* 0xE376 */ bool mReverseTabChangeAnim;
/* 0xE377 */ bool mRingToggleRequest;
};
+4
View File
@@ -31,6 +31,10 @@ public:
STATE_FUNC_DECLARE(dLytPauseDisp01_c, GetDemo);
STATE_FUNC_DECLARE(dLytPauseDisp01_c, Out);
bool getField_0x98CE() const {
return field_0x98CE;
}
private:
void setAnm(int idx, f32 value);
void stopAnm(int idx);
+4
View File
@@ -23,6 +23,10 @@ public:
void setInputInOut(bool inOut);
bool getField_0x19A() const {
return field_0x19A;
}
private:
void updateCaption();
void startAnim(int idx);
+4
View File
@@ -25,6 +25,10 @@ public:
void requestIn();
void requestOut();
bool getField_0x6D7() const {
return field_0x6D7;
}
private:
void startAnim(int idx);
void stopAnim(int idx);
+4
View File
@@ -264,6 +264,10 @@ public:
return mMain.field_0x13750;
}
void setMeterField_0x13750(s32 value) {
mMain.field_0x13750 = value;
}
u8 getMeterField_0x13770() const {
return mMain.field_0x13770;
}
+5 -5
View File
@@ -85,7 +85,7 @@ bool dLytCommonArrow_c::execute() {
}
bool dLytCommonArrow_c::draw() {
if (field_0x6CB == 1) {
if (mVisible == true) {
mLytBase.addToDrawList();
}
return true;
@@ -179,14 +179,14 @@ void dLytCommonArrow_c::initializeState_None() {
mInRequested = false;
mOutRequested = false;
field_0x6CA = 0;
field_0x6CB = 0;
mVisible = false;
mTargetedBounding = PANE_BOUNDING_NONE;
field_0x6B8 = 2;
field_0x6BC = 2;
field_0x6C0 = 2;
mTimer = 0;
displayElement(ANIM_IN, 0.0f);
field_0x6CC = 1;
mBackwards = true;
}
void dLytCommonArrow_c::executeState_None() {
if (mInRequested == true) {
@@ -200,7 +200,7 @@ void dLytCommonArrow_c::finalizeState_None() {
void dLytCommonArrow_c::initializeState_In() {
mTimer = 0;
field_0x6CB = 1;
mVisible = true;
f32 anmType = 0.0f;
if (mType == 1) {
anmType = 1.0f;
@@ -256,7 +256,7 @@ void dLytCommonArrow_c::executeState_Wait() {
}
d2d::AnmGroup_c &g2 = mAnmGroups[ANIM_INPUT];
if (field_0x6CC != 0) {
if (mBackwards) {
tickDown(&g2);
} else {
g2.play();
+843
View File
@@ -0,0 +1,843 @@
#include "d/lyt/d_lyt_pause.h"
#include "common.h"
#include "d/d_base.h"
#include "d/d_cs_game.h"
#include "d/d_heap.h"
#include "d/d_pad.h"
#include "d/d_pad_nav.h"
#include "d/d_pause.h"
#include "d/d_player.h"
#include "d/flag/storyflag_manager.h"
#include "d/lyt/d_lyt_common_arrow.h"
#include "d/lyt/d_lyt_control_game.h"
#include "d/lyt/d_lyt_pause_back.h"
#include "d/lyt/d_lyt_pause_disp_00.h"
#include "d/lyt/d_lyt_pause_disp_01.h"
#include "d/lyt/d_lyt_pause_info.h"
#include "d/lyt/d_lyt_pause_text.h"
#include "d/lyt/meter/d_lyt_meter.h"
#include "d/snd/d_snd_player_mgr.h"
#include "d/snd/d_snd_small_effect_mgr.h"
#include "d/snd/d_snd_wzsound.h"
#include "egg/gfx/eggTextureBuffer.h"
#include "m/m_pad.h"
#include "toBeSorted/arc_managers/layout_arc_manager.h"
STATE_DEFINE(dLytPauseMain_c, None);
STATE_DEFINE(dLytPauseMain_c, In);
STATE_DEFINE(dLytPauseMain_c, Wait);
STATE_DEFINE(dLytPauseMain_c, Change);
STATE_DEFINE(dLytPauseMain_c, Select);
STATE_DEFINE(dLytPauseMain_c, Ring);
STATE_DEFINE(dLytPauseMain_c, GetDemo);
STATE_DEFINE(dLytPauseMain_c, Out);
STATE_DEFINE(dLytPauseMgr_c, None);
STATE_DEFINE(dLytPauseMgr_c, In);
STATE_DEFINE(dLytPauseMgr_c, Wait);
STATE_DEFINE(dLytPauseMgr_c, Change);
STATE_DEFINE(dLytPauseMgr_c, Select);
STATE_DEFINE(dLytPauseMgr_c, Ring);
STATE_DEFINE(dLytPauseMgr_c, GetDemo);
STATE_DEFINE(dLytPauseMgr_c, Out);
dLytPauseMain_c::dLytPauseMain_c()
: mStateMgr(*this),
mpPauseBack(nullptr),
mpDisp00(nullptr),
mpDisp01(nullptr),
mpPauseInfo(nullptr),
mpPauseText(nullptr),
mpArrow(nullptr) {}
bool dLytPauseMain_c::build() {
mpPauseBack = new (dHeap::layoutEx2Heap.heap) dLytPauseBack_c();
mpPauseBack->build();
mpPauseInfo = new (dHeap::layoutEx2Heap.heap) dLytPauseInfo_c();
mpPauseInfo->build();
mpPauseText = new (dHeap::layoutEx2Heap.heap) dLytPauseText_c();
mpPauseText->build();
mpArrow = new (dHeap::layoutEx2Heap.heap) dLytCommonArrow_c();
mpArrow->build();
mpDisp00 = new (dHeap::layoutEx2Heap.heap) dLytPauseDisp00_c();
mpDisp00->build();
mpDisp01 = new (dHeap::layoutEx2Heap.heap) dLytPauseDisp01_c();
mpDisp01->build();
mStateMgr.changeState(StateID_None);
return true;
}
bool dLytPauseMain_c::remove() {
if (mpArrow != nullptr) {
mpArrow->remove();
delete mpArrow;
mpArrow = nullptr;
}
if (mpPauseText != nullptr) {
mpPauseText->remove();
delete mpPauseText;
mpPauseText = nullptr;
}
if (mpPauseInfo != nullptr) {
mpPauseInfo->remove();
delete mpPauseInfo;
mpPauseInfo = nullptr;
}
if (mpDisp00 != nullptr) {
mpDisp00->remove();
delete mpDisp00;
mpDisp00 = nullptr;
}
if (mpDisp01 != nullptr) {
mpDisp01->remove();
delete mpDisp01;
mpDisp01 = nullptr;
}
if (mpPauseBack != nullptr) {
mpPauseBack->remove();
delete mpPauseBack;
mpPauseBack = nullptr;
}
dBase_c::s_NextExecuteControlFlags &= ~0x1;
dBase_c::s_DrawControlFlags &= ~0x1;
return true;
}
bool dLytPauseMain_c::execute() {
mStateMgr.executeState();
mpPauseBack->execute();
mpDisp00->execute();
mpDisp01->execute();
mpPauseInfo->execute();
mpPauseText->execute();
mpArrow->execute();
return true;
}
bool dLytPauseMain_c::draw() {
mpPauseBack->draw();
if (mpDisp00 != nullptr) {
mpDisp00->draw();
}
if (mpDisp01 != nullptr) {
mpDisp01->draw();
}
if (!dLytControlGame_c::getInstance()->getField_0x15C67()) {
mpArrow->draw();
}
mpPauseText->draw();
mpPauseInfo->draw();
return true;
}
void dLytPauseMain_c::drawDirectly() {
if (dLytControlGame_c::getInstance()->getField_0x15C2C() == 0) {
mpDisp00->drawDirectly();
} else {
mpDisp01->drawDirectly();
}
}
void dLytPauseMain_c::requestIn() {
mInRequest = true;
}
void dLytPauseMain_c::requestOut() {
mOutRequest = true;
}
void dLytPauseMain_c::requestChange() {
mChangeRequest = true;
}
void dLytPauseMain_c::requestSelect() {
mSelectRequest = true;
}
void dLytPauseMain_c::requestRingToggle() {
mRingToggleRequest = true;
}
void dLytPauseMain_c::initializeState_None() {
field_0x63 = false;
mInRequest = false;
mOutRequest = false;
mChangeRequest = false;
mSelectRequest = false;
mRingToggleRequest = false;
mPartStateChangeFlags = 0;
mStep = 0;
mTimer = 0;
}
void dLytPauseMain_c::executeState_None() {
if (mInRequest == true) {
mInRequest = false;
mpPauseBack->requestIn();
if (dLytControlGame_c::getInstance()->getField_0x15C2C() == 0) {
mpDisp00->requestIn(false);
} else {
mpDisp01->requestIn(false);
}
mpPauseInfo->requestIn();
mStateMgr.changeState(StateID_In);
}
}
void dLytPauseMain_c::finalizeState_None() {}
void dLytPauseMain_c::initializeState_In() {
mPartStateChangeFlags = 0;
mTimer = 0;
}
void dLytPauseMain_c::executeState_In() {
if (mTimer == 8) {
mpArrow->requestIn();
}
mTimer++;
if (mpPauseBack->getField_0x156() == true) {
mPartStateChangeFlags |= 0x1;
}
if (dLytControlGame_c::getInstance()->getField_0x15C2C() == 0) {
if (mpDisp00->getField_0xE36E() == true) {
mPartStateChangeFlags |= 0x2;
}
} else {
if (mpDisp01->getField_0x98CE() == true) {
mPartStateChangeFlags |= 0x2;
}
}
if (mpPauseInfo->getField_0x19A() == true) {
mPartStateChangeFlags |= 0x4;
}
if (mPartStateChangeFlags == (0x1 | 0x2 | 0x4)) {
if (dLytControlGame_c::getInstance()->getField_0x15C67()) {
mStateMgr.changeState(StateID_GetDemo);
} else {
mStateMgr.changeState(StateID_Wait);
}
}
}
void dLytPauseMain_c::finalizeState_In() {
dBase_c::s_DrawControlFlags |= 0x1;
}
void dLytPauseMain_c::initializeState_Wait() {
mStep = 0;
mPartStateChangeFlags = 0;
field_0x63 = true;
}
void dLytPauseMain_c::executeState_Wait() {
field_0x63 = false;
if (mOutRequest == true) {
mOutRequest = false;
mpPauseBack->requestOut();
if (dLytControlGame_c::getInstance()->getField_0x15C2C() == 0) {
mpDisp00->requestOut(false);
} else {
mpDisp01->requestOut(false);
}
mpPauseInfo->requestOut();
mStateMgr.changeState(StateID_Out);
} else if (mSelectRequest == true) {
mStateMgr.changeState(StateID_Select);
} else if (mChangeRequest == true) {
mChangeRequest = false;
mStateMgr.changeState(StateID_Change);
} else {
if (mRingToggleRequest == true) {
mRingToggleRequest = false;
mStateMgr.changeState(StateID_Ring);
}
mpArrow->unk();
}
}
void dLytPauseMain_c::finalizeState_Wait() {}
void dLytPauseMain_c::initializeState_Change() {
mStep = 0;
if (dLytControlGame_c::getInstance()->getField_0x15C2C() == 0) {
mpDisp01->requestIn(true);
mpDisp00->requestOut(true);
} else {
mpDisp00->requestIn(true);
mpDisp01->requestOut(true);
}
}
void dLytPauseMain_c::executeState_Change() {
if (mStep != 0) {
return;
}
bool change = false;
if (dLytControlGame_c::getInstance()->getField_0x15C2C() == 0) {
if (mpDisp01->getField_0x98CE()) {
change = true;
}
} else {
if (mpDisp00->getField_0xE36E()) {
change = true;
}
}
if (change == true) {
mStateMgr.changeState(StateID_Wait);
}
}
void dLytPauseMain_c::finalizeState_Change() {}
void dLytPauseMain_c::initializeState_Select() {
mStep = 0;
mSelectRequest = false;
if (dLytPauseMgr_c::GetInstance()->getField_0x0838() == true) {
mStep = 10;
mpDisp00->requestSelect();
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MENU_P1_SELECT_TOGGLE);
} else if (dLytPauseMgr_c::GetInstance()->getField_0x083C() == true) {
if (mpDisp00->requestSelectGuide()) {
mStep = 100;
} else {
mStep = 200;
}
} else if (dLytPauseMgr_c::GetInstance()->getField_0x083D() == true) {
if (mpDisp00->requestSelectMpls()) {
mStep = 300;
} else {
mStep = 200;
}
} else {
mpArrow->setBackwards(false);
mpPauseInfo->setInputInOut(false);
if (dLytControlGame_c::getInstance()->getField_0x15C2C() == 0) {
mpDisp00->requestSelect();
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MENU_P1_SELECT_ITEM);
} else {
mpDisp01->requestSelect();
}
mpPauseText->requestIn();
}
}
extern "C" void fn_80059F40(void *);
void dLytPauseMain_c::executeState_Select() {
switch (mStep) {
case 0: {
if (mpPauseText->getField_0x6D7()) {
mStep = 1;
}
break;
}
case 1: {
if (dPad::getDownTrigA() || dPad::getDownTrigB()) {
mStep = 2;
mpPauseText->requestOut();
}
break;
}
case 2: {
if (mpPauseText->getField_0x6D7()) {
if (dLytControlGame_c::getInstance()->getField_0x15C2C() == 0) {
mpDisp00->requestUnselect();
} else {
mpDisp01->requestUnselect();
}
mStateMgr.changeState(StateID_Wait);
}
break;
}
case 10: {
if (mpDisp00->getField_0xE36E() == true) {
mStateMgr.changeState(StateID_Wait);
}
break;
}
case 100: {
if (mpDisp00->getField_0xE36E() == true) {
mStateMgr.changeState(StateID_Wait);
u8 uiMode = dLytMeter_c::GetMain()->getUiMode() + 1;
if (uiMode >= 3) {
uiMode = 0;
}
dLytMeter_c::GetMain()->setUiMode(uiMode);
}
break;
}
case 200: {
mStateMgr.changeState(StateID_Wait);
break;
}
case 300: {
if (mpDisp00->getField_0xE36E() == true) {
mStep++;
// TODO - dPadManager_c
fn_80059F40(dPauseManager_c::GetInstance());
}
break;
}
case 301: {
mStateMgr.changeState(StateID_Wait);
break;
}
}
}
void dLytPauseMain_c::finalizeState_Select() {
mpArrow->setBackwards(true);
mpPauseInfo->setInputInOut(true);
}
void dLytPauseMain_c::initializeState_Ring() {
if (dLytControlGame_c::getInstance()->getField_0x15C2C() == 0) {
mpDisp00->requestRingToggle();
}
}
void dLytPauseMain_c::executeState_Ring() {
if (mSelectRequest == true) {
mStateMgr.changeState(StateID_Select);
} else if (mRingToggleRequest == true) {
mRingToggleRequest = false;
if (dLytControlGame_c::getInstance()->getField_0x15C2C() == 0) {
mpDisp00->requestRingToggle();
}
mStateMgr.changeState(StateID_Wait);
}
}
void dLytPauseMain_c::finalizeState_Ring() {}
void dLytPauseMain_c::initializeState_GetDemo() {
field_0x63 = true;
}
void dLytPauseMain_c::executeState_GetDemo() {
field_0x63 = false;
if (dLytControlGame_c::getInstance()->getField_0x15C68()) {
if (mpDisp01->getField_0x98CE() == true) {
mStateMgr.changeState(StateID_Wait);
}
} else {
if (mpDisp00->getField_0xE36E() == true) {
mStateMgr.changeState(StateID_Wait);
}
}
}
void dLytPauseMain_c::finalizeState_GetDemo() {}
void dLytPauseMain_c::initializeState_Out() {
mPartStateChangeFlags = 0;
mStep = 0;
dBase_c::s_DrawControlFlags &= ~0x1;
mpArrow->requestOut();
}
void dLytPauseMain_c::executeState_Out() {
switch (mStep) {
case 0: {
if (mpPauseBack->getField_0x156() == true) {
mPartStateChangeFlags |= 0x1;
}
if (dLytControlGame_c::getInstance()->getField_0x15C2C() == 0) {
if (mpDisp00->getField_0xE36E() == true) {
mPartStateChangeFlags |= 0x2;
}
} else {
if (mpDisp01->getField_0x98CE() == true) {
mPartStateChangeFlags |= 0x2;
}
}
if (mpPauseInfo->getField_0x19A() == true) {
mPartStateChangeFlags |= 0x4;
}
if (mPartStateChangeFlags == (0x1 | 0x2 | 0x4)) {
field_0x63 = true;
mStep = 1;
}
break;
}
case 1: {
mStateMgr.changeState(StateID_None);
break;
}
}
}
void dLytPauseMain_c::finalizeState_Out() {}
SPECIAL_BASE_PROFILE(LYT_PAUSE, dLytPauseMgr_c, fProfile::LYT_PAUSE, 0x2B7, 1);
dLytPauseMgr_c::dLytPauseMgr_c() : mStateMgr(*this), mpTexture0x0810(nullptr), mpBgTexture(nullptr) {
sInstance = this;
field_0x083A = false;
}
dLytPauseMgr_c::~dLytPauseMgr_c() {
sInstance = nullptr;
}
int dLytPauseMgr_c::create() {
bool ok = allocateLytWork1Heap("pause", true);
if (!ok) {
return FAILED;
}
mStateMgr.changeState(StateID_None);
return SUCCEEDED;
}
int dLytPauseMgr_c::doDelete() {
removeLyt();
mMain.remove();
mResAcc2.detach();
mResAcc1.detach();
if (mpTexture0x0810 != nullptr) {
mpTexture0x0810->free();
mpTexture0x0810 = nullptr;
}
if (mpBgTexture != nullptr) {
mpBgTexture->free();
mpBgTexture = nullptr;
}
return SUCCEEDED;
}
int dLytPauseMgr_c::execute() {
mStateMgr.executeState();
if (*mStateMgr.getStateID() != StateID_None) {
mMain.execute();
}
return SUCCEEDED;
}
int dLytPauseMgr_c::draw() {
if (*mStateMgr.getStateID() != StateID_None) {
mMain.draw();
}
return SUCCEEDED;
}
void dLytPauseMgr_c::initializeState_None() {
mInRequest = 0;
setSelection(SELECT_NONE, 0, false);
mPrevSelectionType = SELECT_NONE;
mCurrentSelectionId = 0;
mPrevSelectionId = 0;
field_0x083C = false;
field_0x083D = false;
field_0x0836 = false;
field_0x0837 = false;
field_0x0838 = false;
field_0x0831 = false;
field_0x0832 = false;
field_0x083E = false;
field_0x083F = false;
field_0x0840 = false;
mCurrentDisp00Tab = 0;
field_0x0824 = 3;
mCurrentSelectionTab = 0;
mCurrentSelectionIsRestricted = false;
mTimer = 0;
field_0x0835 = 0;
}
void dLytPauseMgr_c::executeState_None() {
if (mInRequest == true) {
mInRequest = false;
field_0x083A = true;
mMain.requestIn();
mStateMgr.changeState(StateID_In);
dBase_c::s_NextExecuteControlFlags |= 0x1;
dLytMeter_c::GetInstance()->setMeterField_0x13750(3);
dLytControlGame_c *lytControl = dLytControlGame_c::getInstance();
if (lytControl->getField_0x15C67()) {
field_0x0828 = lytControl->getField_0x15C2C();
lytControl->setField_0x15C2C(lytControl->getField_0x15C68());
} else {
StoryflagManager::sInstance->unsetFlag(571);
}
}
}
void dLytPauseMgr_c::finalizeState_None() {}
void dLytPauseMgr_c::initializeState_In() {}
void dLytPauseMgr_c::executeState_In() {
if (mMain.getField_0x63() == true) {
if (dLytControlGame_c::getInstance()->getField_0x15C67()) {
mStateMgr.changeState(StateID_GetDemo);
} else {
mStateMgr.changeState(StateID_Wait);
dCsGame_c::GetInstance()->setCursorTypePointer();
}
}
}
void dLytPauseMgr_c::finalizeState_In() {}
void dLytPauseMgr_c::initializeState_Wait() {
dPadNav::setNavEnabled(true, false);
if (sInstance->getField_0x083E()) {
sInstance->setField_0x083E(false);
dPadNav::hidePointer();
}
if (field_0x083F == true) {
field_0x083F = false;
dPadNav::hidePointer();
}
field_0x0840 = false;
field_0x0835 = 0;
}
void dLytPauseMgr_c::executeState_Wait() {
field_0x083B = false;
mPrevSelectionId = mCurrentSelectionId;
mPrevSelectionType = mCurrentSelectionType;
if (dPad::getDownTrigDown()) {
dPad::ex_c::getInstance()->centerCursor(mPad::getCurrentCoreID(), true);
}
dCsGame_c::GetInstance()->setCursorTypePointer();
if (dPad::getDownTrig1() || (dLytControlGame_c::getInstance()->getField_0x15C2C() != 0 && dPad::getDownTrigB())) {
dSndPlayerMgr_c::GetInstance()->leaveMenu();
mMain.requestOut();
(void)getLinkPtr(); // yes
mStateMgr.changeState(StateID_Out);
return;
}
if (dLytControlGame_c::getInstance()->getField_0x15C2C() == 0) {
bool b = false;
if (!StoryflagManager::sInstance->getFlag(58)) {
if (dPad::getDownTrigB()) {
b = true;
}
} else {
if (dPad::getUpTrigB() && field_0x0835 < 10) {
b = true;
}
}
if (b) {
dSndPlayerMgr_c::GetInstance()->leaveMenu();
mMain.requestOut();
(void)getLinkPtr(); // yes
mStateMgr.changeState(StateID_Out);
return;
}
}
if (mMain.hasSelection() && dPad::getDownTrigA()) {
if (field_0x0837 && !dPadNav::isPointerVisible()) {
field_0x083F = true;
}
(void)checkSelectRing();
mStateMgr.changeState(StateID_Select);
return;
}
if (checkChangeGesture()) {
mStateMgr.changeState(StateID_Change);
return;
}
if ((dPad::getDownTrigB() || dPad::getDownTrigMinus() || dPad::getDownTrigC()) && checkSelectRing()) {
field_0x0837 = true;
mStateMgr.changeState(StateID_Select);
return;
}
if (checkRing()) {
if (mTimer >= 10) {
mTimer = 0;
dCsGame_c::GetInstance()->setCursorTypeNoneMaybe();
mStateMgr.changeState(StateID_Ring);
} else {
mTimer++;
}
} else {
mTimer = 0;
}
if (dPad::getDownB()) {
field_0x0835++;
} else {
field_0x0835 = 0;
}
}
void dLytPauseMgr_c::finalizeState_Wait() {
dPadNav::setNavEnabled(false, false);
}
void dLytPauseMgr_c::initializeState_Change() {
mMain.requestChange();
mMain.updateTitle();
if (field_0x0831) {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MENU_TURN_PAGE_RIGHT);
} else {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MENU_TURN_PAGE_LEFT);
}
}
void dLytPauseMgr_c::executeState_Change() {
if (!sInstance->getField_0x083E()) {
dCsGame_c::GetInstance()->setCursorTypePointer();
}
if (mMain.getField_0x63() == true) {
saveDispFlag();
mStateMgr.changeState(StateID_Wait);
}
}
void dLytPauseMgr_c::finalizeState_Change() {}
void dLytPauseMgr_c::initializeState_Select() {
mMain.requestSelect();
field_0x0838 = field_0x0837;
}
void dLytPauseMgr_c::executeState_Select() {
if (mMain.getField_0x63() == true) {
if (field_0x0838) {
saveTabFlag();
field_0x0838 = false;
}
mStateMgr.changeState(StateID_Wait);
} else if (field_0x0838) {
s32 tab = mCurrentDisp00Tab;
bool buttonHeld = false;
if (dPad::getDownB() && tab == 0) {
buttonHeld = true;
}
if (dPad::getDownMinus() && tab == 1) {
buttonHeld = true;
}
if (dPad::getDownC() && tab == 2) {
buttonHeld = true;
}
if (buttonHeld) {
mTimer++;
} else {
mTimer = 0;
}
}
}
void dLytPauseMgr_c::finalizeState_Select() {}
void dLytPauseMgr_c::initializeState_Ring() {
s32 controlGameTab = dLytControlGame_c::getInstance()->getPauseDisp00Tab();
if (controlGameTab == 0) {
field_0x0824 = 0;
} else if (controlGameTab == 1) {
field_0x0824 = 1;
} else {
field_0x0824 = 2;
}
mMain.requestRingToggle();
}
void dLytPauseMgr_c::executeState_Ring() {
field_0x083B = false;
mPrevSelectionId = mCurrentSelectionId;
mPrevSelectionType = mCurrentSelectionType;
bool buttonHeld = false;
if (field_0x0824 == 0) {
if (!dPad::getDownB()) {
buttonHeld = true;
}
} else if (field_0x0824 == 1) {
if (!dPad::getDownMinus()) {
buttonHeld = true;
}
} else {
if (!dPad::getDownC()) {
buttonHeld = true;
}
}
if (buttonHeld == true) {
if (mMain.hasSelection()) {
mStateMgr.changeState(StateID_Select);
} else {
mMain.requestRingToggle();
mStateMgr.changeState(StateID_Wait);
}
}
}
void dLytPauseMgr_c::finalizeState_Ring() {
mTimer = 0;
}
void dLytPauseMgr_c::initializeState_GetDemo() {}
void dLytPauseMgr_c::executeState_GetDemo() {
if (mMain.getField_0x63() == true) {
dSndPlayerMgr_c::GetInstance()->leaveMenu();
mMain.requestOut();
(void)getLinkPtr();
mStateMgr.changeState(StateID_Out);
}
}
void dLytPauseMgr_c::finalizeState_GetDemo() {}
void dLytPauseMgr_c::initializeState_Out() {
dCsGame_c::GetInstance()->offNextCursor();
}
void dLytPauseMgr_c::executeState_Out() {
if (mMain.getField_0x63() == true) {
dBase_c::s_NextExecuteControlFlags &= ~0x1;
dBase_c::s_DrawControlFlags &= ~0x1;
mStateMgr.changeState(StateID_None);
}
}
void dLytPauseMgr_c::finalizeState_Out() {
if (dLytControlGame_c::getInstance()->getField_0x15C67()) {
dLytControlGame_c::getInstance()->setField_0x15C2C(field_0x0828);
}
}
bool dLytPauseMgr_c::isStateWait() const {
return mStateMgr.getStateID()->isEqual(StateID_Wait);
}
bool dLytPauseMgr_c::build() {
void *data;
data = LayoutArcManager::GetInstance()->getLoadedData("MenuPause");
mResAcc1.attach(data, "");
data = LayoutArcManager::GetInstance()->getLoadedData("DoButton");
mResAcc2.attach(data, "");
mMain.build();
return true;
}
void dLytPauseMgr_c::saveTabFlag() {
dLytControlGame_c::getInstance()->setPauseDisp00Tab(mCurrentDisp00Tab);
StoryflagManager::sInstance->setFlagOrCounterToValue(846, mCurrentDisp00Tab);
}
bool dLytPauseMgr_c::checkRing() {
dLytControlGame_c *lytControl = dLytControlGame_c::getInstance();
if (lytControl->getField_0x15C2C() != 0) {
return false;
}
if (!StoryflagManager::sInstance->getFlag(30)) {
return false;
}
s32 tab = lytControl->getPauseDisp00Tab();
if (dPad::getDownB() && tab == 0) {
return true;
} else if (dPad::getDownMinus() && tab == 1) {
return true;
} else if (dPad::getDownC() && tab == 2) {
return true;
}
return false;
}
void dLytPauseMgr_c::setSelectHand(f32 rotation, f32 length) {
sDisp00ArrowRotation = rotation;
sDisp00ArrowLength = length;
}
+51 -28
View File
@@ -329,8 +329,8 @@ static const d2d::LytBrlanMapping brlanMap[] = {
#define PAUSE_DISP_00_NUM_SUBPANES 24
#define navTargetToBounding(n) (s32)(n - 1)
#define boundingToNavTarget(n) (s32)(n + 1)
#define navTargetToBounding(n) ((s32)(n - 1))
#define boundingToNavTarget(n) ((s32)(n + 1))
// clang-format off
static const u8 iconVariants[] = {
@@ -532,7 +532,7 @@ void dLytPauseDisp00_c::requestSelect() {
mSelectToggleRequest = true;
}
void dLytPauseDisp00_c::requestRing() {
void dLytPauseDisp00_c::requestRingToggle() {
mRingToggleRequest = true;
}
@@ -614,7 +614,7 @@ void dLytPauseDisp00_c::initializeState_None() {
setAnm(PAUSE_DISP_00_ANIM_LOOP, 0.0f);
mSelectGuideRequest = false;
mSelectToggleRequest = false;
field_0xE376 = false;
mReverseTabChangeAnim = false;
mRingToggleRequest = false;
}
void dLytPauseDisp00_c::executeState_None() {
@@ -803,19 +803,39 @@ void dLytPauseDisp00_c::executeState_Wait() {
void dLytPauseDisp00_c::finalizeState_Wait() {}
void dLytPauseDisp00_c::initializeState_Select() {
static const s32 sTabOrder[] = {
// Reminder: item=0, pouch=1, dowsing=2
// Subtle detail - the layout has three animations for changing tabs:
// 1. B-Wheel -> Pouch
// 2. Pouch -> Dowsing
// 3. Dowsing -> B-Wheel
// If we're changing tabs in this order, we can simply play the
// animation forward. If we're changing tabs in a different order,
// we need to play the reverse change animation, backwards.
// For a given tab index, what's the natural next tab index?
static const s32 sNaturalTabOrder[] = {
1,
2,
0,
};
static const s32 sTabAnim[] = {
// For a given tab index, what's the change anim when changing to the natural next tab?
static const s32 sNaturalTabChangeAnim[] = {
PAUSE_DISP_00_ANIM_RING_TO_POUCH,
PAUSE_DISP_00_ANIM_RING_TO_SWORD,
PAUSE_DISP_00_ANIM_RING_TO_ITEM,
};
static const s32 sTabAnim2[] = {
// TODO - possibly fakematch, but we need to force a reload.
// Note that this is part of a .rodata pool, so it
// must be const and in the same file...
// For a given tab index, what's the change anim when changing to the *other* tab,
// in not-natural order?
static const volatile s32 sReverseTabChangeAnim[] = {
// E.g. we're on the item tab, and we're changing to dowsing,
// so we need to play the dowsing->item animation in reverse.
PAUSE_DISP_00_ANIM_RING_TO_ITEM,
PAUSE_DISP_00_ANIM_RING_TO_POUCH,
PAUSE_DISP_00_ANIM_RING_TO_SWORD,
@@ -830,18 +850,17 @@ void dLytPauseDisp00_c::initializeState_Select() {
stopAnm(PAUSE_DISP_00_ANIM_RING_TO_SWORD);
stopAnm(PAUSE_DISP_00_ANIM_RING_TO_ITEM);
// Of course dLytControlGame_c and dLytPause_c would use different IDs...
// TODO check if this ID mapping is consistently done
s32 controlGameTab = dLytControlGame_c::getInstance()->getPauseDisp00Tab();
if (sTabOrder[controlGameTab] == pause->getCurrentDisp00Tab()) {
setAnm(sTabAnim[controlGameTab], 0.0f);
field_0xE376 = false;
s32 oldTab = dLytControlGame_c::getInstance()->getPauseDisp00Tab();
if (sNaturalTabOrder[oldTab] == pause->getCurrentDisp00Tab()) {
// Natural
setAnm(sNaturalTabChangeAnim[oldTab], 0.0f);
mReverseTabChangeAnim = false;
} else {
stopAnm(controlGameTab + PAUSE_DISP_00_ANIM_RING_BASE);
// TODO - nonmatching
setAnm(sTabAnim2[controlGameTab], 0.0f);
mAnm[sTabAnim2[controlGameTab]].setToEnd();
field_0xE376 = true;
// Opposite order
stopAnm(oldTab + PAUSE_DISP_00_ANIM_RING_BASE);
setAnm(sReverseTabChangeAnim[oldTab], 0.0f);
mAnm[sReverseTabChangeAnim[oldTab]].setToEnd();
mReverseTabChangeAnim = true;
}
for (int i = PAUSE_DISP_00_ANIM_ITEM_OFFSET;
@@ -852,13 +871,18 @@ void dLytPauseDisp00_c::initializeState_Select() {
mAnm[PAUSE_DISP_00_ANIM_ONOFF_TEXT].setFrame(0.0f);
}
void dLytPauseDisp00_c::executeState_Select() {
static const s32 sTabAnim2[] = {
static const s32 sReverseTabChangeAnim[] = {
PAUSE_DISP_00_ANIM_RING_TO_ITEM,
PAUSE_DISP_00_ANIM_RING_TO_POUCH,
PAUSE_DISP_00_ANIM_RING_TO_SWORD,
};
static const s32 sTabAnim3[] = {
// When our normal tab change anim is done (frame == 1.0f),
// we change to the next anim with frame == 0.0f.
// Not entirely sure why.
static const s32 sNextTabChangeAnim[] = {
// E.g. we're changing from B-Wheel to Pouch. When
// we're done with that transition
PAUSE_DISP_00_ANIM_RING_TO_SWORD,
PAUSE_DISP_00_ANIM_RING_TO_ITEM,
PAUSE_DISP_00_ANIM_RING_TO_POUCH,
@@ -876,8 +900,8 @@ void dLytPauseDisp00_c::executeState_Select() {
s32 controlGameTab = dLytControlGame_c::getInstance()->getPauseDisp00Tab();
s32 lytPauseTab = dLytPauseMgr_c::GetInstance()->getCurrentDisp00Tab();
d2d::AnmGroup_c *anm;
if (field_0xE376) {
anm = &mAnm[sTabAnim2[controlGameTab]];
if (mReverseTabChangeAnim) {
anm = &mAnm[sReverseTabChangeAnim[controlGameTab]];
if (cM::isZero(anm->getFrame()) == true) {
setupRingIcons(lytPauseTab);
mStateMgr.changeState(StateID_Wait);
@@ -887,7 +911,7 @@ void dLytPauseDisp00_c::executeState_Select() {
anm = &mAnm[controlGameTab + PAUSE_DISP_00_ANIM_RING_BASE];
if (anm->isEndReached() == true) {
stopAnm(controlGameTab + PAUSE_DISP_00_ANIM_RING_BASE);
setAnm(sTabAnim3[controlGameTab], 0.0f);
setAnm(sNextTabChangeAnim[controlGameTab], 0.0f);
setupRingIcons(lytPauseTab);
mStateMgr.changeState(StateID_Wait);
} else {
@@ -1591,6 +1615,7 @@ s32 dLytPauseDisp00_c::updateSelection() {
dLytControlGame_c *lytControl = dLytControlGame_c::getInstance();
dLytPauseMgr_c *pause = dLytPauseMgr_c::GetInstance();
d2d::AnmGroup_c *pAnm;
int i;
if (!pause->isStateWait()) {
pause->setSelection(dLytPauseMgr_c::SELECT_NONE, 0, false);
@@ -1753,9 +1778,8 @@ s32 dLytPauseDisp00_c::updateSelection() {
// TODO: this part needs to be fixed before we can deal with the regswaps.
// Part of the `mpBoundings[navTargetToBounding(target)]->IsVisible()` here is kept around
// until the end of the function where the same call appears.
pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_TABLET];
for (int i = PAUSE_DISP_00_BOUNDING_TABLETS; i < PAUSE_DISP_00_BOUNDING_HARP; i++) {
for (i = PAUSE_DISP_00_BOUNDING_TABLETS; i < PAUSE_DISP_00_BOUNDING_HARP; i++) {
s32 anim = PAUSE_DISP_00_ANIM_ONOFF_TABLET + i;
if (target != 0 && navTargetToBounding(target) == i && mpBoundings[navTargetToBounding(target)]->IsVisible()) {
pAnm->play();
@@ -1775,7 +1799,7 @@ s32 dLytPauseDisp00_c::updateSelection() {
}
pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_HARP];
for (int i = PAUSE_DISP_00_BOUNDING_HARP; i < PAUSE_DISP_00_BOUNDING_SHIREN + 1; i++) {
for (i = PAUSE_DISP_00_BOUNDING_HARP; i < PAUSE_DISP_00_BOUNDING_SHIREN + 1; i++) {
if (target != 0 && navTargetToBounding(target) == i) {
pAnm->play();
} else {
@@ -1828,7 +1852,7 @@ s32 dLytPauseDisp00_c::updateSelection() {
PAUSE_DISP_00_ANIM_ONOFF_ITEM_OFFSET;
pAnm = &mAnm[anmIdx];
for (int i = PAUSE_DISP_00_BOUNDING_RING_OFFSET;
for (i = PAUSE_DISP_00_BOUNDING_RING_OFFSET;
i < PAUSE_DISP_00_BOUNDING_RING_OFFSET + PAUSE_DISP_00_ICONS_NUM_ITEMS_ON_WHEEL; i++) {
if (target != 0 && navTargetToBounding(target) == i) {
f32 frame = pAnm->getFrame();
@@ -2124,7 +2148,6 @@ void dLytPauseDisp00_c::loadRingText(u32 cmd) {
mLyt.loadTextVariant("T_decideS_00", 0);
} else {
s32 msgIdx = 1;
// TODO: Don't these use different IDs?
s32 tab = dLytControlGame_c::getInstance()->getPauseDisp00Tab();
if (cmd == RING_TEXT_CURRENT_TAB) {
tab = dLytPauseMgr_c::GetInstance()->getCurrentDisp00Tab();