diff --git a/components/StreetView/StreetView.tsx b/components/StreetView/StreetView.tsx index 0497f4b5..4db65d0e 100644 --- a/components/StreetView/StreetView.tsx +++ b/components/StreetView/StreetView.tsx @@ -1,4 +1,4 @@ -import React, { FC, useEffect, useRef, useState } from 'react' +import React, { ButtonHTMLAttributes, FC, useEffect, useRef, useState } from 'react' import { Game } from '@backend/models' import { GameStatus } from '@components/GameStatus' import { GuessMap } from '@components/GuessMap' @@ -84,6 +84,7 @@ const Streetview: FC = ({ gameData, setGameData, view, setView }) => { }) setLoading(false) + console.log('Pano loaded') } const handleSubmitGuess = async (timedOut?: boolean) => { @@ -162,6 +163,61 @@ const Streetview: FC = ({ gameData, setGameData, view, setView }) => { } }, [view]) + const handleMouseDown = (e: MouseEvent) => { + if (!gameData.gameSettings.canPan) { + e.stopPropagation(); + } + }; + + const handleTouchStart = (e: TouchEvent) => { + if (!gameData.gameSettings.canPan) { + e.stopPropagation(); + } + }; + + useEffect(() => { + if (view !== 'Game') return + + const div = document.getElementById('streetview'); + if (!div) return; + + div.addEventListener('mousedown', handleMouseDown, { capture: true }); + div.addEventListener('touchstart', handleTouchStart, { capture: true }); + + // Only add event listeners if `canPan` is false + console.log(div.getElementsByClassName('gm-control-active').length); + + // Cleanup event listeners on unmount or dependency change + return () => { + div.removeEventListener('mousedown', handleMouseDown, { capture: true }); + div.removeEventListener('touchstart', handleTouchStart, { capture: true }); + }; + }, [view, gameData.gameSettings.canPan]); + + + function disableCompassControls() { + var compassControls = document.getElementsByClassName('gm-control-active'); + console.log(compassControls); + for (var i = 0; i < compassControls.length; i++) { + let compassControl = compassControls[i] as HTMLElement; + compassControl.addEventListener('click', (e) => { + e.stopPropagation(); + }); + } + } + + useEffect(() => { + if (loading) return; + + const div = document.getElementById('streetview'); + if (!div) return; + + if (!gameData.gameSettings.canPan) { + disableCompassControls(); + } + + } , [loading, gameData.gameSettings.canPan]); + return ( {loading && } diff --git a/components/modals/GameSettingsModal/GameSettingsModal.tsx b/components/modals/GameSettingsModal/GameSettingsModal.tsx index ed14cc60..0e3fa844 100644 --- a/components/modals/GameSettingsModal/GameSettingsModal.tsx +++ b/components/modals/GameSettingsModal/GameSettingsModal.tsx @@ -232,6 +232,11 @@ const GameSettingsModal: FC = ({ isOpen, closeModal, mapDetails, gameMode
Zoom
+ +
+ +
Pan
+
diff --git a/utils/constants/random.tsx b/utils/constants/random.tsx index fed7e978..09d3d483 100644 --- a/utils/constants/random.tsx +++ b/utils/constants/random.tsx @@ -1,4 +1,4 @@ -export const OFFICIAL_WORLD_ID = '6533cef7dda2d10f45e377bd' +export const OFFICIAL_WORLD_ID = '66a230bde441aba03e06f5e2' export const COUNTRY_STREAKS_ID = 'streaks' export const GUEST_ACCOUNT_ID = '636ed6784ec6f85e6f18591e'