X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Ftracker%2FToggleIcon.js;h=3966506d2b2b815868b5553bbdce64287af992ff;hb=249e06be11d0f7778d99956c87d4f0a8ac7e69f7;hp=3f6af9641c0926acb2bf31b1cd8618e74ffe5c3d;hpb=3213c82ad2dd75e313d15423e25653596c7ce278;p=alttp.git diff --git a/resources/js/components/tracker/ToggleIcon.js b/resources/js/components/tracker/ToggleIcon.js index 3f6af96..3966506 100644 --- a/resources/js/components/tracker/ToggleIcon.js +++ b/resources/js/components/tracker/ToggleIcon.js @@ -3,19 +3,23 @@ import React from 'react'; import ZeldaIcon from '../common/ZeldaIcon'; import { + addDungeonCheck, decrement, getDungeonBoss, + getDungeonRemainingItems, getDungeonPrize, hasDungeonBoss, hasDungeonPrize, highestActive, increment, + removeDungeonCheck, toggleBoolean, + toggleBossDefeated, } from '../../helpers/tracker'; import { useTracker } from '../../hooks/tracker'; const ToggleIcon = ({ controller, className, icons }) => { - const { state, setState } = useTracker(); + const { setManualState, state } = useTracker(); const activeController = controller || ToggleIcon.nullController; const active = activeController.getActive(state, icons); const defaultIcon = activeController.getDefault(state, icons); @@ -31,12 +35,12 @@ const ToggleIcon = ({ controller, className, icons }) => { return { - activeController.handlePrimary(state, setState, icons); + activeController.handlePrimary(state, setManualState, icons); e.preventDefault(); e.stopPropagation(); }} onContextMenu={(e) => { - activeController.handleSecondary(state, setState, icons); + activeController.handleSecondary(state, setManualState, icons); e.preventDefault(); e.stopPropagation(); }} @@ -110,23 +114,23 @@ ToggleIcon.dungeonBossController = (dungeon) => ({ handlePrimary: dungeon.bosses.length > 1 ? nextString(`${dungeon.id}-boss`) : (state, setState) => { - setState(toggleBoolean(`${dungeon.id}-boss-defeated`)); + setState(toggleBossDefeated(dungeon)); }, handleSecondary: dungeon.bosses.length > 1 ? previousString(`${dungeon.id}-boss`) : (state, setState) => { - setState(toggleBoolean(`${dungeon.id}-boss-defeated`)); + setState(toggleBossDefeated(dungeon)); }, }); -ToggleIcon.dungeonCheckController = (dungeon, max) => ({ - getActive: (state, icons) => state[`${dungeon.id}-checks`] < max ? icons[1] : null, +ToggleIcon.dungeonCheckController = (dungeon) => ({ + getActive: (state, icons) => getDungeonRemainingItems(state, dungeon) ? icons[1] : null, getDefault: firstIcon, handlePrimary: (state, setState) => { - setState(increment(`${dungeon.id}-checks`, max)); + setState(addDungeonCheck(dungeon)); }, handleSecondary: (state, setState) => { - setState(decrement(`${dungeon.id}-checks`, max)); + setState(removeDungeonCheck(dungeon)); }, }); @@ -201,10 +205,10 @@ ToggleIcon.modulusController = ctrl => ({ getActive: (state, icons) => icons[(state[ctrl] || 0) % icons.length], getDefault: firstIcon, handlePrimary: (state, setState, icons) => { - setState(increment(icons[0], icons.length)); + setState(increment(ctrl, icons.length)); }, handleSecondary: (state, setState, icons) => { - setState(decrement(icons[0], icons.length)); + setState(decrement(ctrl, icons.length)); }, });