mirror of
https://github.com/zeldaret/ss
synced 2026-06-02 02:00:06 -04:00
d_lyt_pause_disp_00 with a few nonmatching functions
This commit is contained in:
+41
-35
@@ -8792,14 +8792,14 @@ execute__17dLytPauseDisp00_cFv = .text:0x8015A640; // type:function size:0x10C
|
||||
executeState__86sStateMgr_c<17dLytPauseDisp00_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8015A750; // type:function size:0x10
|
||||
getStateID__86sStateMgr_c<17dLytPauseDisp00_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8015A760; // type:function size:0x10
|
||||
draw__17dLytPauseDisp00_cFv = .text:0x8015A770; // type:function size:0x38
|
||||
fn_8015A7B0 = .text:0x8015A7B0; // type:function size:0x14
|
||||
fn_8015A7D0 = .text:0x8015A7D0; // type:function size:0x14
|
||||
fn_8015A7F0 = .text:0x8015A7F0; // type:function size:0x14
|
||||
fn_8015A810 = .text:0x8015A810; // type:function size:0x10
|
||||
fn_8015A820 = .text:0x8015A820; // type:function size:0x10
|
||||
fn_8015A830 = .text:0x8015A830; // type:function size:0x10
|
||||
fn_8015A840 = .text:0x8015A840; // type:function size:0x68
|
||||
fn_8015A8B0 = .text:0x8015A8B0; // type:function size:0x28
|
||||
drawDirectly__17dLytPauseDisp00_cFv = .text:0x8015A7B0; // type:function size:0x14
|
||||
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
|
||||
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
|
||||
initializeState_None__17dLytPauseDisp00_cFv = .text:0x8015A8E0; // type:function size:0x2B8
|
||||
executeState_None__17dLytPauseDisp00_cFv = .text:0x8015ABA0; // type:function size:0x34
|
||||
finalizeState_None__17dLytPauseDisp00_cFv = .text:0x8015ABE0; // type:function size:0x8
|
||||
@@ -8839,9 +8839,9 @@ setupStoneOfTrials__17dLytPauseDisp00_cFv = .text:0x8015D110; // type:function s
|
||||
setupRingIcons__17dLytPauseDisp00_cFl = .text:0x8015D1D0; // type:function size:0x130
|
||||
updateSelection__17dLytPauseDisp00_cFv = .text:0x8015D300; // type:function size:0xA04
|
||||
getPointerPane__17dLytPauseDisp00_cCFv = .text:0x8015DD10; // type:function size:0x160
|
||||
fn_8015DE70 = .text:0x8015DE70; // type:function size:0x194
|
||||
isPointingAtRingIcon__17dLytPauseDisp00_cFv = .text:0x8015DE70; // type:function size:0x194
|
||||
hideItemIcons__17dLytPauseDisp00_cFv = .text:0x8015E010; // type:function size:0x58
|
||||
fn_8015E070 = .text:0x8015E070; // type:function size:0x220
|
||||
getPointedItemSpecial__17dLytPauseDisp00_cFlPb = .text:0x8015E070; // type:function size:0x220
|
||||
executeCall__17dLytPauseDisp00_cFv = .text:0x8015E290; // type:function size:0xA4
|
||||
playOnOffTabAnim__17dLytPauseDisp00_cFv = .text:0x8015E340; // type:function size:0x54
|
||||
loadRingText__17dLytPauseDisp00_cFUl = .text:0x8015E3A0; // type:function size:0xF4
|
||||
@@ -9174,28 +9174,28 @@ getCaptionItemText__Fl = .text:0x801679E0; // type:function size:0x54
|
||||
getDowsingText__Fl = .text:0x80167A40; // type:function size:0x40
|
||||
getPauseCategoryText__Fl = .text:0x80167A80; // type:function size:0x5C
|
||||
getCurrentWalletType = .text:0x80167AE0; // type:function size:0x88
|
||||
getCurrentWalletItemId = .text:0x80167B70; // type:function size:0x30
|
||||
fn_80167BA0 = .text:0x80167BA0; // type:function size:0x8
|
||||
hasSailcloth = .text:0x80167BB0; // type:function size:0x34
|
||||
getSailclothItemId = .text:0x80167BF0; // type:function size:0x8
|
||||
getCurrentWalletItemId__Fv = .text:0x80167B70; // type:function size:0x30
|
||||
getCurrentHeartPieceItemId__Fv = .text:0x80167BA0; // type:function size:0x8
|
||||
hasSailcloth__Fv = .text:0x80167BB0; // type:function size:0x34
|
||||
getCurrentSailclothItemId__Fv = .text:0x80167BF0; // type:function size:0x8
|
||||
getCurrentMittsLevel__Fv = .text:0x80167C00; // type:function size:0x4
|
||||
fn_80167C10 = .text:0x80167C10; // type:function size:0x44
|
||||
getCurrentMittsItemId__Fv = .text:0x80167C10; // type:function size:0x44
|
||||
isMittsRestricted__Fv = .text:0x80167C60; // type:function size:0x8
|
||||
fn_80167C70 = .text:0x80167C70; // type:function size:0x8
|
||||
getCurrentEarringsItemId__Fv = .text:0x80167C70; // type:function size:0x8
|
||||
hasWaterDragonScale__Fv = .text:0x80167C80; // type:function size:0x40
|
||||
fn_80167CC0 = .text:0x80167CC0; // type:function size:0x30
|
||||
getCurrentWaterDragonScaleItemId__Fv = .text:0x80167CC0; // type:function size:0x30
|
||||
isWaterDragonScaleRestricted__Fv = .text:0x80167CF0; // type:function size:0x8
|
||||
hasGoddessHarp__Fv = .text:0x80167D00; // type:function size:0x34
|
||||
getGoddessHarpId = .text:0x80167D40; // type:function size:0x8
|
||||
harpRestricted = .text:0x80167D50; // type:function size:0x28
|
||||
getCurrentGoddessHarpItemId__Fv = .text:0x80167D40; // type:function size:0x8
|
||||
isHarpRestrictedBokoBase__Fv = .text:0x80167D50; // type:function size:0x28
|
||||
hasSong__Fl = .text:0x80167D80; // type:function size:0x34
|
||||
fn_80167DC0 = .text:0x80167DC0; // type:function size:0x14
|
||||
getItemIdForTabletNum = .text:0x80167DE0; // type:function size:0x10
|
||||
getSongItemIdForIndex__Fl = .text:0x80167DC0; // type:function size:0x14
|
||||
getTabletItemIdForIndex__Fl = .text:0x80167DE0; // type:function size:0x10
|
||||
getCurrentSwordLevel__Fv = .text:0x80167DF0; // type:function size:0x24
|
||||
fn_80167E20 = .text:0x80167E20; // type:function size:0x30
|
||||
getCurrentSwordItemId__Fv = .text:0x80167E20; // type:function size:0x30
|
||||
fn_80167E50 = .text:0x80167E50; // type:function size:0x14
|
||||
isSwordRestrictedBokoBase__Fv = .text:0x80167E70; // type:function size:0x44
|
||||
getItemIdForTriforcePieceNum = .text:0x80167EC0; // type:function size:0x10
|
||||
getTriforceItemIdForIndex__Fl = .text:0x80167EC0; // type:function size:0x10
|
||||
getSongLifeTreeStatus__Fv = .text:0x80167ED0; // type:function size:0x88
|
||||
shouldUseSingular__Fl = .text:0x80167F60; // type:function size:0x74
|
||||
__ct__17dLytCommonArrow_cFv = .text:0x80167FE0; // type:function size:0x148
|
||||
@@ -28336,13 +28336,16 @@ lbl_804E8150 = .rodata:0x804E8150; // type:object size:0xC8 data:4byte
|
||||
lbl_804E8218 = .rodata:0x804E8218; // type:object size:0x10 data:4byte
|
||||
lbl_804E8228 = .rodata:0x804E8228; // type:object size:0x20 data:4byte
|
||||
brlanMap = .rodata:0x804E8248; // type:object size:0x10 scope:local data:4byte
|
||||
lbl_804E8258 = .rodata:0x804E8258; // type:object size:0x128
|
||||
lbl_804E8380 = .rodata:0x804E8380; // type:object size:0x128
|
||||
brlanMap = .rodata:0x804E84A8; // type:object size:0x3F0 data:4byte
|
||||
lbl_804E8898 = .rodata:0x804E8898; // type:object size:0x3C data:byte
|
||||
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
|
||||
sNavTable1 = .rodata:0x804E8258; // type:object size:0x128 scope:local
|
||||
sNavTable2 = .rodata:0x804E8380; // type:object size:0x128 scope:local
|
||||
brlanMap = .rodata:0x804E84A8; // type:object size:0x3F0 scope:local data:4byte
|
||||
iconVariants = .rodata:0x804E8898; // type:object size:0x18 scope:local data:byte
|
||||
lbl_804E88B0 = .rodata:0x804E88B0; // type:object size:0xC
|
||||
lbl_804E88BC = .rodata:0x804E88BC; // type:object size:0xC
|
||||
lbl_804E88C8 = .rodata:0x804E88C8; // type:object size:0xC
|
||||
@LOCAL@executeState_Select__17dLytPauseDisp00_cFv@sTabAnim2 = .rodata:0x804E88D4; // type:object size:0xC
|
||||
@LOCAL@executeState_Select__17dLytPauseDisp00_cFv@sTabAnim3@0 = .rodata:0x804E88E0; // type:object size:0xC
|
||||
@LOCAL@setupTabletTriforce__17dLytPauseDisp00_cFv@sTriforceHaveBoundings = .rodata:0x804E88EC; // type:object size:0xC data:4byte
|
||||
@LOCAL@setupSword__17dLytPauseDisp00_cFv@sSwordFrames@0 = .rodata:0x804E88F8; // type:object size:0x20
|
||||
brlanMap = .rodata:0x804E8918; // type:object size:0x78 scope:local data:4byte
|
||||
sNavTable = .rodata:0x804E8990; // type:object size:0x110 scope:local
|
||||
@@ -34469,7 +34472,8 @@ sBoundingNames = .data:0x80525924; // type:object size:0x94 data:4byte
|
||||
lbl_805259B8 = .data:0x805259B8; // type:object size:0x10
|
||||
lbl_805259C8 = .data:0x805259C8; // type:object size:0x10
|
||||
lbl_805259D8 = .data:0x805259D8; // type:object size:0xC
|
||||
lbl_805259E4 = .data:0x805259E4; // type:object size:0x20
|
||||
lbl_805259E4 = .data:0x805259E4; // type:object size:0x10
|
||||
lbl_805259F4 = .data:0x805259F4; // type:object size:0x10
|
||||
lbl_80525A04 = .data:0x80525A04; // type:object size:0x14
|
||||
lbl_80525A18 = .data:0x80525A18; // type:object size:0x10 data:string
|
||||
jumptable_80525A28 = .data:0x80525A28; // type:object size:0x20 scope:local
|
||||
@@ -42028,8 +42032,8 @@ sCurrentObtainingItemOarcName = .sbss:0x80575918; // type:object size:0x4 data:4
|
||||
lbl_80575928 = .sbss:0x80575928; // type:object size:0x8 data:byte
|
||||
sInstance__12dTgMassObj_c = .sbss:0x80575930; // type:object size:0x4 data:4byte
|
||||
lbl_80575934 = .sbss:0x80575934; // type:object size:0x4 data:4byte
|
||||
lbl_80575938 = .sbss:0x80575938; // type:object size:0x4 align:4 data:float
|
||||
lbl_8057593C = .sbss:0x8057593C; // type:object size:0x4 align:4 data:float
|
||||
sDisp00ArrowRotation__14dLytPauseMgr_c = .sbss:0x80575938; // type:object size:0x4 align:4 data:float
|
||||
sDisp00ArrowLength__14dLytPauseMgr_c = .sbss:0x8057593C; // type:object size:0x4 align:4 data:float
|
||||
sInstance__14dLytPauseMgr_c = .sbss:0x80575940; // type:object size:0x8 data:4byte
|
||||
sInstance__17dLytGameOverMgr_c = .sbss:0x80575948; // type:object size:0x8 data:4byte
|
||||
sInstance__13dLytSaveMgr_c = .sbss:0x80575950; // type:object size:0x8 data:4byte
|
||||
@@ -51517,8 +51521,10 @@ lbl_805B1670 = .bss:0x805B1670; // type:object size:0x10
|
||||
LytPauseDisp00__STATE_NONE = .bss:0x805B1680; // type:object size:0x40 data:4byte
|
||||
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
|
||||
LytPauseDisp00__STATE_SELECT = .bss:0x805B1740; // type:object size:0x40 data:4byte
|
||||
LytPauseDisp00__STATE_RING = .bss:0x805B1780; // type:object size:0x40 data:4byte
|
||||
LytPauseDisp00__STATE_GET_DEMO = .bss:0x805B17C0; // type:object size:0x40 data:4byte
|
||||
LytPauseDisp00__STATE_OUT = .bss:0x805B1800; // 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
|
||||
|
||||
@@ -40,6 +40,10 @@ public:
|
||||
return mCursorIf.getHit();
|
||||
}
|
||||
|
||||
dCursorInterface_c *getCursorIf() {
|
||||
return &mCursorIf;
|
||||
}
|
||||
|
||||
static dCsBase_c *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
@@ -17,6 +17,16 @@ public:
|
||||
bool execute();
|
||||
bool draw();
|
||||
|
||||
void drawDirectly();
|
||||
void requestIn(bool scroll);
|
||||
void requestOut(bool scroll);
|
||||
void requestSelect();
|
||||
void requestRing();
|
||||
void requestUnselect();
|
||||
|
||||
bool requestSelectGuide();
|
||||
bool requestSelectMpls();
|
||||
|
||||
STATE_FUNC_DECLARE(dLytPauseDisp00_c, None);
|
||||
STATE_FUNC_DECLARE(dLytPauseDisp00_c, In);
|
||||
STATE_FUNC_DECLARE(dLytPauseDisp00_c, Wait);
|
||||
|
||||
@@ -22,24 +22,40 @@ u8 getSongLifeTreeStatus();
|
||||
|
||||
/** 0: no sword, 6: TMS */
|
||||
s32 getCurrentSwordLevel();
|
||||
u16 getCurrentSwordItemId();
|
||||
bool isSwordRestrictedBokoBase();
|
||||
|
||||
u16 getCurrentGoddessHarpItemId();
|
||||
bool isHarpRestrictedBokoBase();
|
||||
|
||||
u16 getCurrentEarringsItemId();
|
||||
|
||||
u16 getTabletItemIdForIndex(s32 index);
|
||||
|
||||
u16 getTriforceItemIdForIndex(s32 index);
|
||||
|
||||
u16 getSongItemIdForIndex(s32 index);
|
||||
|
||||
bool hasGoddessHarp();
|
||||
|
||||
bool hasSong(s32 index);
|
||||
|
||||
bool hasWaterDragonScale();
|
||||
u16 getCurrentWaterDragonScaleItemId();
|
||||
bool isWaterDragonScaleRestricted();
|
||||
|
||||
bool hasSailcloth();
|
||||
|
||||
s32 getCurrentMittsLevel();
|
||||
u16 getCurrentMittsItemId();
|
||||
bool isMittsRestricted();
|
||||
|
||||
u16 getCurrentSailclothItemId();
|
||||
|
||||
u16 getCurrentWalletItemId();
|
||||
|
||||
u16 getCurrentHeartPieceItemId();
|
||||
|
||||
void getItemLabel(s32 itemId, SizedString<32> &buf);
|
||||
void getCaptionItemLabel(s32 itemId, SizedString<32> &buf);
|
||||
void getDowsingLabel(s32 itemId, SizedString<32> &buf);
|
||||
|
||||
@@ -315,6 +315,10 @@ public:
|
||||
mVec2_c operator-(const mVec2_c &v) const {
|
||||
return mVec2_c(x - v.x, y - v.y);
|
||||
}
|
||||
|
||||
f32 squareDistanceTo(const mVec2_c &other) const {
|
||||
return (*this - other).squaredLength();
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+384
-206
@@ -18,11 +18,16 @@
|
||||
#include "d/lyt/meter/d_lyt_meter.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_group.h"
|
||||
#include "nw4r/lyt/lyt_pane.h"
|
||||
#include "nw4r/lyt/lyt_types.h"
|
||||
#include "nw4r/math/math_types.h"
|
||||
#include "sized_string.h"
|
||||
#include "toBeSorted/counters/counter.h"
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
STATE_DEFINE(dLytPauseDisp00_c, None);
|
||||
STATE_DEFINE(dLytPauseDisp00_c, In);
|
||||
STATE_DEFINE(dLytPauseDisp00_c, Wait);
|
||||
@@ -31,6 +36,92 @@ STATE_DEFINE(dLytPauseDisp00_c, Ring);
|
||||
STATE_DEFINE(dLytPauseDisp00_c, GetDemo);
|
||||
STATE_DEFINE(dLytPauseDisp00_c, Out);
|
||||
|
||||
// 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 sNavTable1[][8] = {
|
||||
{0x00, 0x15, 0x15, 0x0F, 0x08, 0x18, 0x24, 0x24},
|
||||
{0x12, 0x11, 0x03, 0x1E, 0x1E, 0x1E, 0x20, 0x20},
|
||||
{0x13, 0x1C, 0x1B, 0x1F, 0x1F, 0x1E, 0x02, 0x11},
|
||||
{0x08, 0x0A, 0x0A, 0x06, 0x06, 0x00, 0x19, 0x18},
|
||||
{0x09, 0x21, 0x21, 0x00, 0x07, 0x07, 0x0B, 0x0B},
|
||||
{0x0A, 0x0B, 0x07, 0x07, 0x00, 0x00, 0x1F, 0x04},
|
||||
{0x0B, 0x05, 0x05, 0x00, 0x00, 0x06, 0x06, 0x0A},
|
||||
{0x01, 0x0F, 0x10, 0x0A, 0x0A, 0x04, 0x18, 0x24},
|
||||
{0x15, 0x21, 0x21, 0x05, 0x0B, 0x0B, 0x10, 0x0F},
|
||||
{0x08, 0x10, 0x0B, 0x07, 0x06, 0x04, 0x04, 0x08},
|
||||
{0x09, 0x09, 0x05, 0x05, 0x07, 0x06, 0x0A, 0x10},
|
||||
{0x01, 0x0E, 0x0D, 0x10, 0x08, 0x08, 0x18, 0x01},
|
||||
{0x15, 0x15, 0x00, 0x09, 0x09, 0x10, 0x0C, 0x0E},
|
||||
{0x00, 0x15, 0x0D, 0x0D, 0x10, 0x0C, 0x0C, 0x01},
|
||||
{0x01, 0x15, 0x09, 0x09, 0x10, 0x08, 0x08, 0x01},
|
||||
{0x0F, 0x09, 0x09, 0x0B, 0x0A, 0x0A, 0x08, 0x08},
|
||||
{0x14, 0x14, 0x13, 0x03, 0x02, 0x02, 0x12, 0x14},
|
||||
{0x14, 0x14, 0x11, 0x11, 0x02, 0x20, 0x20, 0x20},
|
||||
{0x14, 0x22, 0x1D, 0x1C, 0x03, 0x11, 0x11, 0x14},
|
||||
{0x00, 0x22, 0x22, 0x13, 0x11, 0x12, 0x12, 0x00},
|
||||
{0x00, 0x00, 0x21, 0x21, 0x09, 0x0F, 0x01, 0x01},
|
||||
{0x23, 0x24, 0x17, 0x17, 0x1A, 0x1D, 0x1D, 0x22},
|
||||
{0x24, 0x01, 0x01, 0x18, 0x18, 0x1B, 0x16, 0x16},
|
||||
{0x17, 0x01, 0x08, 0x04, 0x19, 0x19, 0x1C, 0x17},
|
||||
{0x18, 0x18, 0x04, 0x06, 0x1A, 0x1A, 0x1A, 0x1D},
|
||||
{0x16, 0x19, 0x19, 0x06, 0x00, 0x1F, 0x1B, 0x00},
|
||||
{0x1C, 0x17, 0x1A, 0x1A, 0x1A, 0x1F, 0x03, 0x1C},
|
||||
{0x1D, 0x1D, 0x18, 0x1B, 0x1B, 0x03, 0x13, 0x13},
|
||||
{0x22, 0x16, 0x16, 0x19, 0x1C, 0x1C, 0x13, 0x14},
|
||||
{0x02, 0x03, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x02},
|
||||
{0x03, 0x1B, 0x06, 0x00, 0x00, 0x1E, 0x1E, 0x03},
|
||||
{0x14, 0x12, 0x12, 0x02, 0x02, 0x00, 0x00, 0x00},
|
||||
{0x15, 0x00, 0x00, 0x00, 0x05, 0x05, 0x09, 0x15},
|
||||
{0x00, 0x23, 0x23, 0x16, 0x1D, 0x13, 0x14, 0x14},
|
||||
{0x00, 0x24, 0x24, 0x17, 0x16, 0x1D, 0x22, 0x22},
|
||||
{0x00, 0x01, 0x01, 0x08, 0x17, 0x16, 0x23, 0x23},
|
||||
{0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D},
|
||||
};
|
||||
|
||||
static const u8 sNavTable2[][8] = {
|
||||
{0x00, 0x15, 0x15, 0x0E, 0x0C, 0x18, 0x24, 0x24},
|
||||
{0x12, 0x11, 0x03, 0x1E, 0x1E, 0x1E, 0x20, 0x20},
|
||||
{0x13, 0x1C, 0x1B, 0x1F, 0x1F, 0x1E, 0x02, 0x11},
|
||||
{0x08, 0x0A, 0x0A, 0x06, 0x06, 0x00, 0x19, 0x18},
|
||||
{0x09, 0x21, 0x21, 0x00, 0x07, 0x07, 0x0B, 0x0B},
|
||||
{0x0A, 0x0B, 0x07, 0x07, 0x00, 0x00, 0x1F, 0x04},
|
||||
{0x0B, 0x05, 0x05, 0x00, 0x00, 0x06, 0x06, 0x0A},
|
||||
{0x0C, 0x0C, 0x10, 0x0A, 0x0A, 0x04, 0x18, 0x24},
|
||||
{0x0D, 0x21, 0x21, 0x05, 0x0B, 0x0B, 0x10, 0x0D},
|
||||
{0x08, 0x10, 0x0B, 0x07, 0x06, 0x04, 0x04, 0x08},
|
||||
{0x09, 0x09, 0x05, 0x05, 0x07, 0x06, 0x0A, 0x10},
|
||||
{0x01, 0x0E, 0x0D, 0x10, 0x08, 0x08, 0x18, 0x01},
|
||||
{0x15, 0x15, 0x21, 0x09, 0x09, 0x10, 0x0C, 0x0E},
|
||||
{0x01, 0x15, 0x0D, 0x0D, 0x10, 0x0C, 0x0C, 0x01},
|
||||
{0x00, 0x15, 0x00, 0x09, 0x10, 0x08, 0x08, 0x01},
|
||||
{0x0E, 0x0D, 0x09, 0x0B, 0x0A, 0x0A, 0x08, 0x0C},
|
||||
{0x14, 0x14, 0x13, 0x03, 0x02, 0x02, 0x12, 0x14},
|
||||
{0x14, 0x14, 0x11, 0x11, 0x02, 0x20, 0x20, 0x20},
|
||||
{0x14, 0x22, 0x1D, 0x1C, 0x03, 0x11, 0x11, 0x14},
|
||||
{0x00, 0x22, 0x1D, 0x13, 0x11, 0x12, 0x12, 0x00},
|
||||
{0x00, 0x00, 0x21, 0x21, 0x0D, 0x0E, 0x01, 0x01},
|
||||
{0x23, 0x24, 0x17, 0x17, 0x1A, 0x1D, 0x1D, 0x22},
|
||||
{0x24, 0x01, 0x01, 0x18, 0x18, 0x1B, 0x16, 0x16},
|
||||
{0x17, 0x01, 0x08, 0x04, 0x19, 0x19, 0x1C, 0x17},
|
||||
{0x18, 0x18, 0x04, 0x06, 0x1A, 0x1A, 0x1A, 0x1D},
|
||||
{0x16, 0x19, 0x19, 0x06, 0x00, 0x1F, 0x1B, 0x00},
|
||||
{0x1C, 0x17, 0x1A, 0x1A, 0x1A, 0x1F, 0x03, 0x1C},
|
||||
{0x1D, 0x1D, 0x18, 0x1B, 0x1B, 0x03, 0x13, 0x13},
|
||||
{0x22, 0x16, 0x16, 0x19, 0x1C, 0x1C, 0x13, 0x14},
|
||||
{0x02, 0x03, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x02},
|
||||
{0x03, 0x1B, 0x06, 0x00, 0x00, 0x1E, 0x1E, 0x03},
|
||||
{0x14, 0x12, 0x12, 0x02, 0x02, 0x00, 0x00, 0x00},
|
||||
{0x15, 0x00, 0x00, 0x00, 0x05, 0x05, 0x09, 0x15},
|
||||
{0x00, 0x23, 0x23, 0x16, 0x1D, 0x13, 0x14, 0x14},
|
||||
{0x00, 0x24, 0x24, 0x17, 0x16, 0x1D, 0x22, 0x22},
|
||||
{0x00, 0x01, 0x01, 0x08, 0x17, 0x16, 0x23, 0x23},
|
||||
{0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D},
|
||||
};
|
||||
|
||||
static const d2d::LytBrlanMapping brlanMap[] = {
|
||||
{ "pause_00_in.brlan", "G_inOut_00"},
|
||||
{ "pause_00_have.brlan", "G_sekiban_00"},
|
||||
@@ -238,7 +329,16 @@ static const d2d::LytBrlanMapping brlanMap[] = {
|
||||
|
||||
#define PAUSE_DISP_00_NUM_SUBPANES 24
|
||||
|
||||
extern "C" u8 lbl_804E8898[];
|
||||
// clang-format off
|
||||
static const u8 iconVariants[] = {
|
||||
// Wheel
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
// Dowsing
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
// Pouch
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
static const char *sGroupName = "G_ref_00";
|
||||
|
||||
@@ -303,7 +403,7 @@ bool dLytPauseDisp00_c::build() {
|
||||
resAcc = pauseMgr->getResAcc2();
|
||||
|
||||
for (int i = 0; i < PAUSE_DISP_00_NUM_SUBPANES; i++) {
|
||||
mIcons[i].build(resAcc, lbl_804E8898[i]);
|
||||
mIcons[i].build(resAcc, iconVariants[i]);
|
||||
mSubpanes[i].mpLytPane = &mIcons[i];
|
||||
mSubpaneList.PushBack(&mSubpanes[i]);
|
||||
}
|
||||
@@ -384,7 +484,11 @@ bool dLytPauseDisp00_c::remove() {
|
||||
}
|
||||
|
||||
bool dLytPauseDisp00_c::execute() {
|
||||
dLytPauseMgr_c *pause = dLytPauseMgr_c::GetInstance();
|
||||
field_0xE371 = false;
|
||||
pause->setField_0x083C(false);
|
||||
pause->setField_0x083D(false);
|
||||
pause->setField_0x0837(false);
|
||||
mStateMgr.executeState();
|
||||
executeCall();
|
||||
for (int i = 0; i < PAUSE_DISP_00_NUM_SUBPANES; i++) {
|
||||
@@ -407,6 +511,54 @@ bool dLytPauseDisp00_c::draw() {
|
||||
return true;
|
||||
}
|
||||
|
||||
void dLytPauseDisp00_c::drawDirectly() {
|
||||
mLyt.draw();
|
||||
}
|
||||
|
||||
void dLytPauseDisp00_c::requestIn(bool scroll) {
|
||||
mInRequest = true;
|
||||
mDoScrollAnim = scroll;
|
||||
}
|
||||
|
||||
void dLytPauseDisp00_c::requestOut(bool scroll) {
|
||||
mOutRequest = true;
|
||||
mDoScrollAnim = scroll;
|
||||
}
|
||||
|
||||
void dLytPauseDisp00_c::requestSelect() {
|
||||
mSelectToggleRequest = true;
|
||||
}
|
||||
|
||||
void dLytPauseDisp00_c::requestRing() {
|
||||
mRingToggleRequest = true;
|
||||
}
|
||||
|
||||
void dLytPauseDisp00_c::requestUnselect() {
|
||||
mSelectToggleRequest = true;
|
||||
}
|
||||
|
||||
bool dLytPauseDisp00_c::requestSelectGuide() {
|
||||
if (mSelectGuideRequest == true) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
mSelectGuideRequest = true;
|
||||
if (mCallTimerMaybe != 0) {
|
||||
mStopCallRequest = true;
|
||||
StoryflagManager::sInstance->unsetFlag(570);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dLytPauseDisp00_c::requestSelectMpls() {
|
||||
if (mSelectMplsRequest == true) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
mSelectMplsRequest = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
void dLytPauseDisp00_c::initializeState_None() {
|
||||
for (int i = 0; i < PAUSE_DISP_00_NUM_ANIMS; i++) {
|
||||
mAnm[i].unbind();
|
||||
@@ -1240,7 +1392,7 @@ void dLytPauseDisp00_c::setupFireshieldEarrings() {
|
||||
void dLytPauseDisp00_c::setupSongsAndLifeTree() {
|
||||
if (hasGoddessHarp()) {
|
||||
setAnm(PAUSE_DISP_00_ANIM_HAVE_HARP, 1.0f);
|
||||
setAnm(PAUSE_DISP_00_ANIM_BOCO_HARP, 1.0f);
|
||||
setAnm(PAUSE_DISP_00_ANIM_BOCO_HARP, 0.0f);
|
||||
mpBoundings[PAUSE_DISP_00_BOUNDING_HARP]->SetVisible(true);
|
||||
} else {
|
||||
setAnm(PAUSE_DISP_00_ANIM_HAVE_HARP, 0.0f);
|
||||
@@ -1305,32 +1457,32 @@ void dLytPauseDisp00_c::setupTabletTriforce() {
|
||||
PAUSE_DISP_00_ANIM_HAVE_FORCE_OFFSET + 2,
|
||||
};
|
||||
|
||||
s32 tabletCount = 0;
|
||||
s32 count = 0;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (dAcItem_c::checkFlag(getTabletItemIdForIndex(i))) {
|
||||
tabletCount++;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
if (tabletCount != 0) {
|
||||
if (count != 0) {
|
||||
setAnm(PAUSE_DISP_00_ANIM_HAVE_TABLET, 1.0f);
|
||||
setAnm(PAUSE_DISP_00_ANIM_TABLETS, tabletCount - 1.0f);
|
||||
setAnm(PAUSE_DISP_00_ANIM_TABLETS, count - 1.0f);
|
||||
mpBoundings[PAUSE_DISP_00_BOUNDING_TABLETS]->SetVisible(true);
|
||||
} else {
|
||||
setAnm(PAUSE_DISP_00_ANIM_HAVE_TABLET, 0.0f);
|
||||
}
|
||||
|
||||
s32 triforceCount = 0;
|
||||
count = 0;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (dAcItem_c::checkFlag(getTriforceItemIdForIndex(i))) {
|
||||
triforceCount++;
|
||||
count++;
|
||||
setAnm(sTriforceHaveBoundings[i], 1.0f);
|
||||
} else {
|
||||
setAnm(sTriforceHaveBoundings[i], 0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
if (triforceCount != 0) {
|
||||
if (count != 0) {
|
||||
mpBoundings[PAUSE_DISP_00_BOUNDING_TABLETS]->SetVisible(true);
|
||||
mAnm[PAUSE_DISP_00_ANIM_TABLETS].setFrame(3.0f);
|
||||
setAnm(PAUSE_DISP_00_ANIM_HAVE_FORCE_BG, 1.0f);
|
||||
@@ -1390,89 +1542,53 @@ void dLytPauseDisp00_c::setupStoneOfTrials() {
|
||||
}
|
||||
}
|
||||
|
||||
// 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 sNavTable1[][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},
|
||||
};
|
||||
|
||||
static const u8 sNavTable2[][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},
|
||||
};
|
||||
void dLytPauseDisp00_c::setupRingIcons(s32 tab) {
|
||||
switch (tab) {
|
||||
case 1: {
|
||||
s32 offset = PAUSE_DISP_00_BOUNDING_RING_OFFSET;
|
||||
for (int i = 0; i < PAUSE_DISP_00_ICONS_NUM_ITEMS_ON_WHEEL; i++) {
|
||||
bool visible = false;
|
||||
if (getPouchItemForSlot(i, true) != LYT_CMN_PouchPotionHealthPlusPlusHalf) {
|
||||
visible = true;
|
||||
}
|
||||
mpBoundings[offset]->SetVisible(visible);
|
||||
offset++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
s32 offset = PAUSE_DISP_00_BOUNDING_RING_OFFSET;
|
||||
for (int i = 0; i < PAUSE_DISP_00_ICONS_NUM_ITEMS_ON_WHEEL; i++) {
|
||||
bool visible = false;
|
||||
if (hasDowsingInIndex(i)) {
|
||||
visible = true;
|
||||
}
|
||||
mpBoundings[offset]->SetVisible(visible);
|
||||
offset++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0:
|
||||
default: {
|
||||
s32 offset = PAUSE_DISP_00_BOUNDING_RING_OFFSET;
|
||||
for (int i = 0; i < PAUSE_DISP_00_ICONS_NUM_ITEMS_ON_WHEEL; i++) {
|
||||
bool visible = false;
|
||||
if (getItemLevelForBWheelIndex(i) != 0) {
|
||||
visible = true;
|
||||
}
|
||||
mpBoundings[offset]->SetVisible(visible);
|
||||
offset++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s32 dLytPauseDisp00_c::updateSelection() {
|
||||
dLytControlGame_c *lytControl = dLytControlGame_c::getInstance();
|
||||
dLytPauseMgr_c *pause = dLytPauseMgr_c::GetInstance();
|
||||
d2d::AnmGroup_c *pAnm;
|
||||
|
||||
if (!pause->isStateWait()) {
|
||||
pause->setSelection(dLytPauseMgr_c::SELECT_NONE, 0, false);
|
||||
return 0;
|
||||
@@ -1578,7 +1694,7 @@ s32 dLytPauseDisp00_c::updateSelection() {
|
||||
default: {
|
||||
s32 idx = navTargetToBounding(target) - PAUSE_DISP_00_BOUNDING_RING_OFFSET;
|
||||
if (lytControl->getPauseDisp00Tab() == 1) {
|
||||
id = getPouchItemForSlot(idx, true);
|
||||
id = getPouchItemIdForIndex(idx, true);
|
||||
if (id == ITEM_NONE) {
|
||||
id = ITEM_POUCH_EXPANSION;
|
||||
}
|
||||
@@ -1614,24 +1730,9 @@ s32 dLytPauseDisp00_c::updateSelection() {
|
||||
selectionType = dLytPauseMgr_c::SELECT_FIRE;
|
||||
break;
|
||||
}
|
||||
case PAUSE_DISP_00_BOUNDING_TABLETS:
|
||||
case PAUSE_DISP_00_BOUNDING_HEART:
|
||||
case PAUSE_DISP_00_BOUNDING_POUCH:
|
||||
case PAUSE_DISP_00_BOUNDING_PARACHUTE:
|
||||
case PAUSE_DISP_00_BOUNDING_MITTS:
|
||||
case PAUSE_DISP_00_BOUNDING_SCALE:
|
||||
case PAUSE_DISP_00_BOUNDING_RING:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 0:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 1:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 2:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 3:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 4:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 5:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 6:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 7:
|
||||
case PAUSE_DISP_00_BOUNDING_HARP:
|
||||
case PAUSE_DISP_00_BOUNDING_SWORD:
|
||||
case PAUSE_DISP_00_BOUNDING_SHIREN: {
|
||||
// yes
|
||||
case INT_MIN ... PAUSE_DISP_00_BOUNDING_SWORD_FIRE_OFFSET - 1:
|
||||
case PAUSE_DISP_00_BOUNDING_SHIREN: {
|
||||
id = getPointedItemSpecial(paneIdx, &locked);
|
||||
selectionType = dLytPauseMgr_c::SELECT_ITEM;
|
||||
break;
|
||||
@@ -1648,83 +1749,73 @@ s32 dLytPauseDisp00_c::updateSelection() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO derive numbers from defines
|
||||
{
|
||||
d2d::AnmGroup_c *pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_TABLET];
|
||||
for (int i = 0; i < 15; i++) {
|
||||
s32 anim = PAUSE_DISP_00_ANIM_ONOFF_TABLET + i;
|
||||
if (target != 0 && navTargetToBounding(target) == i &&
|
||||
mpBoundings[navTargetToBounding(target)]->IsVisible()) {
|
||||
pAnm->play();
|
||||
} else {
|
||||
playBackwards(*pAnm);
|
||||
}
|
||||
|
||||
if (anim == 62) {
|
||||
d2d::AnmGroup_c *museAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_MI_TO_TANE];
|
||||
if (target != 0 && navTargetToBounding(target) == i) {
|
||||
museAnm->play();
|
||||
} else {
|
||||
playBackwards(*museAnm);
|
||||
}
|
||||
}
|
||||
pAnm++;
|
||||
pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_TABLET];
|
||||
for (int 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();
|
||||
} else {
|
||||
playBackwards(*pAnm);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
d2d::AnmGroup_c *pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_HARP];
|
||||
for (int i = 15; i < 21; i++) {
|
||||
if (anim == PAUSE_DISP_00_ANIM_ONOFF_MUSE_OFFSET + 6) {
|
||||
d2d::AnmGroup_c *museAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_MI_TO_TANE];
|
||||
if (target != 0 && navTargetToBounding(target) == i) {
|
||||
pAnm->play();
|
||||
museAnm->play();
|
||||
} else {
|
||||
playBackwards(*pAnm);
|
||||
playBackwards(*museAnm);
|
||||
}
|
||||
pAnm++;
|
||||
}
|
||||
pAnm++;
|
||||
}
|
||||
|
||||
{
|
||||
d2d::AnmGroup_c *pAnm;
|
||||
|
||||
pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_SWORD];
|
||||
if (target != 0 && navTargetToBounding(target) == PAUSE_DISP_00_BOUNDING_SWORD) {
|
||||
pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_HARP];
|
||||
for (int i = PAUSE_DISP_00_BOUNDING_HARP; i < PAUSE_DISP_00_BOUNDING_SHIREN + 1; i++) {
|
||||
if (target != 0 && navTargetToBounding(target) == i) {
|
||||
pAnm->play();
|
||||
} else {
|
||||
playBackwards(*pAnm);
|
||||
}
|
||||
pAnm++;
|
||||
}
|
||||
|
||||
pAnm = &mAnm[PAUSE_DISP_00_ANIM_UI_TYPE_BTN];
|
||||
if (target != 0 && navTargetToBounding(target) == PAUSE_DISP_00_BOUNDING_UI_TYPE) {
|
||||
pause->setField_0x083C(true);
|
||||
pAnm->play();
|
||||
} else {
|
||||
playBackwards(*pAnm);
|
||||
}
|
||||
pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_SWORD];
|
||||
if (target != 0 && navTargetToBounding(target) == PAUSE_DISP_00_BOUNDING_SWORD) {
|
||||
pAnm->play();
|
||||
} else {
|
||||
playBackwards(*pAnm);
|
||||
}
|
||||
|
||||
pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_CALIB_BTN];
|
||||
if (target != 0 && navTargetToBounding(target) == PAUSE_DISP_00_BOUNDING_CALIB_BTN_0) {
|
||||
pause->setField_0x083D(true);
|
||||
pAnm->play();
|
||||
} else {
|
||||
playBackwards(*pAnm);
|
||||
}
|
||||
pAnm = &mAnm[PAUSE_DISP_00_ANIM_UI_TYPE_BTN];
|
||||
if (target != 0 && navTargetToBounding(target) == PAUSE_DISP_00_BOUNDING_UI_TYPE) {
|
||||
pause->setField_0x083C(true);
|
||||
pAnm->play();
|
||||
} else {
|
||||
playBackwards(*pAnm);
|
||||
}
|
||||
|
||||
pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_TRIFORCE];
|
||||
if (target != 0 && navTargetToBounding(target) == PAUSE_DISP_00_BOUNDING_TABLETS &&
|
||||
mpBoundings[PAUSE_DISP_00_BOUNDING_TABLETS]->IsVisible()) {
|
||||
pAnm->play();
|
||||
} else {
|
||||
playBackwards(*pAnm);
|
||||
}
|
||||
pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_CALIB_BTN];
|
||||
if (target != 0 && navTargetToBounding(target) == PAUSE_DISP_00_BOUNDING_CALIB_BTN_0) {
|
||||
pause->setField_0x083D(true);
|
||||
pAnm->play();
|
||||
} else {
|
||||
playBackwards(*pAnm);
|
||||
}
|
||||
|
||||
pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_SHIREN];
|
||||
if (target != 0 && navTargetToBounding(target) == PAUSE_DISP_00_BOUNDING_SHIREN) {
|
||||
pAnm->play();
|
||||
} else {
|
||||
playBackwards(*pAnm);
|
||||
}
|
||||
pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_TRIFORCE];
|
||||
if (target != 0 && navTargetToBounding(target) == PAUSE_DISP_00_BOUNDING_TABLETS &&
|
||||
mpBoundings[PAUSE_DISP_00_BOUNDING_TABLETS]->IsVisible()) {
|
||||
pAnm->play();
|
||||
} else {
|
||||
playBackwards(*pAnm);
|
||||
}
|
||||
|
||||
pAnm = &mAnm[PAUSE_DISP_00_ANIM_ONOFF_SHIREN];
|
||||
if (target != 0 && navTargetToBounding(target) == PAUSE_DISP_00_BOUNDING_SHIREN) {
|
||||
pAnm->play();
|
||||
} else {
|
||||
playBackwards(*pAnm);
|
||||
}
|
||||
|
||||
s32 tab = lytControl->getPauseDisp00Tab();
|
||||
@@ -1732,25 +1823,25 @@ s32 dLytPauseDisp00_c::updateSelection() {
|
||||
tab == 2 ? PAUSE_DISP_00_ANIM_ONOFF_DOWSING_OFFSET :
|
||||
PAUSE_DISP_00_ANIM_ONOFF_ITEM_OFFSET;
|
||||
|
||||
d2d::AnmGroup_c *anm = &mAnm[anmIdx];
|
||||
pAnm = &mAnm[anmIdx];
|
||||
for (int 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 = anm->getFrame();
|
||||
if (anm->getAnimDuration() - 1.0f > frame) {
|
||||
anm->setFrame(frame + 1.0f);
|
||||
f32 frame = pAnm->getFrame();
|
||||
if (pAnm->getAnimDuration() - 1.0f > frame) {
|
||||
pAnm->setFrame(frame + 1.0f);
|
||||
}
|
||||
} else {
|
||||
f32 frame = anm->getFrame();
|
||||
f32 frame = pAnm->getFrame();
|
||||
if (frame) {
|
||||
frame -= 1.0f;
|
||||
if (frame <= 0.0f) {
|
||||
frame = 0.0f;
|
||||
}
|
||||
anm->setFrame(frame);
|
||||
pAnm->setFrame(frame);
|
||||
}
|
||||
}
|
||||
anm++;
|
||||
pAnm++;
|
||||
}
|
||||
|
||||
s32 tab1 = lytControl->getPauseDisp00Tab();
|
||||
@@ -1836,48 +1927,21 @@ s32 dLytPauseDisp00_c::updateSelection() {
|
||||
soundMgr->playSound(SE_S_MENU_P1_POINT_TOGGLE);
|
||||
break;
|
||||
}
|
||||
case PAUSE_DISP_00_BOUNDING_TABLETS:
|
||||
case PAUSE_DISP_00_BOUNDING_HEART:
|
||||
case PAUSE_DISP_00_BOUNDING_POUCH:
|
||||
case PAUSE_DISP_00_BOUNDING_PARACHUTE:
|
||||
case PAUSE_DISP_00_BOUNDING_MITTS:
|
||||
case PAUSE_DISP_00_BOUNDING_SCALE:
|
||||
case PAUSE_DISP_00_BOUNDING_RING:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 0:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 1:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 2:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 3:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 4:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 5:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 6:
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_07:
|
||||
case PAUSE_DISP_00_BOUNDING_HARP:
|
||||
case PAUSE_DISP_00_BOUNDING_SWORD:
|
||||
case PAUSE_DISP_00_BOUNDING_SWORD_FIRE_OFFSET + 0:
|
||||
case PAUSE_DISP_00_BOUNDING_SWORD_FIRE_OFFSET + 1:
|
||||
case PAUSE_DISP_00_BOUNDING_SWORD_FIRE_OFFSET + 2:
|
||||
case PAUSE_DISP_00_BOUNDING_SHIREN:
|
||||
case PAUSE_DISP_00_BOUNDING_RING_OFFSET + 0:
|
||||
case PAUSE_DISP_00_BOUNDING_RING_OFFSET + 1:
|
||||
case PAUSE_DISP_00_BOUNDING_RING_OFFSET + 2:
|
||||
case PAUSE_DISP_00_BOUNDING_RING_OFFSET + 3:
|
||||
case PAUSE_DISP_00_BOUNDING_RING_OFFSET + 4:
|
||||
case PAUSE_DISP_00_BOUNDING_RING_OFFSET + 5:
|
||||
case PAUSE_DISP_00_BOUNDING_RING_OFFSET + 6:
|
||||
case PAUSE_DISP_00_BOUNDING_RING_OFFSET + 7: {
|
||||
// yes
|
||||
case INT_MIN ... PAUSE_DISP_00_BOUNDING_UI_TYPE - 1: {
|
||||
soundMgr->playSound(SE_S_MENU_P1_POINT_ITEM);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (rumble == true) {
|
||||
dRumble_c::start(dRumble_c::sRumblePreset0, 1);
|
||||
dRumble_c::start(dRumble_c::sRumblePreset1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
mPrevNavTarget = target;
|
||||
if (target != 0 && navTargetToBounding(target) != PAUSE_DISP_00_BOUNDING_CALIB_BTN_3 &&
|
||||
!dPadNav::isPrevPointerVisible() && !mpBoundings[navTargetToBounding(target)]->IsVisible()) {
|
||||
!dPadNav::isPointerVisible() && !mpBoundings[navTargetToBounding(target)]->IsVisible()) {
|
||||
target = 0;
|
||||
}
|
||||
|
||||
@@ -1904,6 +1968,28 @@ s32 dLytPauseDisp00_c::getPointerPane() const {
|
||||
return idx;
|
||||
}
|
||||
|
||||
bool dLytPauseDisp00_c::isPointingAtRingIcon() {
|
||||
if (!mLyt.findPane("N_text_00")->IsVisible()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ret = false;
|
||||
nw4r::lyt::Size sz = mLyt.findPane("N_ringIcon_00")->GetSize();
|
||||
f32 radiusSq = sz.width * 0.5f;
|
||||
radiusSq *= radiusSq;
|
||||
mVec2_c csPos = dCsBase_c::GetInstance()->getCursorIf()->getCursorPos();
|
||||
nw4r::math::MTX34 mtx = mLyt.findPane("N_ringIcon_00")->GetGlobalMtx();
|
||||
nw4r::math::VEC3 v(0.0f, 0.0f, 0.0f);
|
||||
MTXMultVec(mtx, v, v);
|
||||
// TODO I hate vectors
|
||||
mVec2_c pos(v.x, v.y);
|
||||
if (pos.squareDistanceTo(csPos) < radiusSq) {
|
||||
ret = true;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void dLytPauseDisp00_c::hideItemIcons() {
|
||||
for (int i = 0; i < PAUSE_DISP_00_NUM_SUBPANES; i++) {
|
||||
mIcons[i].setOff();
|
||||
@@ -1911,6 +1997,98 @@ void dLytPauseDisp00_c::hideItemIcons() {
|
||||
}
|
||||
}
|
||||
|
||||
u16 dLytPauseDisp00_c::getPointedItemSpecial(s32 paneIdx, bool *pLocked) {
|
||||
u16 id = 0;
|
||||
switch (paneIdx) {
|
||||
case PAUSE_DISP_00_BOUNDING_TABLETS: {
|
||||
s32 count = 0;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (dAcItem_c::checkFlag(getTabletItemIdForIndex(i))) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if (count != 0) {
|
||||
count--;
|
||||
}
|
||||
id = getTabletItemIdForIndex(count);
|
||||
count = 0;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (dAcItem_c::checkFlag(getTriforceItemIdForIndex(i))) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if (count != 0) {
|
||||
id = getTriforceItemIdForIndex(count - 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PAUSE_DISP_00_BOUNDING_HEART: {
|
||||
id = getCurrentHeartPieceItemId();
|
||||
break;
|
||||
}
|
||||
case PAUSE_DISP_00_BOUNDING_POUCH: {
|
||||
id = getCurrentWalletItemId();
|
||||
break;
|
||||
}
|
||||
case PAUSE_DISP_00_BOUNDING_PARACHUTE: {
|
||||
id = getCurrentSailclothItemId();
|
||||
break;
|
||||
}
|
||||
case PAUSE_DISP_00_BOUNDING_MITTS: {
|
||||
id = getCurrentMittsItemId();
|
||||
if (isMittsRestricted() == true) {
|
||||
*pLocked = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PAUSE_DISP_00_BOUNDING_SCALE: {
|
||||
id = getCurrentWaterDragonScaleItemId();
|
||||
if (isWaterDragonScaleRestricted()) {
|
||||
*pLocked = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PAUSE_DISP_00_BOUNDING_RING: {
|
||||
id = getCurrentEarringsItemId();
|
||||
break;
|
||||
}
|
||||
case PAUSE_DISP_00_BOUNDING_MUSE_OFFSET ... PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 7: {
|
||||
s32 song = paneIdx - PAUSE_DISP_00_BOUNDING_MUSE_OFFSET;
|
||||
if (paneIdx == PAUSE_DISP_00_BOUNDING_MUSE_OFFSET + 6) {
|
||||
if (StoryflagManager::sInstance->getFlag(462)) {
|
||||
id = getSongItemIdForIndex(song);
|
||||
} else if (dAcItem_c::checkFlag(ITEM_LIFE_TREE_FRUIT)) {
|
||||
id = ITEM_LIFE_TREE_FRUIT;
|
||||
} else if (dAcItem_c::checkFlag(ITEM_LIFE_TREE_SEED)) {
|
||||
id = ITEM_LIFE_TREE_SEED;
|
||||
}
|
||||
} else {
|
||||
id = getSongItemIdForIndex(song);
|
||||
}
|
||||
} break;
|
||||
case PAUSE_DISP_00_BOUNDING_HARP: {
|
||||
id = getCurrentGoddessHarpItemId();
|
||||
if (isHarpRestrictedBokoBase()) {
|
||||
*pLocked = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PAUSE_DISP_00_BOUNDING_SWORD: {
|
||||
id = getCurrentSwordItemId();
|
||||
if (isSwordRestrictedBokoBase()) {
|
||||
*pLocked = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PAUSE_DISP_00_BOUNDING_SHIREN: {
|
||||
id = ITEM_STONE_OF_TRIALS;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
void dLytPauseDisp00_c::executeCall() {
|
||||
if (mCallTimerMaybe == 1) {
|
||||
d2d::AnmGroup_c &anm = mAnm[PAUSE_DISP_00_ANIM_CALL];
|
||||
|
||||
Reference in New Issue
Block a user