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