From 2dd4f06992498edb0f611c6bc98e2699e84a65ed Mon Sep 17 00:00:00 2001 From: robojumper Date: Thu, 7 Aug 2025 14:54:05 +0200 Subject: [PATCH] d_lyt_pause_disp_01 OK --- config/SOUE01/symbols.txt | 352 ++++--- configure.py | 2 +- include/d/a/d_a_item.h | 7 + include/d/a/d_a_itembase.h | 2 +- include/d/d_cs_base.h | 5 + include/d/d_pad_nav.h | 8 + include/d/lyt/d_lyt_common_arrow.h | 30 +- include/d/lyt/d_lyt_common_icon_item_maps.h | 22 +- include/d/lyt/d_lyt_common_icon_material.h | 27 +- include/d/lyt/d_lyt_control_game.h | 8 +- include/d/lyt/d_lyt_cursor_stick.h | 4 +- include/d/lyt/d_lyt_pause.h | 59 +- include/d/lyt/d_lyt_pause_disp_01.h | 63 +- src/d/lyt/d_lyt_common_arrow.cpp | 42 +- src/d/lyt/d_lyt_cursor_stick.cpp | 2 +- src/d/lyt/d_lyt_pause_disp_01.cpp | 1022 ++++++++++++++++++- src/d/lyt/d_lyt_pause_text.cpp | 4 +- 17 files changed, 1407 insertions(+), 252 deletions(-) diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 2ec353e0..bea8aede 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -8864,23 +8864,23 @@ __sinit_\d_lyt_pause_disp_00_cpp = .text:0x8015E790; // type:function size:0x56C __dt__32sFStateID_c<17dLytPauseDisp00_c>Fv = .text:0x8015ED00; // type:function size:0x58 isSameName__32sFStateID_c<17dLytPauseDisp00_c>CFPCc = .text:0x8015ED60; // type:function size:0x88 __ct__17dLytPauseDisp01_cFv = .text:0x8015EDF0; // type:function size:0x160 -__dt__56sFStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c>Fv = .text:0x8015EF50; // type:function size:0xA4 -__dt__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8015F000; // type:function size:0xA0 -__dt__33sFStateFct_c<17dLytPauseDisp01_c>Fv = .text:0x8015F0A0; // type:function size:0x6C -__dt__30sFState_c<17dLytPauseDisp01_c>Fv = .text:0x8015F110; // type:function size:0x58 -__ct__24dLytCommonIconMaterial_cFv = .text:0x8015F170; // type:function size:0x1A0 -fn_8015F310 = .text:0x8015F310; // type:function size:0x210 -changeState__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x8015F520; // type:function size:0x10 -fn_8015F530 = .text:0x8015F530; // type:function size:0xFC -fn_8015F630 = .text:0x8015F630; // type:function size:0xF4 -executeState__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8015F730; // type:function size:0x10 -getStateID__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8015F740; // type:function size:0x10 -fn_8015F750 = .text:0x8015F750; // type:function size:0x38 -fn_8015F790 = .text:0x8015F790; // type:function size:0x14 -fn_8015F7B0 = .text:0x8015F7B0; // type:function size:0x14 -fn_8015F7D0 = .text:0x8015F7D0; // type:function size:0x14 -fn_8015F7F0 = .text:0x8015F7F0; // type:function size:0x10 -fn_8015F800 = .text:0x8015F800; // type:function size:0x10 +__dt__56sFStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c>Fv = .text:0x8015EF50; // type:function size:0xA4 scope:weak +__dt__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8015F000; // type:function size:0xA0 scope:weak +__dt__33sFStateFct_c<17dLytPauseDisp01_c>Fv = .text:0x8015F0A0; // type:function size:0x6C scope:weak +__dt__30sFState_c<17dLytPauseDisp01_c>Fv = .text:0x8015F110; // type:function size:0x58 scope:weak +__ct__24dLytCommonIconMaterial_cFv = .text:0x8015F170; // type:function size:0x1A0 scope:weak +build__17dLytPauseDisp01_cFv = .text:0x8015F310; // type:function size:0x210 +changeState__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x8015F520; // type:function size:0x10 scope:weak +remove__17dLytPauseDisp01_cFv = .text:0x8015F530; // type:function size:0xFC +execute__17dLytPauseDisp01_cFv = .text:0x8015F630; // type:function size:0xF4 +executeState__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8015F730; // type:function size:0x10 scope:weak +getStateID__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8015F740; // type:function size:0x10 scope:weak +draw__17dLytPauseDisp01_cFv = .text:0x8015F750; // type:function size:0x38 +drawDirectly__17dLytPauseDisp01_cFv = .text:0x8015F790; // type:function size:0x14 +requestIn__17dLytPauseDisp01_cFb = .text:0x8015F7B0; // type:function size:0x14 +requestOut__17dLytPauseDisp01_cFb = .text:0x8015F7D0; // type:function size:0x14 +requestSelect__17dLytPauseDisp01_cFv = .text:0x8015F7F0; // type:function size:0x10 +requestUnselect__17dLytPauseDisp01_cFv = .text:0x8015F800; // type:function size:0x10 initializeState_None__17dLytPauseDisp01_cFv = .text:0x8015F810; // type:function size:0x1D4 executeState_None__17dLytPauseDisp01_cFv = .text:0x8015F9F0; // type:function size:0x34 finalizeState_None__17dLytPauseDisp01_cFv = .text:0x8015FA30; // type:function size:0x4 @@ -8899,56 +8899,56 @@ finalizeState_GetDemo__17dLytPauseDisp01_cFv = .text:0x801604E0; // type:functio initializeState_Out__17dLytPauseDisp01_cFv = .text:0x801604F0; // type:function size:0x94 executeState_Out__17dLytPauseDisp01_cFv = .text:0x80160590; // type:function size:0xE0 finalizeState_Out__17dLytPauseDisp01_cFv = .text:0x80160670; // type:function size:0x4 -fn_80160680 = .text:0x80160680; // type:function size:0x68 -fn_801606F0 = .text:0x801606F0; // type:function size:0x10 -LytPauseDisp01__setupPauseMenuDisplayMaybe = .text:0x80160700; // type:function size:0x3E0 -pauseDisplayBugsMaybe = .text:0x80160AE0; // type:function size:0x10C -fn_80160BF0 = .text:0x80160BF0; // type:function size:0x114 -fn_80160D10 = .text:0x80160D10; // type:function size:0x80 -fn_80160D90 = .text:0x80160D90; // type:function size:0x4A0 -fn_80161230 = .text:0x80161230; // type:function size:0x100 -fn_80161330 = .text:0x80161330; // type:function size:0x58 -fn_80161390 = .text:0x80161390; // type:function size:0xCC -fn_80161460 = .text:0x80161460; // type:function size:0x14 -fn_80161480 = .text:0x80161480; // type:function size:0x10 -fn_80161490 = .text:0x80161490; // type:function size:0x14 -fn_801614B0 = .text:0x801614B0; // type:function size:0x10 -fn_801614C0 = .text:0x801614C0; // type:function size:0x98 -fn_80161560 = .text:0x80161560; // type:function size:0x14 -fn_80161580 = .text:0x80161580; // type:function size:0x10 -fn_80161590 = .text:0x80161590; // type:function size:0x14 -__dt__17dLytPauseDisp01_cFv = .text:0x801615B0; // type:function size:0x130 -changeState__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x801616E0; // type:function size:0x10 -getStateID__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x801616F0; // type:function size:0x10 -build__33sFStateFct_c<17dLytPauseDisp01_c>FRC12sStateIDIf_c = .text:0x80161700; // type:function size:0x60 -dispose__33sFStateFct_c<17dLytPauseDisp01_c>FRP10sStateIf_c = .text:0x80161760; // type:function size:0xC -build__40sFStateFct_c<24dLytCommonIconMaterial_c>FRC12sStateIDIf_c = .text:0x80161770; // type:function size:0x60 -dispose__40sFStateFct_c<24dLytCommonIconMaterial_c>FRP10sStateIf_c = .text:0x801617D0; // type:function size:0xC -initialize__30sFState_c<17dLytPauseDisp01_c>Fv = .text:0x801617E0; // type:function size:0x1C -execute__30sFState_c<17dLytPauseDisp01_c>Fv = .text:0x80161800; // type:function size:0x1C -finalize__30sFState_c<17dLytPauseDisp01_c>Fv = .text:0x80161820; // type:function size:0x1C -initialize__37sFState_c<24dLytCommonIconMaterial_c>Fv = .text:0x80161840; // type:function size:0x1C -execute__37sFState_c<24dLytCommonIconMaterial_c>Fv = .text:0x80161860; // type:function size:0x1C -finalize__37sFState_c<24dLytCommonIconMaterial_c>Fv = .text:0x80161880; // type:function size:0x1C -initializeState__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x801618A0; // type:function size:0x10 -finalizeState__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x801618B0; // type:function size:0x10 -refreshState__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x801618C0; // type:function size:0x10 -getState__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x801618D0; // type:function size:0x10 -getNewStateID__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x801618E0; // type:function size:0x10 -getOldStateID__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x801618F0; // type:function size:0x10 -initializeState__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80161900; // type:function size:0x10 -executeState__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80161910; // type:function size:0x10 -finalizeState__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80161920; // type:function size:0x10 -refreshState__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80161930; // type:function size:0x10 -getState__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80161940; // type:function size:0x10 -getNewStateID__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80161950; // type:function size:0x10 -getOldStateID__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80161960; // type:function size:0x10 -finalizeState__32sFStateID_c<17dLytPauseDisp01_c>CFR17dLytPauseDisp01_c = .text:0x80161970; // type:function size:0x30 -executeState__32sFStateID_c<17dLytPauseDisp01_c>CFR17dLytPauseDisp01_c = .text:0x801619A0; // type:function size:0x30 -initializeState__32sFStateID_c<17dLytPauseDisp01_c>CFR17dLytPauseDisp01_c = .text:0x801619D0; // type:function size:0x30 -__sinit_\d_lyt_pause_disp_01_cpp = .text:0x80161A00; // type:function size:0x4B0 -__dt__32sFStateID_c<17dLytPauseDisp01_c>Fv = .text:0x80161EB0; // type:function size:0x58 -isSameName__32sFStateID_c<17dLytPauseDisp01_c>CFPCc = .text:0x80161F10; // type:function size:0x88 +setAnm__17dLytPauseDisp01_cFif = .text:0x80160680; // type:function size:0x68 +stopAnm__17dLytPauseDisp01_cFi = .text:0x801606F0; // type:function size:0x10 +setupDisp__17dLytPauseDisp01_cFv = .text:0x80160700; // type:function size:0x3E0 +setupInsects__17dLytPauseDisp01_cFv = .text:0x80160AE0; // type:function size:0x10C +setupMaterials__17dLytPauseDisp01_cFv = .text:0x80160BF0; // type:function size:0x114 +showInsectsAndMaterials__17dLytPauseDisp01_cFv = .text:0x80160D10; // type:function size:0x80 +updateSelection__17dLytPauseDisp01_cFv = .text:0x80160D90; // type:function size:0x4A0 +getPointerPane__17dLytPauseDisp01_cCFv = .text:0x80161230; // type:function size:0x100 +hideInsectsAndMaterials__17dLytPauseDisp01_cFv = .text:0x80161330; // type:function size:0x58 +shouldInsectBeDisplayed__17dLytPauseDisp01_cCFl = .text:0x80161390; // type:function size:0xCC +getInsectItemId__17dLytPauseDisp01_cCFl = .text:0x80161460; // type:function size:0x14 +getInsectIcon__17dLytPauseDisp01_cCFl = .text:0x80161480; // type:function size:0x10 +getInsectCountByIndex__17dLytPauseDisp01_cCFl = .text:0x80161490; // type:function size:0x14 +getQuestItemId__17dLytPauseDisp01_cCFl = .text:0x801614B0; // type:function size:0x10 +shouldMaterialBeDisplayed__17dLytPauseDisp01_cCFl = .text:0x801614C0; // type:function size:0x98 +getMaterialItemId__17dLytPauseDisp01_cCFl = .text:0x80161560; // type:function size:0x14 +getMaterialIcon__17dLytPauseDisp01_cCFl = .text:0x80161580; // type:function size:0x10 +getMaterialCountByIndex__17dLytPauseDisp01_cCFl = .text:0x80161590; // type:function size:0x14 +__dt__17dLytPauseDisp01_cFv = .text:0x801615B0; // type:function size:0x130 scope:weak +changeState__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x801616E0; // type:function size:0x10 scope:weak +getStateID__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x801616F0; // type:function size:0x10 scope:weak +build__33sFStateFct_c<17dLytPauseDisp01_c>FRC12sStateIDIf_c = .text:0x80161700; // type:function size:0x60 scope:weak +dispose__33sFStateFct_c<17dLytPauseDisp01_c>FRP10sStateIf_c = .text:0x80161760; // type:function size:0xC scope:weak +build__40sFStateFct_c<24dLytCommonIconMaterial_c>FRC12sStateIDIf_c = .text:0x80161770; // type:function size:0x60 scope:weak +dispose__40sFStateFct_c<24dLytCommonIconMaterial_c>FRP10sStateIf_c = .text:0x801617D0; // type:function size:0xC scope:weak +initialize__30sFState_c<17dLytPauseDisp01_c>Fv = .text:0x801617E0; // type:function size:0x1C scope:weak +execute__30sFState_c<17dLytPauseDisp01_c>Fv = .text:0x80161800; // type:function size:0x1C scope:weak +finalize__30sFState_c<17dLytPauseDisp01_c>Fv = .text:0x80161820; // type:function size:0x1C scope:weak +initialize__37sFState_c<24dLytCommonIconMaterial_c>Fv = .text:0x80161840; // type:function size:0x1C scope:weak +execute__37sFState_c<24dLytCommonIconMaterial_c>Fv = .text:0x80161860; // type:function size:0x1C scope:weak +finalize__37sFState_c<24dLytCommonIconMaterial_c>Fv = .text:0x80161880; // type:function size:0x1C scope:weak +initializeState__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x801618A0; // type:function size:0x10 scope:weak +finalizeState__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x801618B0; // type:function size:0x10 scope:weak +refreshState__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x801618C0; // type:function size:0x10 scope:weak +getState__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x801618D0; // type:function size:0x10 scope:weak +getNewStateID__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x801618E0; // type:function size:0x10 scope:weak +getOldStateID__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x801618F0; // type:function size:0x10 scope:weak +initializeState__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80161900; // type:function size:0x10 scope:weak +executeState__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80161910; // type:function size:0x10 scope:weak +finalizeState__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80161920; // type:function size:0x10 scope:weak +refreshState__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80161930; // type:function size:0x10 scope:weak +getState__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80161940; // type:function size:0x10 scope:weak +getNewStateID__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80161950; // type:function size:0x10 scope:weak +getOldStateID__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80161960; // type:function size:0x10 scope:weak +finalizeState__32sFStateID_c<17dLytPauseDisp01_c>CFR17dLytPauseDisp01_c = .text:0x80161970; // type:function size:0x30 scope:weak +executeState__32sFStateID_c<17dLytPauseDisp01_c>CFR17dLytPauseDisp01_c = .text:0x801619A0; // type:function size:0x30 scope:weak +initializeState__32sFStateID_c<17dLytPauseDisp01_c>CFR17dLytPauseDisp01_c = .text:0x801619D0; // type:function size:0x30 scope:weak +__sinit_\d_lyt_pause_disp_01_cpp = .text:0x80161A00; // type:function size:0x4B0 scope:local +__dt__32sFStateID_c<17dLytPauseDisp01_c>Fv = .text:0x80161EB0; // type:function size:0x58 scope:weak +isSameName__32sFStateID_c<17dLytPauseDisp01_c>CFPCc = .text:0x80161F10; // type:function size:0x88 scope:weak __ct__15dLytPauseInfo_cFv = .text:0x80161FA0; // type:function size:0xCC __dt__54sFStateMgr_c<15dLytPauseInfo_c,20sStateMethodUsr_FI_c>Fv = .text:0x80162070; // type:function size:0xA4 scope:weak __dt__84sStateMgr_c<15dLytPauseInfo_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80162120; // type:function size:0xA0 scope:weak @@ -9320,7 +9320,7 @@ finalizeState_Off__17dLytCursorStick_cFv = .text:0x8016B6D0; // type:function si initializeState_On__17dLytCursorStick_cFv = .text:0x8016B6E0; // type:function size:0x4 executeState_On__17dLytCursorStick_cFv = .text:0x8016B6F0; // type:function size:0x94 finalizeState_On__17dLytCursorStick_cFv = .text:0x8016B790; // type:function size:0x4 -setTargetPane__17dLytCursorStick_cFPQ34nw4r3lyt4Pane = .text:0x8016B7A0; // type:function size:0x8 +setTargetPane__17dLytCursorStick_cFPCQ34nw4r3lyt4Pane = .text:0x8016B7A0; // type:function size:0x8 positionToTarget__17dLytCursorStick_cFv = .text:0x8016B7B0; // type:function size:0x1EC finalizeState__32sFStateID_c<17dLytCursorStick_c>CFR17dLytCursorStick_c = .text:0x8016B9A0; // type:function size:0x30 scope:weak executeState__32sFStateID_c<17dLytCursorStick_c>CFR17dLytCursorStick_c = .text:0x8016B9D0; // type:function size:0x30 scope:weak @@ -13646,7 +13646,7 @@ getGoldenSkullCount = .text:0x802526D0; // type:function size:0x8 increaseGoldenSkullCounter = .text:0x802526E0; // type:function size:0xC getGoddesPlumeCount = .text:0x802526F0; // type:function size:0x8 increaseGoddessPlumeCounter = .text:0x80252700; // type:function size:0xC -getGratitudeCrystalCount = .text:0x80252710; // type:function size:0x8 +getGratitudeCrystalCount__9dAcItem_cFv = .text:0x80252710; // type:function size:0x8 increaseGratitudeCrystalCounter = .text:0x80252720; // type:function size:0xC ActorLink__hasLifeTreeSeeding = .text:0x80252730; // type:function size:0x38 AcItem__giveLifeTreeSeedling = .text:0x80252770; // type:function size:0x94 @@ -14886,12 +14886,12 @@ fn_80280DB0 = .text:0x80280DB0; // type:function size:0x10 fn_80280DC0 = .text:0x80280DC0; // type:function size:0x40 fn_80280E00 = .text:0x80280E00; // type:function size:0x20 fn_80280E20 = .text:0x80280E20; // type:function size:0x10 -fn_80280E30 = .text:0x80280E30; // type:function size:0x44 +isStateWait__14dLytPauseMgr_cCFv = .text:0x80280E30; // type:function size:0x44 fn_80280E80 = .text:0x80280E80; // type:function size:0xB0 fn_80280F30 = .text:0x80280F30; // type:function size:0x9C -fn_80280FD0 = .text:0x80280FD0; // type:function size:0x14 -fn_80280FF0 = .text:0x80280FF0; // type:function size:0xC -fn_80281000 = .text:0x80281000; // type:function size:0x3C +getArrowBounding__14dLytPauseMgr_cCFi = .text:0x80280FD0; // type:function size:0x14 +setSelectedArrowBounding__14dLytPauseMgr_cCFi = .text:0x80280FF0; // type:function size:0xC +setSelection__14dLytPauseMgr_cFQ214dLytPauseMgr_c15SelectionType_elb = .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 @@ -28344,14 +28344,14 @@ lbl_804E88D4 = .rodata:0x804E88D4; // type:object size:0xC lbl_804E88E0 = .rodata:0x804E88E0; // type:object size:0xC TRIFORCE_PAUSE_MENU_INDEX = .rodata:0x804E88EC; // type:object size:0xC data:4byte lbl_804E88F8 = .rodata:0x804E88F8; // type:object size:0x20 -lbl_804E8918 = .rodata:0x804E8918; // type:object size:0x78 data:4byte -lbl_804E8990 = .rodata:0x804E8990; // type:object size:0x110 -lbl_804E8AA0 = .rodata:0x804E8AA0; // type:object size:0x18 -lbl_804E8AB8 = .rodata:0x804E8AB8; // type:object size:0x10 -lbl_804E8AC8 = .rodata:0x804E8AC8; // type:object size:0x18 -lbl_804E8AE0 = .rodata:0x804E8AE0; // type:object size:0x20 -lbl_804E8B00 = .rodata:0x804E8B00; // type:object size:0x10 -lbl_804E8B10 = .rodata:0x804E8B10; // type:object size:0x20 +brlanMap = .rodata:0x804E8918; // type:object size:0x78 scope:local data:4byte +sNavTable = .rodata:0x804E8990; // type:object size:0x110 scope:local +@LOCAL@getInsectItemId__17dLytPauseDisp01_cCFl@sInsectItemTable = .rodata:0x804E8AA0; // type:object size:0x18 scope:local +@LOCAL@getInsectIcon__17dLytPauseDisp01_cCFl@sInsectIconTable = .rodata:0x804E8AB8; // type:object size:0xC scope:local +@LOCAL@getInsectCountByIndex__17dLytPauseDisp01_cCFl@sInsectCounterTable = .rodata:0x804E8AC8; // type:object size:0x18 scope:local +@LOCAL@getMaterialItemId__17dLytPauseDisp01_cCFl@sMaterialItemTable = .rodata:0x804E8AE0; // type:object size:0x20 scope:local +@LOCAL@getMaterialIcon__17dLytPauseDisp01_cCFl@sMaterialIconTable = .rodata:0x804E8B00; // type:object size:0x10 scope:local +@LOCAL@getMaterialCountByIndex__17dLytPauseDisp01_cCFl@sMaterialCounterTable = .rodata:0x804E8B10; // type:object size:0x20 scope:local brlanMap = .rodata:0x804E8B30; // type:object size:0x18 scope:local data:4byte brlanMap = .rodata:0x804E8B48; // type:object size:0x18 scope:local data:4byte brlanMap = .rodata:0x804E8B60; // type:object size:0x48 scope:local data:4byte @@ -34482,71 +34482,97 @@ __vt__86sStateMgr_c<17dLytPauseDisp00_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13 __vt__33sFStateFct_c<17dLytPauseDisp00_c> = .data:0x80525B40; // type:object size:0x18 __vt__30sFState_c<17dLytPauseDisp00_c> = .data:0x80525B58; // type:object size:0x354 lbl_80525EAC = .data:0x80525EAC; // type:object size:0x34 -lbl_80525EE0 = .data:0x80525EE0; // type:object size:0x14 -lbl_80525EF4 = .data:0x80525EF4; // type:object size:0xC -lbl_80525F00 = .data:0x80525F00; // type:object size:0x18 -lbl_80525F18 = .data:0x80525F18; // type:object size:0x10 -lbl_80525F28 = .data:0x80525F28; // type:object size:0x10 -lbl_80525F38 = .data:0x80525F38; // type:object size:0x10 -lbl_80525F48 = .data:0x80525F48; // type:object size:0xC -lbl_80525F54 = .data:0x80525F54; // type:object size:0x14 -lbl_80525F68 = .data:0x80525F68; // type:object size:0x14 data:string -lbl_80525F7C = .data:0x80525F7C; // type:object size:0x14 data:string -lbl_80525F90 = .data:0x80525F90; // type:object size:0xC -lbl_80525F9C = .data:0x80525F9C; // type:object size:0x1C -lbl_80525FB8 = .data:0x80525FB8; // type:object size:0xC data:string -lbl_80525FC4 = .data:0x80525FC4; // type:object size:0x1C -lbl_80525FE0 = .data:0x80525FE0; // type:object size:0x1C -lbl_80525FFC = .data:0x80525FFC; // type:object size:0x1C -lbl_80526018 = .data:0x80526018; // type:object size:0xC -lbl_80526024 = .data:0x80526024; // type:object size:0x10 -lbl_80526034 = .data:0x80526034; // type:object size:0x10 -lbl_80526044 = .data:0x80526044; // type:object size:0x10 -lbl_80526054 = .data:0x80526054; // type:object size:0xC -lbl_80526060 = .data:0x80526060; // type:object size:0x18 data:4byte -lbl_80526078 = .data:0x80526078; // type:object size:0x10 -lbl_80526088 = .data:0x80526088; // type:object size:0xC -lbl_80526094 = .data:0x80526094; // type:object size:0xC data:string -lbl_805260A0 = .data:0x805260A0; // type:object size:0xC -lbl_805260AC = .data:0x805260AC; // type:object size:0xC -lbl_805260B8 = .data:0x805260B8; // type:object size:0xC -lbl_805260C4 = .data:0x805260C4; // type:object size:0xC -lbl_805260D0 = .data:0x805260D0; // type:object size:0xC -lbl_805260DC = .data:0x805260DC; // type:object size:0xC -lbl_805260E8 = .data:0x805260E8; // type:object size:0xC -lbl_805260F4 = .data:0x805260F4; // type:object size:0xC -lbl_80526100 = .data:0x80526100; // type:object size:0xC -lbl_8052610C = .data:0x8052610C; // type:object size:0xC -lbl_80526118 = .data:0x80526118; // type:object size:0xC -lbl_80526124 = .data:0x80526124; // type:object size:0xC -lbl_80526130 = .data:0x80526130; // type:object size:0xC -lbl_8052613C = .data:0x8052613C; // type:object size:0xC -lbl_80526148 = .data:0x80526148; // type:object size:0xC -lbl_80526154 = .data:0x80526154; // type:object size:0xC -lbl_80526160 = .data:0x80526160; // type:object size:0xC -lbl_8052616C = .data:0x8052616C; // type:object size:0xC -lbl_80526178 = .data:0x80526178; // type:object size:0xC -lbl_80526184 = .data:0x80526184; // type:object size:0xC -lbl_80526190 = .data:0x80526190; // type:object size:0xC -lbl_8052619C = .data:0x8052619C; // type:object size:0xC -lbl_805261A8 = .data:0x805261A8; // type:object size:0xC -lbl_805261B4 = .data:0x805261B4; // type:object size:0xC -lbl_805261C0 = .data:0x805261C0; // type:object size:0xC -lbl_805261CC = .data:0x805261CC; // type:object size:0xC -lbl_805261D8 = .data:0x805261D8; // type:object size:0xC -lbl_805261E4 = .data:0x805261E4; // type:object size:0x7C -__vt__17dLytPauseDisp01_c = .data:0x80526260; // type:object size:0x10 -__vt__56sFStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c> = .data:0x80526270; // type:object size:0x30 -__vt__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805262A0; // type:object size:0x30 -__vt__33sFStateFct_c<17dLytPauseDisp01_c> = .data:0x805262D0; // type:object size:0x18 -__vt__30sFState_c<17dLytPauseDisp01_c> = .data:0x805262E8; // type:object size:0x18 -__vt__63sFStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c> = .data:0x80526300; // type:object size:0x30 -__vt__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80526330; // type:object size:0x30 -__vt__40sFStateFct_c<24dLytCommonIconMaterial_c> = .data:0x80526360; // type:object size:0x18 -__vt__37sFState_c<24dLytCommonIconMaterial_c> = .data:0x80526378; // type:object size:0x18 -__vt__29dLytCommonIconMaterialPart2_c = .data:0x80526390; // type:object size:0x18 -__vt__29dLytCommonIconMaterialPart1_c = .data:0x805263A8; // type:object size:0x230 -lbl_805265D8 = .data:0x805265D8; // type:object size:0x38 +@22677 = .data:0x80525EE0; // type:object size:0x12 scope:local data:string +...data.0 = .data:0x80525EE0; // type:label scope:local +@22678 = .data:0x80525EF4; // type:object size:0xB scope:local data:string +@22679 = .data:0x80525F00; // type:object size:0x15 scope:local data:string +@22680 = .data:0x80525F18; // type:object size:0xD scope:local data:string +@22681 = .data:0x80525F28; // type:object size:0xE scope:local data:string +@22682 = .data:0x80525F38; // type:object size:0xE scope:local data:string +@22683 = .data:0x80525F48; // type:object size:0xB scope:local data:string +@22684 = .data:0x80525F54; // type:object size:0x13 scope:local data:string +@22685 = .data:0x80525F68; // type:object size:0x14 scope:local data:string +@22686 = .data:0x80525F7C; // type:object size:0x14 scope:local data:string +@22687 = .data:0x80525F90; // type:object size:0xA scope:local data:string +@22688 = .data:0x80525F9C; // type:object size:0x19 scope:local data:string +@22689 = .data:0x80525FB8; // type:object size:0xC scope:local data:string +@22690 = .data:0x80525FC4; // type:object size:0x1A scope:local data:string +@22691 = .data:0x80525FE0; // type:object size:0x19 scope:local data:string +@22692 = .data:0x80525FFC; // type:object size:0x1A scope:local data:string +@22693 = .data:0x80526018; // type:object size:0x9 scope:local data:string +@22694 = .data:0x80526024; // type:object size:0xD scope:local data:string +@22695 = .data:0x80526034; // type:object size:0xE scope:local data:string +@22696 = .data:0x80526044; // type:object size:0xE scope:local data:string +@22697 = .data:0x80526054; // type:object size:0xB scope:local data:string +sPaneNames = .data:0x80526060; // type:object size:0x18 scope:local data:4byte +@25173 = .data:0x80526078; // type:object size:0xF scope:local data:string +@25480 = .data:0x80526088; // type:object size:0xB scope:local data:string +@25481 = .data:0x80526094; // type:object size:0xC scope:local data:string +@23229 = .data:0x805260A0; // type:object size:0x9 scope:local data:string +@23230 = .data:0x805260AC; // type:object size:0x9 scope:local data:string +@23231 = .data:0x805260B8; // type:object size:0x9 scope:local data:string +@23232 = .data:0x805260C4; // type:object size:0x9 scope:local data:string +@23233 = .data:0x805260D0; // type:object size:0x9 scope:local data:string +@23234 = .data:0x805260DC; // type:object size:0x9 scope:local data:string +@23235 = .data:0x805260E8; // type:object size:0x9 scope:local data:string +@23236 = .data:0x805260F4; // type:object size:0x9 scope:local data:string +@23237 = .data:0x80526100; // type:object size:0x9 scope:local data:string +@23238 = .data:0x8052610C; // type:object size:0x9 scope:local data:string +@23239 = .data:0x80526118; // type:object size:0x9 scope:local data:string +@23240 = .data:0x80526124; // type:object size:0x9 scope:local data:string +@23241 = .data:0x80526130; // type:object size:0xB scope:local data:string +@23242 = .data:0x8052613C; // type:object size:0xB scope:local data:string +@23243 = .data:0x80526148; // type:object size:0xB scope:local data:string +@23244 = .data:0x80526154; // type:object size:0xB scope:local data:string +@23245 = .data:0x80526160; // type:object size:0xB scope:local data:string +@23246 = .data:0x8052616C; // type:object size:0xB scope:local data:string +@23247 = .data:0x80526178; // type:object size:0xB scope:local data:string +@23248 = .data:0x80526184; // type:object size:0xB scope:local data:string +@23249 = .data:0x80526190; // type:object size:0xB scope:local data:string +@23250 = .data:0x8052619C; // type:object size:0xB scope:local data:string +@23251 = .data:0x805261A8; // type:object size:0xB scope:local data:string +@23252 = .data:0x805261B4; // type:object size:0xB scope:local data:string +@23253 = .data:0x805261C0; // type:object size:0xB scope:local data:string +@23254 = .data:0x805261CC; // type:object size:0xB scope:local data:string +@23255 = .data:0x805261D8; // type:object size:0xB scope:local data:string +@23256 = .data:0x805261E4; // type:object size:0xB scope:local data:string +@LOCAL@setupDisp__17dLytPauseDisp01_cFv@sPaneTable = .data:0x805261F0; // type:object size:0x70 scope:local +__vt__17dLytPauseDisp01_c = .data:0x80526260; // type:object size:0xC scope:weak +__vt__56sFStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c> = .data:0x80526270; // type:object size:0x30 scope:weak +__vt__86sStateMgr_c<17dLytPauseDisp01_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805262A0; // type:object size:0x30 scope:weak +__vt__33sFStateFct_c<17dLytPauseDisp01_c> = .data:0x805262D0; // type:object size:0x14 scope:weak +__vt__30sFState_c<17dLytPauseDisp01_c> = .data:0x805262E8; // type:object size:0x18 scope:weak +__vt__63sFStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c> = .data:0x80526300; // type:object size:0x30 scope:weak +__vt__93sStateMgr_c<24dLytCommonIconMaterial_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80526330; // type:object size:0x30 scope:weak +__vt__40sFStateFct_c<24dLytCommonIconMaterial_c> = .data:0x80526360; // type:object size:0x14 scope:weak +__vt__37sFState_c<24dLytCommonIconMaterial_c> = .data:0x80526378; // type:object size:0x18 scope:weak +__vt__29dLytCommonIconMaterialPart2_c = .data:0x80526390; // type:object size:0x18 scope:weak +__vt__29dLytCommonIconMaterialPart1_c = .data:0x805263A8; // type:object size:0x18 scope:weak +@25909 = .data:0x80526438; // type:object size:0xC scope:local +@25910 = .data:0x80526444; // type:object size:0xC scope:local +@25911 = .data:0x80526450; // type:object size:0xC scope:local +@25912 = .data:0x8052645C; // type:object size:0xC scope:local +@25913 = .data:0x80526468; // type:object size:0xC scope:local +@25914 = .data:0x80526474; // type:object size:0xC scope:local +@25915 = .data:0x80526480; // type:object size:0xC scope:local +@25916 = .data:0x8052648C; // type:object size:0xC scope:local +@25917 = .data:0x80526498; // type:object size:0xC scope:local +@25918 = .data:0x805264A4; // type:object size:0xC scope:local +@25919 = .data:0x805264B0; // type:object size:0xC scope:local +@25920 = .data:0x805264BC; // type:object size:0xC scope:local +@25921 = .data:0x805264C8; // type:object size:0xC scope:local +@25922 = .data:0x805264D4; // type:object size:0xC scope:local +@25923 = .data:0x805264E0; // type:object size:0xC scope:local +@25924 = .data:0x805264EC; // type:object size:0xC scope:local +@25925 = .data:0x805264F8; // type:object size:0xC scope:local +@25926 = .data:0x80526504; // type:object size:0xC scope:local +@25928 = .data:0x80526510; // type:object size:0x20 scope:local data:string +@25929 = .data:0x80526530; // type:object size:0x1E scope:local data:string +@25930 = .data:0x80526550; // type:object size:0x20 scope:local data:string +@25931 = .data:0x80526570; // type:object size:0x22 scope:local data:string +@25932 = .data:0x80526594; // type:object size:0x23 scope:local data:string +@25933 = .data:0x805265B8; // type:object size:0x1F scope:local data:string +__vt__32sFStateID_c<17dLytPauseDisp01_c> = .data:0x805265D8; // type:object size:0x34 scope:weak @17534 = .data:0x80526610; // type:object size:0x16 scope:local data:string ...data.0 = .data:0x80526610; // type:label scope:local @17535 = .data:0x80526628; // type:object size:0xB scope:local data:string @@ -39953,8 +39979,8 @@ lbl_80572994 = .sdata:0x80572994; // type:object size:0x4 lbl_80572998 = .sdata:0x80572998; // type:object size:0x8 lbl_805729A0 = .sdata:0x805729A0; // type:object size:0x8 data:4byte lbl_805729A8 = .sdata:0x805729A8; // type:object size:0x8 data:wstring -lbl_805729B0 = .sdata:0x805729B0; // type:object size:0x4 data:4byte -lbl_805729B4 = .sdata:0x805729B4; // type:object size:0xC +sGroupName = .sdata:0x805729B0; // type:object size:0x4 scope:local data:4byte +@25479 = .sdata:0x805729B4; // type:object size:0x6 scope:local data:wstring sGroupName = .sdata:0x805729C0; // type:object size:0x4 scope:local data:4byte @23699 = .sdata:0x805729C4; // type:object size:0x1 scope:local sGroupName = .sdata:0x805729C8; // type:object size:0x4 scope:local data:4byte @@ -41974,7 +42000,7 @@ lbl_805758BC = .sbss:0x805758BC; // type:object size:0x4 align:4 data:float sItemList__9dAcItem_c = .sbss:0x805758C0; // type:object size:0x8 data:4byte lbl_805758C8 = .sbss:0x805758C8; // type:object size:0x8 data:4byte NUMBER_OF_ITEMS = .sbss:0x805758D0; // type:object size:0x4 data:4byte -lbl_805758D4 = .sbss:0x805758D4; // type:object size:0x1 data:byte +sIsPerformingInitialCollection__9dAcItem_c = .sbss:0x805758D4; // type:object size:0x1 data:byte TREASURE_TEMP_COLLECT = .sbss:0x805758D8; // type:object size:0x4 data:4byte CURRENT_COUNT_VALUE = .sbss:0x805758DC; // type:object size:0x4 data:4byte lbl_805758E0 = .sbss:0x805758E0; // type:object size:0x4 align:4 data:float @@ -45209,10 +45235,10 @@ lbl_8057A0D4 = .sdata2:0x8057A0D4; // type:object size:0x1 data:byte lbl_8057A0D5 = .sdata2:0x8057A0D5; // type:object size:0x3 data:string lbl_8057A0D8 = .sdata2:0x8057A0D8; // type:object size:0x4 align:4 data:float lbl_8057A0DC = .sdata2:0x8057A0DC; // type:object size:0x4 align:4 data:float -lbl_8057A0E0 = .sdata2:0x8057A0E0; // type:object size:0x4 align:4 data:float -lbl_8057A0E4 = .sdata2:0x8057A0E4; // type:object size:0x4 align:4 data:float -lbl_8057A0E8 = .sdata2:0x8057A0E8; // type:object size:0x4 align:4 data:float -lbl_8057A0F0 = .sdata2:0x8057A0F0; // type:object size:0x8 +@24993 = .sdata2:0x8057A0E0; // type:object size:0x4 scope:local align:4 data:float +@24994 = .sdata2:0x8057A0E4; // type:object size:0x4 scope:local align:4 data:float +@25578 = .sdata2:0x8057A0E8; // type:object size:0x4 scope:local align:4 data:float +@LOCAL@getQuestItemId__17dLytPauseDisp01_cCFl@sQuestItemTable = .sdata2:0x8057A0F0; // type:object size:0x8 scope:local @18239 = .sdata2:0x8057A0F8; // type:object size:0x4 scope:local align:4 data:float @18240 = .sdata2:0x8057A0FC; // type:object size:0x4 scope:local align:4 data:float @23584 = .sdata2:0x8057A100; // type:object size:0x4 scope:local align:4 data:float @@ -51493,13 +51519,19 @@ LytPauseDisp00__STATE_IN = .bss:0x805B16C0; // type:object size:0x40 data:4byte LytPauseDisp00__STATE_WAIT = .bss:0x805B1700; // type:object size:0x40 data:4byte LytPauseDisp00__STATE_SELECT = .bss:0x805B1740; // type:object size:0x80 data:4byte LytPauseDisp00__STATE_GET_DEMO = .bss:0x805B17C0; // type:object size:0x70 data:4byte -lbl_805B1830 = .bss:0x805B1830; // type:object size:0x10 -LytPauseDisp01__STATE_NONE = .bss:0x805B1840; // type:object size:0x40 data:4byte -LytPauseDisp01__STATE_IN = .bss:0x805B1880; // type:object size:0x40 data:4byte -LytPauseDisp01__STATE_WAIT = .bss:0x805B18C0; // type:object size:0x40 data:4byte -LytPauseDisp01__STATE_SELECT = .bss:0x805B1900; // type:object size:0x40 data:4byte -LytPauseDisp01__STATE_GET_DEMO = .bss:0x805B1940; // type:object size:0x40 data:4byte -LytPauseDisp01__STATE_OUT = .bss:0x805B1980; // type:object size:0x30 data:4byte +@22656 = .bss:0x805B1830; // type:object size:0xC scope:local +...bss.0 = .bss:0x805B1830; // type:label scope:local +StateID_None__17dLytPauseDisp01_c = .bss:0x805B1840; // type:object size:0x30 data:4byte +@22660 = .bss:0x805B1870; // type:object size:0xC scope:local +StateID_In__17dLytPauseDisp01_c = .bss:0x805B1880; // type:object size:0x30 data:4byte +@22664 = .bss:0x805B18B0; // type:object size:0xC scope:local +StateID_Wait__17dLytPauseDisp01_c = .bss:0x805B18C0; // type:object size:0x30 data:4byte +@22668 = .bss:0x805B18F0; // type:object size:0xC scope:local +StateID_Select__17dLytPauseDisp01_c = .bss:0x805B1900; // type:object size:0x30 data:4byte +@22672 = .bss:0x805B1930; // type:object size:0xC scope:local +StateID_GetDemo__17dLytPauseDisp01_c = .bss:0x805B1940; // type:object size:0x30 data:4byte +@22676 = .bss:0x805B1970; // type:object size:0xC scope:local +StateID_Out__17dLytPauseDisp01_c = .bss:0x805B1980; // type:object size:0x30 data:4byte @17521 = .bss:0x805B19B0; // type:object size:0xC scope:local ...bss.0 = .bss:0x805B19B0; // type:label scope:local StateID_None__15dLytPauseInfo_c = .bss:0x805B19C0; // type:object size:0x30 data:4byte diff --git a/configure.py b/configure.py index 9a526a07..bc7d98a3 100644 --- a/configure.py +++ b/configure.py @@ -547,7 +547,7 @@ config.libs = [ Object(NonMatching, "d/lyt/d_lyt_boss_gauge.cpp"), Object(Matching, "d/lyt/d_lyt_pause_back.cpp"), Object(NonMatching, "d/lyt/d_lyt_pause_disp_00.cpp"), - Object(NonMatching, "d/lyt/d_lyt_pause_disp_01.cpp"), + Object(Matching, "d/lyt/d_lyt_pause_disp_01.cpp"), Object(Matching, "d/lyt/d_lyt_pause_info.cpp"), Object(Matching, "d/lyt/d_lyt_pause_text.cpp"), Object(Matching, "d/lyt/d_lyt_save_msg_window.cpp"), diff --git a/include/d/a/d_a_item.h b/include/d/a/d_a_item.h index 3341db31..669673f5 100644 --- a/include/d/a/d_a_item.h +++ b/include/d/a/d_a_item.h @@ -70,6 +70,7 @@ public: static u32 getCurrentWalletCapacity(); static u32 getHeartContainerHealthCount(); + static u32 getGratitudeCrystalCount(); static u32 getKeyPieceCount(); static u32 getSmallKeyCount(); @@ -96,7 +97,13 @@ public: static void healLink(u32 amount, bool); // move to dAcPy_c + static bool isPerformingInitialCollection() { + return sIsPerformingInitialCollection; + } + private: + static bool sIsPerformingInitialCollection; + /* 0x334 */ UNKTYPE *mpMdl; // Model has its own handling system /* 0x338 */ dShadowCircle_c mShdw; /* 0x340 */ mVec3_c mField_0x340; diff --git a/include/d/a/d_a_itembase.h b/include/d/a/d_a_itembase.h index 90e81c14..231f92f8 100644 --- a/include/d/a/d_a_itembase.h +++ b/include/d/a/d_a_itembase.h @@ -148,7 +148,7 @@ enum ITEM_ID { /* 0x08C */ ITEM_BIG_BUG_NET = 140, /* 0x08D */ ITEM_FARON_GRASSHOPPER = 141, /* 0x08E */ ITEM_WOODLAND_RHINO_BEETLE = 142, - /* 0x08F */ ITEM_DEKU_HORNET_ = 143, + /* 0x08F */ ITEM_DEKU_HORNET = 143, /* 0x090 */ ITEM_SKYLOFT_MANTIS = 144, /* 0x091 */ ITEM_VOLCANIC_LADYBUG = 145, /* 0x092 */ ITEM_BLESSED_BUTTERFLY = 146, diff --git a/include/d/d_cs_base.h b/include/d/d_cs_base.h index 54eedd01..7bce9e41 100644 --- a/include/d/d_cs_base.h +++ b/include/d/d_cs_base.h @@ -9,6 +9,7 @@ #include "m/m2d.h" #include "m/m_angle.h" #include "m/m_vec.h" +#include "nw4r/lyt/lyt_pane.h" class dCsBase_c : public dCs_c { public: @@ -47,6 +48,10 @@ public: mCursorStick.setShouldBeOn(visible); } + void setCursorStickTargetPane(const nw4r::lyt::Pane *target) { + mCursorStick.setTargetPane(target); + } + private: static dCsBase_c *sInstance; void setCurrentLyt(int lyt); diff --git a/include/d/d_pad_nav.h b/include/d/d_pad_nav.h index d481f0d0..da962fad 100644 --- a/include/d/d_pad_nav.h +++ b/include/d/d_pad_nav.h @@ -38,10 +38,18 @@ inline bool isPointerVisible() { return sIsPointerVisible; } +inline bool isPrevPointerVisible() { + return sPrevIsPointerVisible; +} + inline bool isCursorStickVisible() { return sIsCursorStickVisible; } +inline s32 getFSStickNavDirection() { + return sFSStickNavDirection; +} + void init(); void calc(); void setNavEnabled(bool navEnabled, bool autoReturnToPointerNav); diff --git a/include/d/lyt/d_lyt_common_arrow.h b/include/d/lyt/d_lyt_common_arrow.h index 1cfe53b7..2625b329 100644 --- a/include/d/lyt/d_lyt_common_arrow.h +++ b/include/d/lyt/d_lyt_common_arrow.h @@ -36,24 +36,24 @@ private: void unbindAt(s32); void tickDown(d2d::AnmGroup_c *); void fn_80168880(); - UI_STATE_MGR_DECLARE(dLytCommonArrow_c); + + /* 0x04 */ UI_STATE_MGR_DECLARE(dLytCommonArrow_c); /* 0x40 */ d2d::LytBase_c mLytBase; d2d::ResAccIf_c mResAcc; - d2d::AnmGroup_c mAnmGroups[0x9]; + d2d::AnmGroup_c mAnmGroups[9]; dCursorHitCheckLyt_c mCsHitCheck; - nw4r::lyt::Bounding *mBoundingL; - nw4r::lyt::Bounding *mBoundingR; - s32 mType; - s32 field_0x6B4; - s32 field_0x6B8; - s32 field_0x6BC; - s32 field_0x6C0; - s32 mTimer; - u8 mInRequested; - u8 mOutRequested; - u8 field_0x6CA; - u8 field_0x6CB; - u8 field_0x6CC; + /* 0x6A8 */ nw4r::lyt::Bounding *mpBoundings[2]; + /* 0x6B0 */ s32 mType; + /* 0x6B4 */ s32 mTargetedBounding; + /* 0x6B8 */ s32 field_0x6B8; + /* 0x6BC */ s32 field_0x6BC; + /* 0x6C0 */ s32 field_0x6C0; + /* 0x6C4 */ s32 mTimer; + /* 0x6C8 */ bool mInRequested; + /* 0x6C9 */ bool mOutRequested; + /* 0x6CA */ u8 field_0x6CA; + /* 0x6CB */ u8 field_0x6CB; + /* 0x6CC */ u8 field_0x6CC; }; #endif diff --git a/include/d/lyt/d_lyt_common_icon_item_maps.h b/include/d/lyt/d_lyt_common_icon_item_maps.h index 52456d34..248ada9c 100644 --- a/include/d/lyt/d_lyt_common_icon_item_maps.h +++ b/include/d/lyt/d_lyt_common_icon_item_maps.h @@ -15,6 +15,24 @@ #define LYT_CMN_BugLanayruAnt (10) // [10] tr_bugIcon_10.tpl #define LYT_CMN_BugEldinRoller (11) // [11] tr_bugIcon_11.tpl +// Treasure +#define LYT_CMN_HORNET_LARVAE (0) // [ 1] uk_soaHachisu_00.tpl +#define LYT_CMN_BIRD_FEATHER (1) // [ 2] uk_sobHaneA_00.tpl +#define LYT_CMN_TUMBLEWEED (2) // [ 3] uk_socTumble_00.tpl +#define LYT_CMN_LIZALFOS_TAIL (3) // [ 0] tr_sozaiIcon_03.tpl +#define LYT_CMN_ELDIN_ORE (4) // [ 4] uk_soeKoseki_00.tpl +#define LYT_CMN_ANCIENT_FLOWER (5) // [ 5] uk_sofHana_00.tpl +#define LYT_CMN_AMBER_RELIC (6) // [ 6] uk_sogMagatamaA_00.tpl +#define LYT_CMN_DUSK_RELOC (7) // [ 7] uk_sohMagatamaB_00.tpl +#define LYT_CMN_JELLY_BLOB (8) // [ 8] uk_soiPuyo_00.tpl +#define LYT_CMN_MONSTER_CLAW (9) // [ 9] uk_sojClaw_00.tpl +#define LYT_CMN_MONSTER_HORN (10) // [11] uk_solHorn_00.tpl +#define LYT_CMN_ORNAMENTAL_SKULL (11) // [10] uk_sokDokuroA_00.tpl +#define LYT_CMN_EVIL_CRYSTAL (12) // [12] uk_somEvil_00.tpl +#define LYT_CMN_BLUE_BIRD_FEATHER (13) // [13] uk_sonHaneB_00.tpl +#define LYT_CMN_GOLDEN_SKULL (14) // [14] uk_sooDokuroB_00.tpl +#define LYT_CMN_GODDESS_PLUME (15) // [15] uk_sopGoddess_00.tpl + // Items #define LYT_CMN_ItemBombBag (0) // [ 8] uc_bomb_00.tpl #define LYT_CMN_ItemBow (1) // [ 9] uc_bowA_00.tpl @@ -34,7 +52,7 @@ #define LYT_CMN_ItemBigBugnet (15) // [14] uc_netB_00.tpl #define LYT_CMN_ItemBoatCannon (16) // [ 7] uc_boatCannon_00.tpl #define LYT_CMN_ItemHarp (17) // [ 0] tr_tategoto_00.tpl -#define LYT_CMN_ItemInvalid (18) // ------------------------- +#define LYT_CMN_ItemInvalid (18) // ------------------------- // Pouch Items #define LYT_CMN_PouchPotionHealyh (0) // [12] uc_bottleKusuriA_00.tpl @@ -113,6 +131,6 @@ #define LYT_CMN_DowsingZelda (19) // [13] tr_dauzTarget_19.tpl #define LYT_CMN_DowsingTrialGate (20) // [14] tr_dauzTarget_20.tpl #define LYT_CMN_DowsingNewPlantSpecies (21) // [15] tr_dauzTarget_21.tpl -#define LYT_CMN_DowsingInvalid (22) // ------------------------- +#define LYT_CMN_DowsingInvalid (22) // ------------------------- #endif diff --git a/include/d/lyt/d_lyt_common_icon_material.h b/include/d/lyt/d_lyt_common_icon_material.h index a6922592..8febea8a 100644 --- a/include/d/lyt/d_lyt_common_icon_material.h +++ b/include/d/lyt/d_lyt_common_icon_material.h @@ -8,26 +8,18 @@ #include "nw4r/lyt/lyt_bounding.h" #include "s/s_State.hpp" -class dLytCommonIconMaterialPartBase_c { -public: - virtual ~dLytCommonIconMaterialPartBase_c() {} - virtual nw4r::lyt::Pane *getPane() = 0; - virtual d2d::LytBase_c *getLyt() = 0; - virtual const char *getName() const = 0; -}; - /** Material - Bug */ -class dLytCommonIconMaterialPart1_c : public dLytCommonIconMaterialPartBase_c { +class dLytCommonIconMaterialPart1_c { public: dLytCommonIconMaterialPart1_c() {} virtual ~dLytCommonIconMaterialPart1_c() {} - virtual nw4r::lyt::Pane *getPane() override { + virtual nw4r::lyt::Pane *getPane() { return mLyt.getLayout()->GetRootPane(); } - virtual d2d::LytBase_c *getLyt() override { + virtual d2d::LytBase_c *getLyt() { return &mLyt; } - virtual const char *getName() const override { + virtual const char *getName() const { return mLyt.getName(); } @@ -78,17 +70,17 @@ private: }; /** Material - Treasure */ -class dLytCommonIconMaterialPart2_c : public dLytCommonIconMaterialPartBase_c { +class dLytCommonIconMaterialPart2_c { public: dLytCommonIconMaterialPart2_c() {} virtual ~dLytCommonIconMaterialPart2_c() {} - virtual nw4r::lyt::Pane *getPane() override { + virtual nw4r::lyt::Pane *getPane() { return mLyt.getLayout()->GetRootPane(); } - virtual d2d::LytBase_c *getLyt() override { + virtual d2d::LytBase_c *getLyt() { return &mLyt; } - virtual const char *getName() const override { + virtual const char *getName() const { return mLyt.getName(); } @@ -185,6 +177,9 @@ public: const nw4r::lyt::Bounding *getBounding() const; + STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytCommonIconMaterial_c); + STATE_MGR_DEFINE_UTIL_ISSTATE(dLytCommonIconMaterial_c); + private: STATE_FUNC_DECLARE(dLytCommonIconMaterial_c, None); STATE_FUNC_DECLARE(dLytCommonIconMaterial_c, In); diff --git a/include/d/lyt/d_lyt_control_game.h b/include/d/lyt/d_lyt_control_game.h index dc552d18..0278133a 100644 --- a/include/d/lyt/d_lyt_control_game.h +++ b/include/d/lyt/d_lyt_control_game.h @@ -29,6 +29,10 @@ public: return mItemForPauseDemo; } + u16 getItemCountForPauseDemo() const { + return mItemCountForPauseDemo; + } + bool getField_0x15C67() const { return field_0x15C67; } @@ -57,8 +61,10 @@ private: /* 0x15C60 */ u16 mItemForPauseDemo; - /* 0x15C62 */ u8 _0x15C62[0x15C67 - 0x15C62]; + /* 0x15C62 */ u8 _0x15C62[0x15C64 - 0x15C62]; + /* 0x15C64 */ u16 mItemCountForPauseDemo; + /* 0x15C66 */ u8 field_0x15C66; /* 0x15C67 */ bool field_0x15C67; static dLytControlGame_c *sInstance; diff --git a/include/d/lyt/d_lyt_cursor_stick.h b/include/d/lyt/d_lyt_cursor_stick.h index 1d24cd50..ab8bdb6b 100644 --- a/include/d/lyt/d_lyt_cursor_stick.h +++ b/include/d/lyt/d_lyt_cursor_stick.h @@ -23,7 +23,7 @@ public: static bool drawDirectly(); void setPriority(u8 priority); - void setTargetPane(nw4r::lyt::Pane *pane); + void setTargetPane(const nw4r::lyt::Pane *pane); void setShouldBeOn(bool value) { mShouldBeOn = value; @@ -47,7 +47,7 @@ private: /* 0x3AC */ d2d::dLytSub mLyt; /* 0x440 */ d2d::AnmGroup_c mAnm[1]; /* 0x480 */ nw4r::lyt::Pane *mpPanes[5]; - /* 0x494 */ nw4r::lyt::Pane *mpTargetPane; + /* 0x494 */ const nw4r::lyt::Pane *mpTargetPane; /* 0x498 */ bool mShouldBeOn; }; diff --git a/include/d/lyt/d_lyt_pause.h b/include/d/lyt/d_lyt_pause.h index 5aeda5ab..6614007d 100644 --- a/include/d/lyt/d_lyt_pause.h +++ b/include/d/lyt/d_lyt_pause.h @@ -3,6 +3,7 @@ #include "d/lyt/d2d.h" #include "egg/gfx/eggCpuTexture.h" +#include "nw4r/lyt/lyt_pane.h" class dLytPauseMgr_c { public: @@ -14,26 +15,52 @@ public: return &mResAcc1; } + d2d::ResAccIf_c *getResAcc2() { + return &mResAcc2; + } + EGG::CpuTexture *getBgTexture() { return mpBgTexture; } + bool getField_0x0831() const { + return field_0x0831; + } + + bool getField_0x0832() const { + return field_0x0832; + } + bool getField_0x083B() const { return field_0x083B; } - bool getField_0x0841() const { - return field_0x0841; + bool getField_0x083E() const { + return field_0x083E; } + bool getField_0x0840() const { + return field_0x0840; + } + + bool isStateWait() const; + enum SelectionType_e { SELECT_DOWSING = 2, + SELECT_INSECT = 4, + SELECT_QUEST_MATERIAL = 5, SELECT_ITEM = 6, SELECT_CATEGORY = 7, SELECT_FIRE = 8, SELECT_RING = 9, + SELECT_NONE = 10, }; + void setSelection(SelectionType_e type, s32 id, bool restricted); + + bool isCurrentSelectionRestricted() const { + return mCurrentSelectionIsRestricted; + } SelectionType_e getCurrentSelectionType() const { return mCurrentSelectionType; } @@ -42,29 +69,41 @@ public: return mCurrentSelectionId; } + nw4r::lyt::Pane *getArrowBounding(int idx) const; + nw4r::lyt::Pane *setSelectedArrowBounding(int idx) const; + private: static dLytPauseMgr_c *sInstance; /* 0x0000 */ u8 _0x0000[0x00C8 - 0x0000]; - - /* 0x00C8 */ d2d::ResAccIf_c mResAcc1; - /* 0x0438 */ u8 _0x0438[0x0814 - 0x0438]; + /* 0x00C8 */ d2d::ResAccIf_c mResAcc1; + /* 0x0438 */ d2d::ResAccIf_c mResAcc2; + + /* 0x07A8 */ u8 _0x0438[0x0814 - 0x07A8]; /* 0x0814 */ EGG::CpuTexture *mpBgTexture; /* 0x0818 */ SelectionType_e mCurrentSelectionType; /* 0x081C */ u8 _0x081C[0x082C - 0x081C]; - + /* 0x082C */ u16 mCurrentSelectionId; - - /* 0x0830 */ u8 _0x0830[0x083B - 0x082E]; + + /* 0x082E */ u8 _0x082E[0x0831 - 0x082E]; + + /* 0x0831 */ bool field_0x0831; + /* 0x0832 */ bool field_0x0832; + + /* 0x0832 */ u8 _0x0832[0x083B - 0x0833]; /* 0x083B */ bool field_0x083B; - /* 0x083D */ u8 _0x083D[0x0841 - 0x083C]; + /* 0x083C */ u8 _0x083C[0x083E - 0x083C]; - /* 0x0841 */ bool field_0x0841; + /* 0x083E */ bool field_0x083E; + /* 0x083F */ bool field_0x083F; + /* 0x0840 */ bool field_0x0840; + /* 0x0841 */ bool mCurrentSelectionIsRestricted; }; #endif diff --git a/include/d/lyt/d_lyt_pause_disp_01.h b/include/d/lyt/d_lyt_pause_disp_01.h index 49b4cd97..41d2e769 100644 --- a/include/d/lyt/d_lyt_pause_disp_01.h +++ b/include/d/lyt/d_lyt_pause_disp_01.h @@ -1,9 +1,11 @@ #ifndef LYT_PAUSE_DISP_01_H #define LYT_PAUSE_DISP_01_H +#include "common.h" #include "d/d_cursor_hit_check.h" #include "d/lyt/d2d.h" #include "d/lyt/d_lyt_common_icon_material.h" +#include "nw4r/lyt/lyt_pane.h" #include "s/s_State.hpp" class dLytPauseDisp01_c { @@ -11,7 +13,16 @@ public: dLytPauseDisp01_c(); virtual ~dLytPauseDisp01_c() {} - void init(); + bool build(); + bool remove(); + bool execute(); + bool draw(); + + void drawDirectly(); + void requestIn(bool scroll); + void requestOut(bool scroll); + void requestSelect(); + void requestUnselect(); STATE_FUNC_DECLARE(dLytPauseDisp01_c, None); STATE_FUNC_DECLARE(dLytPauseDisp01_c, In); @@ -21,15 +32,49 @@ public: STATE_FUNC_DECLARE(dLytPauseDisp01_c, Out); private: - void displayElement(int idx, float value); + void setAnm(int idx, f32 value); + void stopAnm(int idx); - /* 0x0004 */ STATE_MGR_DECLARE(dLytPauseDisp01_c); - /* 0x0040 */ d2d::LytBase_c mLytBase; - /* 0x00D0 */ d2d::AnmGroup_c field_0x00D0[15]; - /* 0x0490 */ dLytCommonIconMaterial_c field_0x2050[28]; - /* 0x96B0 */ d2d::SubPaneList mSubpanes; - /* 0x96BC */ d2d::SubPaneListNode field_0xE11C[28]; - /* 0x987C */ dCursorHitCheckLyt_c field_0xE29C; + void setupDisp(); + void setupInsects(); + void setupMaterials(); + + void showInsectsAndMaterials(); + s32 updateSelection(); + s32 getPointerPane() const; + void hideInsectsAndMaterials(); + + bool shouldInsectBeDisplayed(s32 insectIdx) const; + u16 getInsectItemId(s32 insectIdx) const; + s32 getInsectIcon(s32 insectIdx) const; + s32 getInsectCountByIndex(s32 insectIdx) const; + + u16 getQuestItemId(s32 questItemIndex) const; + + bool shouldMaterialBeDisplayed(s32 materialIdx) const; + u16 getMaterialItemId(s32 materialIdx) const; + s32 getMaterialIcon(s32 materialIdx) const; + s32 getMaterialCountByIndex(s32 materialIdx) const; + + /* 0x0004 */ UI_STATE_MGR_DECLARE(dLytPauseDisp01_c); + /* 0x0040 */ d2d::LytBase_c mLyt; + /* 0x00D0 */ d2d::AnmGroup_c mAnm[15]; + /* 0x0490 */ dLytCommonIconMaterial_c mIcons[28]; + /* 0x96B0 */ d2d::SubPaneList mSubpaneList; + /* 0x96BC */ d2d::SubPaneListNode mSubpanes[28]; + /* 0x987C */ dCursorHitCheckLyt_c mCsHitCheck; + /* 0x98A4 */ nw4r::lyt::Pane *mpPanes[6]; + /* 0x98BC */ s32 mStep; + /* 0x98C0 */ s32 mPrevNavTarget; + /* 0x98C4 */ s32 mCurrentNavTarget; + /* 0x98C8 */ s32 mTimer; + /* 0x98CC */ bool mInRequest; + /* 0x98CD */ bool mOutRequest; + /* 0x98CE */ bool field_0x98CE; + /* 0x98CF */ bool mIsVisible; + /* 0x98D0 */ bool mDoScrollAnim; + /* 0x98D1 */ bool field_0x98D1; + /* 0x98D2 */ bool mSelectToggle; }; #endif diff --git a/src/d/lyt/d_lyt_common_arrow.cpp b/src/d/lyt/d_lyt_common_arrow.cpp index 024e81ab..c4c3b11a 100644 --- a/src/d/lyt/d_lyt_common_arrow.cpp +++ b/src/d/lyt/d_lyt_common_arrow.cpp @@ -37,6 +37,12 @@ static const d2d::LytBrlanMapping brlanMap[] = { #define ANIM_INPUT 7 #define ANIM_OUT 8 +#define NUM_ANIMS 9 + +#define PANE_BOUNDING_L 0 +#define PANE_BOUNDING_R 1 +#define PANE_BOUNDING_NONE 2 + dLytCommonArrow_c::dLytCommonArrow_c() : mStateMgr(*this, sStateID::null) {} bool dLytCommonArrow_c::build() { @@ -45,13 +51,13 @@ bool dLytCommonArrow_c::build() { mLytBase.build("commonArrow_00.brlyt", &mResAcc); mLytBase.setPriority(0x86); - for (int i = 0; i < 9; i++) { + for (int i = 0; i < NUM_ANIMS; i++) { mAnmGroups[i].init(brlanMap[i].mFile, &mResAcc, mLytBase.getLayout(), brlanMap[i].mName); } mCsHitCheck.init(mLytBase.getLayout()->GetRootPane(), 1, 0, 0); dCsMgr_c::GetInstance()->registCursorTarget(&mCsHitCheck); - mBoundingL = mLytBase.findBounding("B_arrowL_00"); - mBoundingR = mLytBase.findBounding("B_arrowR_00"); + mpBoundings[PANE_BOUNDING_L] = mLytBase.findBounding("B_arrowL_00"); + mpBoundings[PANE_BOUNDING_R] = mLytBase.findBounding("B_arrowR_00"); mStateMgr.changeState(StateID_None); setState(0); return true; @@ -60,7 +66,7 @@ bool dLytCommonArrow_c::build() { bool dLytCommonArrow_c::remove() { dCsMgr_c::GetInstance()->unregistCursorTarget(&mCsHitCheck); mLytBase.unbindAnims(); - for (int i = 0; i < 9; i++) { + for (int i = 0; i < NUM_ANIMS; i++) { mAnmGroups[i].remove(); } return true; @@ -104,7 +110,7 @@ bool dLytCommonArrow_c::requestIn() { if (!mStateMgr.getStateID()->isEqual(StateID_None)) { return false; } - mInRequested = 1; + mInRequested = true; return true; } @@ -148,33 +154,33 @@ void dLytCommonArrow_c::tickDown(d2d::AnmGroup_c *ctrl) { void dLytCommonArrow_c::fn_80168880() { int i = -1; if (!dPadNav::isPointerVisible()) { - field_0x6B4 = 2; + mTargetedBounding = PANE_BOUNDING_NONE; return; } dCursorHitCheck_c *d = dCsBase_c::GetInstance()->getHitCheck(); if (d != nullptr && d->getType() == 'lyt ') { - if (static_cast(d)->getHitPane() == mBoundingL) { + if (static_cast(d)->getHitPane() == mpBoundings[PANE_BOUNDING_L]) { i = 0; - } else if (static_cast(d)->getHitPane() == mBoundingR) { + } else if (static_cast(d)->getHitPane() == mpBoundings[PANE_BOUNDING_R]) { i = 1; } } if (i >= 0) { - field_0x6B4 = i; + mTargetedBounding = i; } else { - field_0x6B4 = 2; + mTargetedBounding = PANE_BOUNDING_NONE; } } void dLytCommonArrow_c::initializeState_None() { mLytBase.unbindAnims(); - mInRequested = 0; - mOutRequested = 0; + mInRequested = false; + mOutRequested = false; field_0x6CA = 0; field_0x6CB = 0; - field_0x6B4 = 2; + mTargetedBounding = PANE_BOUNDING_NONE; field_0x6B8 = 2; field_0x6BC = 2; field_0x6C0 = 2; @@ -183,12 +189,12 @@ void dLytCommonArrow_c::initializeState_None() { field_0x6CC = 1; } void dLytCommonArrow_c::executeState_None() { - if (mInRequested == 1) { + if (mInRequested == true) { mStateMgr.changeState(StateID_In); } } void dLytCommonArrow_c::finalizeState_None() { - mInRequested = 0; + mInRequested = false; displayElement(ANIM_LOOP, 0.0f); } @@ -230,7 +236,7 @@ void dLytCommonArrow_c::initializeState_Wait() { } void dLytCommonArrow_c::executeState_Wait() { - if (mOutRequested == 1) { + if (mOutRequested == true) { mStateMgr.changeState(StateID_Out); return; } @@ -297,13 +303,13 @@ void dLytCommonArrow_c::finalizeState_Wait() {} void dLytCommonArrow_c::initializeState_Out() { mTimer = 0; displayElement(ANIM_OUT, 0.0f); - mOutRequested = 0; + mOutRequested = false; } void dLytCommonArrow_c::executeState_Out() { switch (mTimer) { case 0: { d2d::AnmGroup_c *s = &mAnmGroups[ANIM_OUT]; - if (s->isEndReached() == 1) { + if (s->isEndReached() == true) { mTimer = 1; field_0x6CA = 1; } diff --git a/src/d/lyt/d_lyt_cursor_stick.cpp b/src/d/lyt/d_lyt_cursor_stick.cpp index a5749057..25be21e1 100644 --- a/src/d/lyt/d_lyt_cursor_stick.cpp +++ b/src/d/lyt/d_lyt_cursor_stick.cpp @@ -150,7 +150,7 @@ void dLytCursorStick_c::executeState_On() { } void dLytCursorStick_c::finalizeState_On() {} -void dLytCursorStick_c::setTargetPane(nw4r::lyt::Pane *pane) { +void dLytCursorStick_c::setTargetPane(const nw4r::lyt::Pane *pane) { mpTargetPane = pane; positionToTarget(); } diff --git a/src/d/lyt/d_lyt_pause_disp_01.cpp b/src/d/lyt/d_lyt_pause_disp_01.cpp index 4d790486..5b315c2d 100644 --- a/src/d/lyt/d_lyt_pause_disp_01.cpp +++ b/src/d/lyt/d_lyt_pause_disp_01.cpp @@ -1,5 +1,30 @@ #include "d/lyt/d_lyt_pause_disp_01.h" +#include "common.h" +#include "d/a/d_a_item.h" +#include "d/a/d_a_itembase.h" +#include "d/d_cs_base.h" +#include "d/d_cursor_hit_check.h" +#include "d/d_pad_nav.h" +#include "d/d_rumble.h" +#include "d/flag/storyflag_manager.h" +#include "d/lyt/d2d.h" +#include "d/lyt/d_lyt_common_icon_item_maps.h" +#include "d/lyt/d_lyt_common_icon_material.h" +#include "d/lyt/d_lyt_control_game.h" +#include "d/lyt/d_lyt_pause.h" +#include "d/lyt/d_textbox.h" +#include "d/snd/d_snd_small_effect_mgr.h" +#include "d/snd/d_snd_wzsound.h" +#include "m/m_vec.h" +#include "nw4r/lyt/lyt_bounding.h" +#include "nw4r/lyt/lyt_group.h" +#include "nw4r/math/math_types.h" +#include "rvl/MTX/mtxvec.h" +#include "sized_string.h" +#include "toBeSorted/counters/counter.h" +#include "toBeSorted/d_emitter.h" + STATE_DEFINE(dLytPauseDisp01_c, None); STATE_DEFINE(dLytPauseDisp01_c, In); STATE_DEFINE(dLytPauseDisp01_c, Wait); @@ -7,28 +32,997 @@ STATE_DEFINE(dLytPauseDisp01_c, Select); STATE_DEFINE(dLytPauseDisp01_c, GetDemo); STATE_DEFINE(dLytPauseDisp01_c, Out); +static const d2d::LytBrlanMapping brlanMap[] = { + { "pause_01_in.brlan", "G_inOut_00"}, + { "pause_01_onOff.brlan", "G_tegamiB_00"}, + { "pause_01_onOff.brlan", "G_terryBug_00"}, + { "pause_01_onOff.brlan", "G_garagara_00"}, + { "pause_01_onOff.brlan", "G_genki_00"}, + { "pause_01_out.brlan", "G_inOut_00"}, + { "pause_01_have.brlan", "G_tegamiB_00"}, + { "pause_01_have.brlan", "G_terryBug_00"}, + { "pause_01_have.brlan", "G_garagara_00"}, + { "pause_01_have.brlan", "G_genki_00"}, + { "pause_01_loop.brlan", "G_loop_00"}, + { "pause_01_scrollRIn.brlan", "G_scroll_00"}, + {"pause_01_scrollROut.brlan", "G_scroll_00"}, + { "pause_01_scrollLIn.brlan", "G_scroll_00"}, + {"pause_01_scrollLOut.brlan", "G_scroll_00"}, +}; + +#define PAUSE_DISP_01_ANIM_IN 0 +#define PAUSE_DISP_01_ANIM_ONOFF_TEGAMI 1 +#define PAUSE_DISP_01_ANIM_ONOFF_TERRY_BUG 2 +#define PAUSE_DISP_01_ANIM_ONOFF_GARAGARA 3 +#define PAUSE_DISP_01_ANIM_ONOFF_GENKI 4 +#define PAUSE_DISP_01_ANIM_OUT 5 +#define PAUSE_DISP_01_ANIM_HAVE_TEGAMI 6 +#define PAUSE_DISP_01_ANIM_HAVE_TERRY_BUG 7 +#define PAUSE_DISP_01_ANIM_HAVE_GARAGARA 8 +#define PAUSE_DISP_01_ANIM_HAVE_GENKI 9 +#define PAUSE_DISP_01_ANIM_LOOP 10 +#define PAUSE_DISP_01_ANIM_SCROLL_R_IN 11 +#define PAUSE_DISP_01_ANIM_SCROLL_R_OUT 12 +#define PAUSE_DISP_01_ANIM_SCROLL_L_IN 13 +#define PAUSE_DISP_01_ANIM_SCROLL_L_OUT 14 + +#define PAUSE_DISP_01_ANIM_OFFSET_ONOFF PAUSE_DISP_01_ANIM_ONOFF_TEGAMI +#define PAUSE_DISP_01_ANIM_OFFSET_HAVE PAUSE_DISP_01_ANIM_HAVE_TEGAMI +#define PAUSE_DISP_01_NUM_ANIMS 15 + +#define PAUSE_DISP_01_NUM_SUBPANES 28 + +#define PAUSE_DISP_01_OFFSET_INSECTS 0 +#define PAUSE_DISP_01_NUM_INSECTS 12 +#define PAUSE_DISP_01_OFFSET_MATERIALS PAUSE_DISP_01_NUM_INSECTS +#define PAUSE_DISP_01_NUM_MATERIALS 16 + +static const char *sGroupName = "G_ref_00"; + +static const char *sPaneNames[] = { + "B_tegamiB_00", "B_terryBug_00", "B_garagara_00", "B_genki_00", nullptr, nullptr, +}; + +#define PAUSE_DISP_01_PANE_TEGAMI 0 +#define PAUSE_DISP_01_PANE_TERRY_BUG 1 +#define PAUSE_DISP_01_PANE_GARAGARA 2 +#define PAUSE_DISP_01_PANE_GENKI 3 +#define PAUSE_DISP_01_PANE_LEFT 4 +#define PAUSE_DISP_01_PANE_RIGHT 5 + +#define PAUSE_DISP_01_NUM_SPECIAL_ICON_PANES 4 +#define PAUSE_DISP_01_NUM_MY_PANES 6 + +#define PAUSE_DISP_01_NUM_COMBINED_PANES (PAUSE_DISP_01_NUM_MY_PANES + PAUSE_DISP_01_NUM_SUBPANES) +#define PAUSE_DISP_01_OFFSET_MY_PANES PAUSE_DISP_01_NUM_SUBPANES + dLytPauseDisp01_c::dLytPauseDisp01_c() : mStateMgr(*this, sStateID::null) {} -void dLytPauseDisp01_c::initializeState_None() {} -void dLytPauseDisp01_c::executeState_None() {} +bool dLytPauseDisp01_c::build() { + dLytPauseMgr_c *pauseMgr = dLytPauseMgr_c::GetInstance(); + d2d::ResAccIf_c *resAcc = pauseMgr->getResAcc1(); + mLyt.setResAcc(resAcc); + mLyt.build("pause_01.brlyt", nullptr); + mLyt.setPriority(0x86); + + for (int i = 0; i < PAUSE_DISP_01_NUM_ANIMS; i++) { + mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName); + } + + resAcc = pauseMgr->getResAcc2(); + + for (int i = 0; i < PAUSE_DISP_01_NUM_SUBPANES; i++) { + if (i < PAUSE_DISP_01_NUM_INSECTS) { + mIcons[i].build(resAcc, 0); + } else { + mIcons[i].build(resAcc, 1); + } + mSubpanes[i].mpLytPane = &mIcons[i]; + mSubpaneList.PushBack(&mSubpanes[i]); + } + + if (mLyt.getLayout()->GetGroupContainer() != nullptr) { + nw4r::lyt::Group *g = mLyt.getLayout()->GetGroupContainer()->FindGroupByName(sGroupName); + if (g != nullptr) { + d2d::dSubPane::linkMeters(g, &mSubpaneList); + } + } + + mCsHitCheck.init(mLyt.getLayout()->GetRootPane(), 1, 0, 0); + dCsMgr_c::GetInstance()->registCursorTarget(&mCsHitCheck); + + for (int i = 0; i < PAUSE_DISP_01_NUM_MY_PANES; i++) { + if (i < PAUSE_DISP_01_NUM_SPECIAL_ICON_PANES) { + mpPanes[i] = mLyt.findBounding(sPaneNames[i]); + mpPanes[i]->SetVisible(true); + } else { + mpPanes[i] = pauseMgr->getArrowBounding(i - PAUSE_DISP_01_NUM_SPECIAL_ICON_PANES); + } + } + + mLyt.calc(); + mStateMgr.changeState(StateID_None); + + return true; +} + +bool dLytPauseDisp01_c::remove() { + dCsMgr_c::GetInstance()->unregistCursorTarget(&mCsHitCheck); + for (d2d::SubPaneList::Iterator it = mSubpaneList.GetBeginIter(); it != mSubpaneList.GetEndIter(); ++it) { + d2d::dSubPane *subPane = it->mpLytPane; + if (subPane != nullptr) { + nw4r::lyt::Pane *parent = subPane->getPane()->GetParent(); + parent->RemoveChild(subPane->getPane()); + } + } + for (int i = 0; i < PAUSE_DISP_01_NUM_SUBPANES; i++) { + mSubpanes[i].mpLytPane->remove(); + } + + mLyt.unbindAnims(); + + for (int i = 0; i < PAUSE_DISP_01_NUM_ANIMS; i++) { + mAnm[i].remove(); + } + + return true; +} + +bool dLytPauseDisp01_c::execute() { + field_0x98D1 = false; + mStateMgr.executeState(); + for (int i = 0; i < PAUSE_DISP_01_NUM_SUBPANES; i++) { + mSubpanes[i].mpLytPane->execute(); + } + mLyt.calc(); + mCsHitCheck.resetCachedHitboxes(); + mCsHitCheck.execute(); + if (!mStateMgr.getStateID()->isEqual(StateID_None)) { + mAnm[PAUSE_DISP_01_ANIM_LOOP].play(); + } + + return true; +} + +bool dLytPauseDisp01_c::draw() { + if (mIsVisible == true) { + mLyt.addToDrawList(); + } + return true; +} + +void dLytPauseDisp01_c::drawDirectly() { + mLyt.draw(); +} + +void dLytPauseDisp01_c::requestIn(bool scroll) { + mInRequest = true; + mDoScrollAnim = scroll; +} + +void dLytPauseDisp01_c::requestOut(bool scroll) { + mOutRequest = true; + mDoScrollAnim = scroll; +} + +void dLytPauseDisp01_c::requestSelect() { + mSelectToggle = true; +} + +void dLytPauseDisp01_c::requestUnselect() { + mSelectToggle = true; +} + +void dLytPauseDisp01_c::initializeState_None() { + for (int i = 0; i < PAUSE_DISP_01_NUM_ANIMS; i++) { + mAnm[i].unbind(); + } + + field_0x98CE = false; + mInRequest = false; + mOutRequest = false; + mIsVisible = false; + field_0x98D1 = false; + mStep = 0; + mPrevNavTarget = 0; + mCurrentNavTarget = 0; + mTimer = 0; + + for (int i = 0; i < PAUSE_DISP_01_NUM_SUBPANES; i++) { + mIcons[i].reset(); + mIcons[i].setVisible(true); + } + + setAnm(PAUSE_DISP_01_ANIM_ONOFF_TEGAMI, 0.0f); + setAnm(PAUSE_DISP_01_ANIM_ONOFF_TERRY_BUG, 0.0f); + setAnm(PAUSE_DISP_01_ANIM_ONOFF_GARAGARA, 0.0f); + setAnm(PAUSE_DISP_01_ANIM_ONOFF_GENKI, 0.0f); + + for (int i = 0; i < PAUSE_DISP_01_NUM_MY_PANES; i++) { + if (i < PAUSE_DISP_01_NUM_SPECIAL_ICON_PANES) { + mpPanes[i]->SetVisible(false); + } + } + + setAnm(PAUSE_DISP_01_ANIM_LOOP, 0.0f); +} +void dLytPauseDisp01_c::executeState_None() { + if (mInRequest == true) { + mInRequest = false; + mStateMgr.changeState(StateID_In); + } +} void dLytPauseDisp01_c::finalizeState_None() {} -void dLytPauseDisp01_c::initializeState_In() {} -void dLytPauseDisp01_c::executeState_In() {} -void dLytPauseDisp01_c::finalizeState_In() {} +void dLytPauseDisp01_c::initializeState_In() { + dLytPauseMgr_c *pause = dLytPauseMgr_c::GetInstance(); + if (mDoScrollAnim == true) { + setAnm(PAUSE_DISP_01_ANIM_IN, 0.0f); + mAnm[PAUSE_DISP_01_ANIM_IN].setFrame(mAnm[PAUSE_DISP_01_ANIM_IN].getAnimDuration()); + if (pause->getField_0x0831()) { + setAnm(PAUSE_DISP_01_ANIM_SCROLL_L_IN, 0.0f); + } else { + setAnm(PAUSE_DISP_01_ANIM_SCROLL_R_IN, 0.0f); + } -void dLytPauseDisp01_c::initializeState_Wait() {} -void dLytPauseDisp01_c::executeState_Wait() {} + if (pause->getField_0x0840()) { + if (pause->getField_0x0831()) { + mPrevNavTarget = PAUSE_DISP_01_OFFSET_MY_PANES + PAUSE_DISP_01_PANE_LEFT + 1; + } else { + mPrevNavTarget = PAUSE_DISP_01_OFFSET_MY_PANES + PAUSE_DISP_01_PANE_RIGHT + 1; + } + } + } else { + setAnm(PAUSE_DISP_01_ANIM_IN, 0.0f); + } + mIsVisible = true; + setupDisp(); +} +void dLytPauseDisp01_c::executeState_In() { + dLytPauseMgr_c *pause = dLytPauseMgr_c::GetInstance(); + + s32 anim = PAUSE_DISP_01_ANIM_IN; + if (mDoScrollAnim == true) { + anim = pause->getField_0x0831() ? PAUSE_DISP_01_ANIM_SCROLL_L_IN : PAUSE_DISP_01_ANIM_SCROLL_R_IN; + } + + d2d::AnmGroup_c &anm = mAnm[anim]; + + if (anm.isEndReached() == true) { + if (dLytControlGame_c::getInstance()->getField_0x15C67()) { + mStateMgr.changeState(StateID_GetDemo); + } else { + mStateMgr.changeState(StateID_Wait); + } + } else { + anm.play(); + } +} +void dLytPauseDisp01_c::finalizeState_In() { + dLytPauseMgr_c *pause = dLytPauseMgr_c::GetInstance(); + if (pause->getField_0x0831()) { + stopAnm(PAUSE_DISP_01_ANIM_SCROLL_L_IN); + } else { + stopAnm(PAUSE_DISP_01_ANIM_SCROLL_R_IN); + } + + mDoScrollAnim = false; + if (pause->getField_0x083E()) { + if (!pause->getField_0x0832()) { + // TODO id + mCurrentNavTarget = 34; + } else { + // TODO id + mCurrentNavTarget = 33; + } + mPrevNavTarget = mCurrentNavTarget; + } +} + +void dLytPauseDisp01_c::initializeState_Wait() { + field_0x98CE = true; + showInsectsAndMaterials(); +} +void dLytPauseDisp01_c::executeState_Wait() { + field_0x98CE = false; + if (mOutRequest == true) { + mOutRequest = false; + hideInsectsAndMaterials(); + mStateMgr.changeState(StateID_Out); + } else if (mSelectToggle == true) { + mStateMgr.changeState(StateID_Select); + dSndSmallEffectMgr_c *mgr = dSndSmallEffectMgr_c::GetInstance(); + s32 itemIdx = mCurrentNavTarget - 1; + if (itemIdx < PAUSE_DISP_01_NUM_INSECTS) { + mgr->playSound(SE_S_MENU_P2_SELECT_INSECT); + } else if (itemIdx < PAUSE_DISP_01_NUM_INSECTS + PAUSE_DISP_01_NUM_MATERIALS) { + mgr->playSound(SE_S_MENU_P2_SELECT_MATERIAL); + } else if (itemIdx < + PAUSE_DISP_01_NUM_INSECTS + PAUSE_DISP_01_NUM_MATERIALS + PAUSE_DISP_01_NUM_SPECIAL_ICON_PANES) { + mgr->playSound(SE_S_MENU_P2_SELECT_IMPORTANT); + } + + } else if (updateSelection() != 0) { + field_0x98D1 = true; + } +} void dLytPauseDisp01_c::finalizeState_Wait() {} -void dLytPauseDisp01_c::initializeState_Select() {} -void dLytPauseDisp01_c::executeState_Select() {} -void dLytPauseDisp01_c::finalizeState_Select() {} +void dLytPauseDisp01_c::initializeState_Select() { + mSelectToggle = false; +} +void dLytPauseDisp01_c::executeState_Select() { + if (mSelectToggle == true) { + mStateMgr.changeState(StateID_Wait); + } +} +void dLytPauseDisp01_c::finalizeState_Select() { + mSelectToggle = false; +} -void dLytPauseDisp01_c::initializeState_GetDemo() {} -void dLytPauseDisp01_c::executeState_GetDemo() {} +void dLytPauseDisp01_c::initializeState_GetDemo() { + field_0x98CE = true; + mStep = 0; + mTimer = 0; +} +void dLytPauseDisp01_c::executeState_GetDemo() { + switch (mStep) { + case 0: { + field_0x98CE = false; + if (mTimer < 2) { + mTimer++; + } else { + mTimer = 0; + mStep = 1; + } + break; + } + case 1: { + s32 thingIdx = 0; + mStep = 2; + u16 item = dLytControlGame_c::getInstance()->getItemForPauseDemo(); + dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MENU_ITEM_SET_FX); + if (item == ITEM_1_CRYSTAL || item == ITEM_5_CRYSTALS) { + // gratitude crystal + mAnm[PAUSE_DISP_01_ANIM_HAVE_GENKI].setFrame(1.0f); + nw4r::math::MTX34 mtx = mpPanes[PAUSE_DISP_01_PANE_GENKI]->GetGlobalMtx(); + nw4r::math::VEC3 v(0.0f, 0.0f, 0.0f); + MTXMultVec(mtx, v, v); + mVec3_c v1; + v1.set(v.x, v.y, v.z); + dJEffManager_c::spawnUIEffect( + PARTICLE_RESOURCE_ID_MAPPING_989_, v1, nullptr, nullptr, nullptr, nullptr + ); + } else if (item >= ITEM_HORNET_LARVAE) { + // material + s32 thingIdx; + for (s32 idx = 0; idx < PAUSE_DISP_01_NUM_MATERIALS; idx++) { + if (getMaterialItemId(idx) == item) { + thingIdx = idx; + break; + } + } + s32 iconIdx = PAUSE_DISP_01_OFFSET_MATERIALS + thingIdx; + if (dAcItem_c::isPerformingInitialCollection()) { + mIcons[iconIdx].setShadow(false); + mIcons[iconIdx].setHasNumber(false); + s32 count = getMaterialCountByIndex(thingIdx); + mIcons[iconIdx].setNumber(count); + s32 icon = getMaterialIcon(thingIdx); + mIcons[iconIdx].setItem(icon); + } + nw4r::math::MTX34 mtx = mIcons[iconIdx].getBounding()->GetGlobalMtx(); + nw4r::math::VEC3 v(0.0f, 0.0f, 0.0f); + MTXMultVec(mtx, v, v); + mVec3_c v1; + v1.set(v.x, v.y, v.z); + dJEffManager_c::spawnUIEffect( + PARTICLE_RESOURCE_ID_MAPPING_989_, v1, nullptr, nullptr, nullptr, nullptr + ); + } else { + // insect + for (s32 idx = 0; idx < PAUSE_DISP_01_NUM_INSECTS; idx++) { + if (getInsectItemId(idx) == item) { + thingIdx = idx; + break; + } + } + s32 iconIdx = PAUSE_DISP_01_OFFSET_INSECTS + thingIdx; + if (dAcItem_c::isPerformingInitialCollection()) { + mIcons[iconIdx].setShadow(false); + mIcons[iconIdx].setHasNumber(false); + s32 count = getInsectCountByIndex(thingIdx); + mIcons[iconIdx].setNumber(count); + s32 icon = getInsectIcon(thingIdx); + mIcons[iconIdx].setItem(icon); + } + nw4r::math::MTX34 mtx = mIcons[iconIdx].getBounding()->GetGlobalMtx(); + nw4r::math::VEC3 v(0.0f, 0.0f, 0.0f); + MTXMultVec(mtx, v, v); + mVec3_c v1; + v1.set(v.x, v.y, v.z); + dJEffManager_c::spawnUIEffect( + PARTICLE_RESOURCE_ID_MAPPING_989_, v1, nullptr, nullptr, nullptr, nullptr + ); + } + break; + } + case 2: { + if (mTimer < 35) { + mTimer++; + } else { + mTimer = 0; + mStep = 3; + dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_MENU_ITEM_SET_COUNT_UP); + u16 item = dLytControlGame_c::getInstance()->getItemForPauseDemo(); + s32 thingIdx = 0; + if (item == ITEM_1_CRYSTAL || item == ITEM_5_CRYSTALS) { + dTextBox_c *box; + s32 count = dAcItem_c::getGratitudeCrystalCount(); + SizedWString<32> buf; + buf.sprintf(L"%d", count); + box = mLyt.getTextBox("T_count_28"); + box->setTextWithGlobalTextProcessor(buf); + box->SetVisible(true); + box = mLyt.getTextBox("T_countS_28"); + box->setTextWithGlobalTextProcessor(buf); + box->SetVisible(true); + } else if (item >= ITEM_HORNET_LARVAE) { + // material + for (s32 idx = 0; idx < PAUSE_DISP_01_NUM_MATERIALS; idx++) { + if (getMaterialItemId(idx) == item) { + thingIdx = idx; + break; + } + } + s32 iconIdx = PAUSE_DISP_01_OFFSET_MATERIALS + thingIdx; + mIcons[iconIdx].setShadow(false); + mIcons[iconIdx].setHasNumber(true); + s32 count = getMaterialCountByIndex(thingIdx); + mIcons[iconIdx].setNumber(count); + s32 icon = getMaterialIcon(thingIdx); + mIcons[iconIdx].setItem(icon); + } else { + // insect + for (s32 idx = 0; idx < PAUSE_DISP_01_NUM_INSECTS; idx++) { + if (getInsectItemId(idx) == item) { + thingIdx = idx; + break; + } + } + s32 iconIdx = PAUSE_DISP_01_OFFSET_INSECTS + thingIdx; + mIcons[iconIdx].setShadow(false); + mIcons[iconIdx].setHasNumber(true); + s32 count = getInsectCountByIndex(thingIdx); + mIcons[iconIdx].setNumber(count); + s32 icon = getInsectIcon(thingIdx); + mIcons[iconIdx].setItem(icon); + } + } + break; + } + case 3: { + if (mTimer < 37) { + mTimer++; + } else { + mTimer = 0; + mStateMgr.changeState(StateID_Wait); + } + break; + } + } +} void dLytPauseDisp01_c::finalizeState_GetDemo() {} -void dLytPauseDisp01_c::initializeState_Out() {} -void dLytPauseDisp01_c::executeState_Out() {} +void dLytPauseDisp01_c::initializeState_Out() { + stopAnm(PAUSE_DISP_01_ANIM_IN); + if (mDoScrollAnim == true) { + if (dLytPauseMgr_c::GetInstance()->getField_0x0831()) { + setAnm(PAUSE_DISP_01_ANIM_SCROLL_R_OUT, 0.0f); + } else { + setAnm(PAUSE_DISP_01_ANIM_SCROLL_L_OUT, 0.0f); + } + } else { + setAnm(PAUSE_DISP_01_ANIM_OUT, 0.0f); + } + mStep = 0; +} +void dLytPauseDisp01_c::executeState_Out() { + s32 anim = PAUSE_DISP_01_ANIM_OUT; + if (mDoScrollAnim == true) { + anim = dLytPauseMgr_c::GetInstance()->getField_0x0831() ? PAUSE_DISP_01_ANIM_SCROLL_R_OUT : + PAUSE_DISP_01_ANIM_SCROLL_L_OUT; + } + + d2d::AnmGroup_c &anm = mAnm[anim]; + + switch (mStep) { + case 0: { + if (anm.isEndReached() == true) { + mStep = 1; + field_0x98CE = true; + } + break; + } + case 1: { + mStateMgr.changeState(StateID_None); + return; + } + } + + anm.play(); +} void dLytPauseDisp01_c::finalizeState_Out() {} + +void dLytPauseDisp01_c::setAnm(int idx, f32 value) { + d2d::AnmGroup_c &anm = mAnm[idx]; + anm.setAnimEnable(true); + anm.bind(false); + anm.setFrame(value); +} + +void dLytPauseDisp01_c::stopAnm(int idx) { + d2d::AnmGroup_c &anm = mAnm[idx]; + anm.unbind(); +} + +void dLytPauseDisp01_c::setupDisp() { + static const char *sPaneTable[] = { + "N_bug_00", "N_bug_01", "N_bug_02", "N_bug_03", "N_bug_04", "N_bug_05", "N_bug_06", + "N_bug_07", "N_bug_08", "N_bug_09", "N_bug_10", "N_bug_11", "N_sozai_00", "N_sozai_01", + "N_sozai_02", "N_sozai_03", "N_sozai_04", "N_sozai_05", "N_sozai_06", "N_sozai_07", "N_sozai_08", + "N_sozai_09", "N_sozai_10", "N_sozai_11", "N_sozai_12", "N_sozai_13", "N_sozai_14", "N_sozai_15", + }; + + // Fixes a regswap... + const char **name = sPaneTable; + for (int i = 0; i < PAUSE_DISP_01_NUM_SUBPANES; i++) { + mLyt.findPane(*name)->SetVisible(true); + name++; + } + + setupInsects(); + setupMaterials(); + + if (StoryflagManager::sInstance->getFlag(552) || StoryflagManager::sInstance->getFlag(555)) { + setAnm(PAUSE_DISP_01_ANIM_HAVE_TEGAMI, 2.0f); + mpPanes[PAUSE_DISP_01_PANE_TEGAMI]->SetVisible(true); + } else if (dAcItem_c::checkFlag(ITEM_CAWLIN_LETTER)) { + setAnm(PAUSE_DISP_01_ANIM_HAVE_TEGAMI, 1.0f); + mpPanes[PAUSE_DISP_01_PANE_TEGAMI]->SetVisible(true); + } else { + setAnm(PAUSE_DISP_01_ANIM_HAVE_TEGAMI, 0.0f); + } + + if (StoryflagManager::sInstance->getFlag(477)) { + setAnm(PAUSE_DISP_01_ANIM_HAVE_TERRY_BUG, 2.0f); + mpPanes[PAUSE_DISP_01_PANE_TERRY_BUG]->SetVisible(true); + } else if (StoryflagManager::sInstance->getFlag(476)) { + setAnm(PAUSE_DISP_01_ANIM_HAVE_TERRY_BUG, 1.0f); + mpPanes[PAUSE_DISP_01_PANE_TERRY_BUG]->SetVisible(true); + } else { + setAnm(PAUSE_DISP_01_ANIM_HAVE_TERRY_BUG, 0.0f); + } + + if (StoryflagManager::sInstance->getFlag(387)) { + setAnm(PAUSE_DISP_01_ANIM_HAVE_GARAGARA, 2.0f); + mpPanes[PAUSE_DISP_01_PANE_GARAGARA]->SetVisible(true); + } else if (dAcItem_c::checkFlag(ITEM_RATTLE)) { + setAnm(PAUSE_DISP_01_ANIM_HAVE_GARAGARA, 1.0f); + mpPanes[PAUSE_DISP_01_PANE_GARAGARA]->SetVisible(true); + } else { + setAnm(PAUSE_DISP_01_ANIM_HAVE_GARAGARA, 0.0f); + } + + dLytControlGame_c *lytControl = dLytControlGame_c::getInstance(); + u16 demoItem = lytControl->getItemForPauseDemo(); + u32 crystalCount = dAcItem_c::getGratitudeCrystalCount(); + if (crystalCount != 0) { + bool isDemo = false; + if (lytControl->getField_0x15C67() && (demoItem == ITEM_1_CRYSTAL || demoItem == ITEM_5_CRYSTALS)) { + isDemo = true; + crystalCount = demoItem == ITEM_1_CRYSTAL ? crystalCount - 1 : crystalCount - 5; + } + + if (StoryflagManager::sInstance->getFlag(360)) { + setAnm(PAUSE_DISP_01_ANIM_HAVE_GENKI, 2.0f); + } else if (isDemo && crystalCount == 0) { + setAnm(PAUSE_DISP_01_ANIM_HAVE_GENKI, 0.0f); + } else { + setAnm(PAUSE_DISP_01_ANIM_HAVE_GENKI, 1.0f); + } + + SizedWString<32> buf; + buf.sprintf(L"%d", crystalCount); + dTextBox_c *box; + box = mLyt.getTextBox("T_count_28"); + box->setTextWithGlobalTextProcessor(buf); + if (isDemo && crystalCount == 0) { + box->SetVisible(false); + } + + box = mLyt.getTextBox("T_countS_28"); + box->setTextWithGlobalTextProcessor(buf); + if (isDemo && crystalCount == 0) { + box->SetVisible(false); + } + + mpPanes[PAUSE_DISP_01_PANE_GENKI]->SetVisible(true); + } else { + setAnm(PAUSE_DISP_01_ANIM_HAVE_GENKI, 0.0f); + } +} + +void dLytPauseDisp01_c::setupInsects() { + dLytControlGame_c *lytControl = dLytControlGame_c::getInstance(); + int insectIdx = 0; + for (int i = PAUSE_DISP_01_OFFSET_INSECTS; i < PAUSE_DISP_01_OFFSET_INSECTS + PAUSE_DISP_01_NUM_INSECTS; i++) { + mIcons[i].setBg(true); + if (shouldInsectBeDisplayed(insectIdx)) { + mIcons[i].setShadow(false); + mIcons[i].setHasNumber(true); + } else { + mIcons[i].setShadow(true); + mIcons[i].setHasNumber(false); + } + + s32 count = getInsectCountByIndex(insectIdx); + if (lytControl->getField_0x15C67() && lytControl->getItemForPauseDemo() == getInsectItemId(insectIdx)) { + count = lytControl->getItemCountForPauseDemo(); + } + + mIcons[i].setNumber(count); + s32 icon = getInsectIcon(insectIdx); + mIcons[i].setItem(icon); + + insectIdx++; + } +} + +void dLytPauseDisp01_c::setupMaterials() { + dLytControlGame_c *lytControl = dLytControlGame_c::getInstance(); + int materialIdx = 0; + for (int i = PAUSE_DISP_01_OFFSET_MATERIALS; i < PAUSE_DISP_01_OFFSET_MATERIALS + PAUSE_DISP_01_NUM_MATERIALS; + i++) { + mIcons[i].setBg(true); + if (shouldMaterialBeDisplayed(materialIdx)) { + mIcons[i].setShadow(false); + mIcons[i].setHasNumber(true); + } else { + mIcons[i].setShadow(true); + mIcons[i].setHasNumber(false); + } + + s32 count = getMaterialCountByIndex(materialIdx); + if (lytControl->getField_0x15C67() && lytControl->getItemForPauseDemo() == getMaterialItemId(materialIdx)) { + count = lytControl->getItemCountForPauseDemo(); + } + + mIcons[i].setNumber(count); + s32 icon = getMaterialIcon(materialIdx); + mIcons[i].setItem(icon); + + materialIdx++; + } +} + +void dLytPauseDisp01_c::showInsectsAndMaterials() { + for (int i = PAUSE_DISP_01_OFFSET_INSECTS; i < PAUSE_DISP_01_OFFSET_INSECTS + PAUSE_DISP_01_NUM_INSECTS; i++) { + mIcons[i].setVisible(true); + } + + for (int i = PAUSE_DISP_01_OFFSET_MATERIALS; i < PAUSE_DISP_01_OFFSET_MATERIALS + PAUSE_DISP_01_NUM_MATERIALS; + i++) { + mIcons[i].setVisible(true); + } +} + +// A matrix controlling navigation with the Nunchuk stick. +// The row index is the currently selected target, and the row contains +// the list of targets, one entry per stick direction (starting up and going clockwise) +// +// If someone was really bored they could probably replace all of these +// with constants... +static const u8 sNavTable[34][8] = { + { 0, 2, 2, 6, 5, 5, 33, 0}, + { 0, 3, 3, 7, 6, 5, 1, 1}, + { 0, 4, 4, 8, 7, 6, 2, 2}, + { 0, 13, 13, 17, 8, 7, 3, 3}, + { 1, 2, 6, 10, 9, 33, 33, 1}, + { 2, 3, 7, 11, 10, 9, 5, 1}, + { 3, 4, 8, 12, 11, 10, 6, 2}, + { 4, 13, 17, 21, 12, 11, 7, 3}, + { 5, 6, 10, 30, 29, 29, 33, 33}, + { 6, 7, 11, 31, 30, 29, 9, 5}, + { 7, 8, 12, 32, 31, 30, 10, 6}, + { 8, 17, 21, 25, 32, 31, 11, 7}, + { 0, 14, 14, 18, 17, 8, 4, 4}, + { 0, 15, 15, 19, 18, 17, 13, 13}, + { 0, 16, 16, 20, 19, 18, 14, 14}, + { 0, 0, 34, 20, 20, 19, 15, 15}, + {13, 14, 18, 22, 21, 12, 8, 4}, + {14, 15, 19, 23, 22, 21, 17, 13}, + {15, 16, 20, 24, 23, 22, 18, 14}, + {16, 16, 34, 34, 24, 23, 19, 15}, + {17, 18, 22, 26, 25, 32, 12, 8}, + {18, 19, 23, 27, 26, 25, 21, 17}, + {19, 20, 24, 28, 27, 26, 22, 18}, + {20, 34, 34, 28, 28, 27, 23, 19}, + {21, 22, 26, 26, 0, 32, 32, 12}, + {22, 23, 27, 27, 0, 25, 25, 21}, + {23, 24, 28, 28, 0, 26, 26, 22}, + {24, 24, 34, 0, 0, 27, 27, 23}, + { 9, 10, 30, 30, 0, 0, 33, 9}, + {10, 11, 31, 31, 0, 29, 29, 9}, + {11, 12, 32, 32, 0, 30, 30, 10}, + {12, 21, 25, 25, 0, 31, 31, 11}, + { 1, 1, 5, 9, 9, 0, 0, 0}, + {16, 0, 0, 0, 24, 24, 20, 16}, +}; + +s32 dLytPauseDisp01_c::updateSelection() { + dLytPauseMgr_c *pause = dLytPauseMgr_c::GetInstance(); + if (!pause->isStateWait()) { + pause->setSelection(dLytPauseMgr_c::SELECT_NONE, 0, false); + return 0; + } + + s32 target = 0; + if (dPadNav::isPointerVisible()) { + for (int i = 0; i < PAUSE_DISP_01_NUM_SUBPANES; i++) { + if (mIcons[i].isCursorOver()) { + target = i + 1; + // missed optimization + // break; + } + } + if (target == 0) { + s32 myPane = getPointerPane(); + if (myPane >= 0) { + target = myPane + PAUSE_DISP_01_OFFSET_MY_PANES + 1; + } + } + } else { + if (mCurrentNavTarget != 0) { + if (!dPadNav::isPrevPointerVisible() && dPadNav::getFSStickNavDirection() != dPadNav::FS_STICK_NONE) { + const u8 *directions = sNavTable[mCurrentNavTarget - 1]; + s32 newTarget = directions[dPadNav::getFSStickNavDirection() - 1]; + if (newTarget != 0) { + mCurrentNavTarget = newTarget; + } + } + } else { + mCurrentNavTarget = PAUSE_DISP_01_OFFSET_MY_PANES + PAUSE_DISP_01_PANE_TEGAMI + 1; + } + + target = mCurrentNavTarget; + } + + // Cursor outline + if (target != 0) { + if (target - 1 >= PAUSE_DISP_01_OFFSET_MY_PANES + PAUSE_DISP_01_NUM_SPECIAL_ICON_PANES) { + // left-right boundings + s32 paneIdx = target - PAUSE_DISP_01_OFFSET_MY_PANES - 1; + dCsBase_c::GetInstance()->setCursorStickTargetPane(mpPanes[paneIdx]); + pause->setSelection(dLytPauseMgr_c::SELECT_NONE, 0, false); + pause->setSelectedArrowBounding( + target - (PAUSE_DISP_01_OFFSET_MY_PANES + PAUSE_DISP_01_NUM_SPECIAL_ICON_PANES + 1) + ); + } else if (target - 1 >= PAUSE_DISP_01_NUM_SUBPANES) { + // quest items + s32 paneIdx = target - PAUSE_DISP_01_NUM_SUBPANES - 1; + dCsBase_c::GetInstance()->setCursorStickTargetPane(mpPanes[paneIdx]); + s32 itemId = getQuestItemId(target - PAUSE_DISP_01_NUM_SUBPANES - 1); + pause->setSelection(dLytPauseMgr_c::SELECT_QUEST_MATERIAL, itemId, false); + } else { + const nw4r::lyt::Bounding *bounding = mIcons[target - 1].getBounding(); + dCsBase_c::GetInstance()->setCursorStickTargetPane(bounding); + + if (target - 1 >= PAUSE_DISP_01_OFFSET_MATERIALS) { + // materials + s32 paneIdx = target - PAUSE_DISP_01_OFFSET_MATERIALS - 1; + s32 itemId = getMaterialItemId(paneIdx); + pause->setSelection(dLytPauseMgr_c::SELECT_QUEST_MATERIAL, itemId, false); + } else { + // insects + s32 paneIdx = target - PAUSE_DISP_01_OFFSET_INSECTS - 1; + s32 itemId = getInsectItemId(paneIdx); + pause->setSelection(dLytPauseMgr_c::SELECT_INSECT, itemId, false); + } + } + } + + // make the selected item slightly larger + for (int i = 0; i < PAUSE_DISP_01_NUM_SUBPANES; i++) { + if (target != 0 && target - 1 == i) { + if (i >= PAUSE_DISP_01_OFFSET_MATERIALS) { + if (shouldMaterialBeDisplayed(i - PAUSE_DISP_01_OFFSET_MATERIALS)) { + mIcons[i].setOn(); + } else { + mIcons[i].setOff(); + } + } else { + if (shouldInsectBeDisplayed(i)) { + mIcons[i].setOn(); + } else { + mIcons[i].setOff(); + } + } + } else { + mIcons[i].setOff(); + } + } + + // TODO - loop strength reduction doesn't seem to work here + int i; + d2d::AnmGroup_c *anm = &mAnm[PAUSE_DISP_01_ANIM_OFFSET_ONOFF]; + for (i = 0; i < PAUSE_DISP_01_NUM_SPECIAL_ICON_PANES; i++) { + if (target == i + PAUSE_DISP_01_OFFSET_MY_PANES + 1) { + anm->play(); + } else { + f32 frame = anm->getFrame(); + if (frame) { + frame -= 1.0f; + if (frame <= 0.0f) { + frame = 0.0f; + } + anm->setFrame(frame); + } + } + anm++; + } + + if (target != 0) { + mCurrentNavTarget = target; + } + + if (target != 0 && mPrevNavTarget != target) { + dRumble_c::start(dRumble_c::sRumblePreset1, 0x1); + + dSndSmallEffectMgr_c *mgr = dSndSmallEffectMgr_c::GetInstance(); + if (target - 1 < PAUSE_DISP_01_OFFSET_MATERIALS) { + // insect + mgr->playSound(SE_S_MENU_P2_POINT_INSECT); + } else if (target - 1 < PAUSE_DISP_01_OFFSET_MY_PANES) { + // materials + mgr->playSound(SE_S_MENU_P2_POINT_MATERIAL); + } else if (target - 1 < PAUSE_DISP_01_OFFSET_MY_PANES + PAUSE_DISP_01_NUM_SPECIAL_ICON_PANES) { + // quest + mgr->playSound(SE_S_MENU_P2_POINT_IMPORTANT); + } + } + + mPrevNavTarget = target; + if (target == 0) { + pause->setSelection(dLytPauseMgr_c::SELECT_NONE, 0, false); + } + + if (target != 0) { + s32 pane = target - 1; + if (pane < PAUSE_DISP_01_NUM_SUBPANES) { + if (pane < PAUSE_DISP_01_OFFSET_MATERIALS) { + if (!shouldInsectBeDisplayed(pane)) { + target = 0; + } + } else { + if (!shouldMaterialBeDisplayed(pane - PAUSE_DISP_01_OFFSET_MATERIALS)) { + target = 0; + } + } + } else if (pane >= PAUSE_DISP_01_OFFSET_MY_PANES + PAUSE_DISP_01_NUM_SPECIAL_ICON_PANES) { + pause->setSelection(dLytPauseMgr_c::SELECT_NONE, 0, false); + target = 0; + } else { + s32 paneIdx = pane - PAUSE_DISP_01_OFFSET_MY_PANES; + if (!mpPanes[paneIdx]->IsVisible()) { + pause->setSelection(dLytPauseMgr_c::SELECT_NONE, 0, false); + target = 0; + } + } + } + + return target; +} + +s32 dLytPauseDisp01_c::getPointerPane() const { + int idx = -1; + dCursorHitCheck_c *d = dCsBase_c::GetInstance()->getHitCheck(); + if (d != nullptr && d->getType() == 'lyt ') { + for (int i = 0; i < PAUSE_DISP_01_NUM_MY_PANES; i++) { + if (static_cast(d)->getHitPane() == mpPanes[i]) { + idx = i; + // missed optimization: + // break; + } + } + } + return idx; +} + +void dLytPauseDisp01_c::hideInsectsAndMaterials() { + for (int i = 0; i < PAUSE_DISP_01_NUM_SUBPANES; i++) { + mIcons[i].setOff(); + mIcons[i].setVisible(false); + } +} + +bool dLytPauseDisp01_c::shouldInsectBeDisplayed(s32 insectIdx) const { + if (dLytControlGame_c::getInstance()->getField_0x15C67() && + dLytControlGame_c::getInstance()->getItemForPauseDemo() == getInsectItemId(insectIdx) && + dAcItem_c::isPerformingInitialCollection()) { + return false; + } + + if (insectIdx != 0) { + return dAcItem_c::checkFlag(getInsectItemId(insectIdx)); + } else { + return StoryflagManager::sInstance->getFlag(122); + } +} + +u16 dLytPauseDisp01_c::getInsectItemId(s32 insectIdx) const { + static const u16 sInsectItemTable[] = { + ITEM_DEKU_HORNET, ITEM_BLESSED_BUTTERFLY, ITEM_GERUDO_DRAGONFLY, ITEM_STARRY_FIREFLY, + ITEM_WOODLAND_RHINO_BEETLE, ITEM_VOLCANIC_LADYBUG, ITEM_SAND_CICADA, ITEM_SKY_STAG_BEETLE, + ITEM_FARON_GRASSHOPPER, ITEM_SKYLOFT_MANTIS, ITEM_LANAYRU_ANT, ITEM_ELDIN_ROLLER, + }; + return sInsectItemTable[insectIdx]; +} + +s32 dLytPauseDisp01_c::getInsectIcon(s32 insectIdx) const { + static const u8 sInsectIconTable[] = { + LYT_CMN_BugDekuHornet, LYT_CMN_BugBlessedButterfly, LYT_CMN_BugGerudoDragonfly, + LYT_CMN_BugStarryFirefly, LYT_CMN_BugWoodlandRhinoBetle, LYT_CMN_BugVolcanicLadyBug, + LYT_CMN_BugSandCicada, LYT_CMN_BugSkyStagBeetle, LYT_CMN_BugFaronGrasshopper, + LYT_CMN_BugSkyloftMantis, LYT_CMN_BugLanayruAnt, LYT_CMN_BugEldinRoller, + }; + return sInsectIconTable[insectIdx]; +} + +s32 dLytPauseDisp01_c::getInsectCountByIndex(s32 insectIdx) const { + // TODO - ids + static const u16 sInsectCounterTable[] = {12, 15, 18, 21, 11, 14, 17, 20, 10, 13, 16, 19}; + return getCounterByIndex(sInsectCounterTable[insectIdx]); +} + +u16 dLytPauseDisp01_c::getQuestItemId(s32 questItemIndex) const { + static const u16 sQuestItemTable[] = {ITEM_CAWLIN_LETTER, ITEM_BEEDLE_INSECT_CAGE, ITEM_RATTLE, ITEM_1_CRYSTAL}; + return sQuestItemTable[questItemIndex]; +} + +bool dLytPauseDisp01_c::shouldMaterialBeDisplayed(s32 materialIdx) const { + if (dLytControlGame_c::getInstance()->getField_0x15C67() && + dLytControlGame_c::getInstance()->getItemForPauseDemo() == getMaterialItemId(materialIdx) && + dAcItem_c::isPerformingInitialCollection()) { + return false; + } + return dAcItem_c::checkFlag(getMaterialItemId(materialIdx)); +} + +u16 dLytPauseDisp01_c::getMaterialItemId(s32 materialIdx) const { + static const u16 sMaterialItemTable[] = { + ITEM_HORNET_LARVAE, ITEM_BIRD_FEATHER, ITEM_TUMBLE_WEED, ITEM_LIZARD_TAIL, + ITEM_ELDIN_ORE, ITEM_ANCIENT_FLOWER, ITEM_AMBER_RELIC, ITEM_DUSK_RELIC, + ITEM_JELLY_BLOB, ITEM_MONSTER_CLAW, ITEM_MONSTER_HORN, ITEM_ORNAMENTAL_SKULL, + ITEM_EVIL_CRYSTAL, ITEM_BLUE_BIRD_FEATHER, ITEM_GOLDEN_SKULL, ITEM_GODDESS_PLUME, + }; + return sMaterialItemTable[materialIdx]; +} + +s32 dLytPauseDisp01_c::getMaterialIcon(s32 materialIdx) const { + static const u8 sMaterialIconTable[] = { + LYT_CMN_HORNET_LARVAE, LYT_CMN_BIRD_FEATHER, LYT_CMN_TUMBLEWEED, LYT_CMN_LIZALFOS_TAIL, + LYT_CMN_ELDIN_ORE, LYT_CMN_ANCIENT_FLOWER, LYT_CMN_AMBER_RELIC, LYT_CMN_DUSK_RELOC, + LYT_CMN_JELLY_BLOB, LYT_CMN_MONSTER_CLAW, LYT_CMN_MONSTER_HORN, LYT_CMN_ORNAMENTAL_SKULL, + LYT_CMN_EVIL_CRYSTAL, LYT_CMN_BLUE_BIRD_FEATHER, LYT_CMN_GOLDEN_SKULL, LYT_CMN_GODDESS_PLUME, + }; + return sMaterialIconTable[materialIdx]; +} + +s32 dLytPauseDisp01_c::getMaterialCountByIndex(s32 materialIdx) const { + // TODO - ids + static const u16 sMaterialCounterTable[] = { + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + }; + return getCounterByIndex(sMaterialCounterTable[materialIdx]); +} diff --git a/src/d/lyt/d_lyt_pause_text.cpp b/src/d/lyt/d_lyt_pause_text.cpp index 7550e801..0a806bc1 100644 --- a/src/d/lyt/d_lyt_pause_text.cpp +++ b/src/d/lyt/d_lyt_pause_text.cpp @@ -330,7 +330,7 @@ const wchar_t *dLytPauseText_c::getCurrentPausePopupCaption() { // TODO - bunch of unresolved IDs here dLytPauseMgr_c::SelectionType_e selectionType = dLytPauseMgr_c::GetInstance()->getCurrentSelectionType(); - if (dLytPauseMgr_c::GetInstance()->getField_0x0841()) { + if (dLytPauseMgr_c::GetInstance()->isCurrentSelectionRestricted()) { // "It has been stolen by monsters! You've got to get it back." return dMessage_c::getTextMessageByLabel("CAPTION_ITEM_STOLEN", true, nullptr, 0); } @@ -433,7 +433,7 @@ void dLytPauseText_c::calcTextLines(dTextBox_c *textBox, const wchar_t *text) { bool dLytPauseText_c::isCurrentItemWallet() const { dLytPauseMgr_c::SelectionType_e selectionType = dLytPauseMgr_c::GetInstance()->getCurrentSelectionType(); - if (dLytPauseMgr_c::GetInstance()->getField_0x0841()) { + if (dLytPauseMgr_c::GetInstance()->isCurrentSelectionRestricted()) { return false; }