Refactor claim distance and update cache claiming logic in GlobalMapScreen and usePlayerGame

This commit is contained in:
bobbert committed 2026-04-09 22:57:24 +01:00
1 parent 1948fb4d90
commit dc18186265
2 files changed
+7 -5

No files matched your search

@@ -78,6 +78,7 @@ const GlobalMapScreen = ({ navigation, route }) => {
claimableCaches,
GLOBAL_CLAIM_DISTANCE_METERS,
selectedCacheId,
false,
);
// Handlers ----------------------------
@@ -132,12 +133,11 @@ const GlobalMapScreen = ({ navigation, route }) => {
setIsClaiming(false);
if (result) {
const points = Number(claimedCache?.CachePoints ?? 10);
const cacheName = claimedCache?.CacheName || "Cache";
setFoundCacheIds((prev) =>
prev.includes(cacheId) ? prev : [...prev, cacheId],
);
setClaimedPopupMessage(`${cacheName} claimed! You gained +${points} points.`);
setClaimedPopupMessage(`${cacheName} claimed! You gained +10 points.`);
setClaimedPopupVisible(true);
setTimeout(() => setClaimedPopupVisible(false), 3000);
}
+5 -3
View File
@@ -1,7 +1,7 @@
import {useEffect, useRef, useState} from 'react';
import {isInClaimCone} from '../utils/geoMath';
const usePlayerGame = (playerLocation, playerHeading, activeCaches, claimDistance, selectedCacheId) => {
const usePlayerGame = (playerLocation, playerHeading, activeCaches, claimDistance, selectedCacheId, preferSelectedCache = true) => {
const [visibleCaches, setVisibleCaches] = useState([]);
const [isClaiming, setIsClaiming] = useState(false);
const prevIdRef = useRef('');
@@ -17,7 +17,9 @@ const usePlayerGame = (playerLocation, playerHeading, activeCaches, claimDistanc
}
const caches = activeCaches || [];
let selected = selectedCacheId ? caches.find((c) => c.id === selectedCacheId) : null;
let selected = (preferSelectedCache && selectedCacheId)
? caches.find((c) => c.id === selectedCacheId)
: null;
let visible = selected && isInClaimCone(playerHeading, playerLocation, selected.coordinates, claimDistance);
if (!visible) {
@@ -36,7 +38,7 @@ const usePlayerGame = (playerLocation, playerHeading, activeCaches, claimDistanc
setVisibleCaches([]);
setIsClaiming(false);
}
}, [playerLocation, playerHeading, activeCaches, claimDistance, selectedCacheId]);
}, [playerLocation, playerHeading, activeCaches, claimDistance, selectedCacheId, preferSelectedCache]);
return {visibleCaches, isClaiming, setIsClaiming};
};