Changes
This commit is contained in:
+21
-6
@@ -5,6 +5,7 @@ import { useAchievements } from '@/contexts/AchievementsContext';
|
|||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import GlitchCrash from '@/components/GlitchCrash';
|
import GlitchCrash from '@/components/GlitchCrash';
|
||||||
import { Maximize2, Minimize2, Users, User } from 'lucide-react';
|
import { Maximize2, Minimize2, Users, User } from 'lucide-react';
|
||||||
|
import { useBrowserFullscreen } from '@/hooks/useGameDimensions';
|
||||||
import GameTouchButton from '@/components/GameTouchButton';
|
import GameTouchButton from '@/components/GameTouchButton';
|
||||||
import { MobileControlsDock, MobileControlsSpacer } from '@/components/MobileControlsDock';
|
import { MobileControlsDock, MobileControlsSpacer } from '@/components/MobileControlsDock';
|
||||||
|
|
||||||
@@ -118,6 +119,8 @@ const Tetris = () => {
|
|||||||
const [isFullscreen, setIsFullscreen] = useState(false);
|
const [isFullscreen, setIsFullscreen] = useState(false);
|
||||||
const gameRef = useRef<HTMLDivElement>(null);
|
const gameRef = useRef<HTMLDivElement>(null);
|
||||||
|
|
||||||
|
const { enterFullscreen, exitFullscreen } = useBrowserFullscreen();
|
||||||
|
|
||||||
const getCellSize = useCallback(() => {
|
const getCellSize = useCallback(() => {
|
||||||
if (typeof window === 'undefined') return 28;
|
if (typeof window === 'undefined') return 28;
|
||||||
const isMobile = window.innerWidth < 768;
|
const isMobile = window.innerWidth < 768;
|
||||||
@@ -142,21 +145,33 @@ const Tetris = () => {
|
|||||||
useEffect(() => { setCellSize(getCellSize()); }, [isFullscreen, getCellSize, gameMode]);
|
useEffect(() => { setCellSize(getCellSize()); }, [isFullscreen, getCellSize, gameMode]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (gameStarted && isMobile && !isFullscreen) setIsFullscreen(true);
|
if (gameStarted && isMobile && !isFullscreen) {
|
||||||
}, [gameStarted, isMobile, isFullscreen]);
|
setIsFullscreen(true);
|
||||||
|
enterFullscreen();
|
||||||
|
}
|
||||||
|
}, [gameStarted, isMobile, isFullscreen, enterFullscreen]);
|
||||||
|
|
||||||
const toggleFullscreen = () => {
|
const toggleFullscreen = async () => {
|
||||||
setIsFullscreen(prev => !prev);
|
if (!isFullscreen) {
|
||||||
|
setIsFullscreen(true);
|
||||||
|
await enterFullscreen();
|
||||||
|
} else {
|
||||||
|
setIsFullscreen(false);
|
||||||
|
await exitFullscreen();
|
||||||
|
}
|
||||||
playSound('click');
|
playSound('click');
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const handleEscape = (e: KeyboardEvent) => {
|
const handleEscape = (e: KeyboardEvent) => {
|
||||||
if (e.key === 'Escape' && isFullscreen) setIsFullscreen(false);
|
if (e.key === 'Escape' && isFullscreen) {
|
||||||
|
setIsFullscreen(false);
|
||||||
|
exitFullscreen();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
window.addEventListener('keydown', handleEscape);
|
window.addEventListener('keydown', handleEscape);
|
||||||
return () => window.removeEventListener('keydown', handleEscape);
|
return () => window.removeEventListener('keydown', handleEscape);
|
||||||
}, [isFullscreen]);
|
}, [isFullscreen, exitFullscreen]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const saved = localStorage.getItem(HIGHSCORE_KEY);
|
const saved = localStorage.getItem(HIGHSCORE_KEY);
|
||||||
|
|||||||
Reference in New Issue
Block a user