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);
return <span
className={classNames.join(' ')}
onClick={(e) => {
- 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();
}}
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));
},
});
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));
},
});