X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;ds=sidebyside;f=resources%2Fjs%2Fcomponents%2Ftracker%2FMap.js;fp=resources%2Fjs%2Fcomponents%2Ftracker%2FMap.js;h=3ee4b2f81458ab4eeb6190273623467406788bc1;hb=d2e89b06bd80faa5085c454709c7e48c829cc6f2;hp=b77612ef65bd02ae9eb481df3c8e90b28daf4bb1;hpb=249e06be11d0f7778d99956c87d4f0a8ac7e69f7;p=alttp.git diff --git a/resources/js/components/tracker/Map.js b/resources/js/components/tracker/Map.js index b77612e..3ee4b2f 100644 --- a/resources/js/components/tracker/Map.js +++ b/resources/js/components/tracker/Map.js @@ -4,12 +4,13 @@ import { useTranslation } from 'react-i18next'; import { addDungeonCheck, + aggregateDungeonStatus, + aggregateLocationStatus, clearAll, completeDungeonChecks, countRemainingLocations, getDungeonClearedItems, getDungeonRemainingItems, - hasClearedLocations, hasDungeonBoss, hasDungeonPrize, isDungeonCleared, @@ -686,15 +687,12 @@ const makeBackground = (src, level) => { }; 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, @@ -745,14 +743,11 @@ const Map = () => { } }, }; - }, [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, @@ -772,7 +767,7 @@ const Map = () => { } }, }; - }, [setManualState, state]); + }, [logic, setManualState, state]); const lwDungeons = React.useMemo(() => LW_DUNGEONS.map(mapDungeon), [mapDungeon]); const lwLocations = React.useMemo(() => LW_LOCATIONS.map(mapLocation), [mapLocation]);