import {
addDungeonCheck,
+ aggregateDungeonStatus,
+ aggregateLocationStatus,
clearAll,
completeDungeonChecks,
countRemainingLocations,
getDungeonClearedItems,
getDungeonRemainingItems,
- hasClearedLocations,
hasDungeonBoss,
hasDungeonPrize,
isDungeonCleared,
};
const Map = () => {
- const { dungeons, setManualState, state } = useTracker();
+ const { dungeons, logic, setManualState, state } = useTracker();
const mapDungeon = React.useCallback(dungeon => {
const definition = dungeons.find(d => d.id === dungeon.id);
const remaining = getDungeonRemainingItems(state, definition);
- let status = 'available';
- if (isDungeonCleared(state, definition)) {
- status = 'cleared';
- }
+ const status = aggregateDungeonStatus(definition, logic, state);
return {
...dungeon,
status,
}
},
};
- }, [dungeons, setManualState, state]);
+ }, [dungeons, logic, setManualState, state]);
const mapLocation = React.useCallback(loc => {
const remaining = countRemainingLocations(state, loc.checks);
- let status = 'available';
- if (hasClearedLocations(state, loc.checks)) {
- status = 'cleared';
- }
+ const status = aggregateLocationStatus(loc.checks, logic, state);
return {
...loc,
remaining,
}
},
};
- }, [setManualState, state]);
+ }, [logic, setManualState, state]);
const lwDungeons = React.useMemo(() => LW_DUNGEONS.map(mapDungeon), [mapDungeon]);
const lwLocations = React.useMemo(() => LW_LOCATIONS.map(mapLocation), [mapLocation]);