Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 2x 3x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x | import { generateShuffledTiles } from '@/shared/utils/generateTiles';
import { preloadImagesWithAwait } from '@/shared/utils/imageCache';
import { isDifficultyType } from '@/shared/utils/isDifficultyType';
import { ref } from 'vue';
export function useGameStart() {
const isLoading = ref(false);
const seed = ref('');
const difficulty = ref<number>(1);
async function startGame(payload: { seed: string; difficulty: number }) {
localStorage.removeItem('memory-game-state');
seed.value = payload.seed || Date.now().toString();
if (isDifficultyType(payload.difficulty)) {
difficulty.value = payload.difficulty;
} else {
console.error('Invalid difficulty type:', payload.difficulty);
}
const tiles = generateShuffledTiles(seed.value, difficulty.value);
const imagesToPreload = tiles.map((t) => t.imagePath!).filter(Boolean);
isLoading.value = true;
await preloadImagesWithAwait(imagesToPreload);
isLoading.value = false;
return {
seed: seed.value,
difficulty: difficulty.value,
};
}
return {
isLoading,
startGame,
};
}
|