UNPKG

slanted-gamedev-toolz

Version:

A slanted mix of tools for your brilliant ideas in game design.

75 lines (74 loc) 2.71 kB
import { useCallback, useEffect, useState } from "react"; import { isDevMode, localSaveFightId } from "../../constants/HBC_CONSTANTS"; import { useGlobalContext } from "../../contexts/globalContext/GlobalContext"; import { compressObjectWithPako, decompressStringWithPako, } from "../../ui/components/smartComponents/ImportExportLocalStorage/saveStringUtil"; export const getFightFromLocalStorage = () => { const savedFightString = localStorage.getItem(localSaveFightId); const savedFight = savedFightString ? decompressStringWithPako(savedFightString) : null; return savedFight; }; export const saveFightToLocalStorage = (savedFight) => { localStorage.setItem(localSaveFightId, compressObjectWithPako(savedFight)); }; export const deleteFightFromLocalStorage = () => { localStorage.removeItem(localSaveFightId); }; export const useLocalSaveFight = () => { const { isLoadingGameRef } = useGlobalContext(); const saveLocalStorageFight = useCallback(async (savedFight, note) => { if (isLoadingGameRef.current) return; if (!localSaveFightId) { console.error("!localSaveFightId"); return; } if (isDevMode) { console.log(`saveLocalStorageFight / ${note}:`, savedFight); } saveFightToLocalStorage(savedFight); _setFightSaveGameData(savedFight); }, [isLoadingGameRef]); const clearLocalStorageFight = useCallback(() => { if (!localSaveFightId) { console.error("!localSaveFightId"); return; } deleteFightFromLocalStorage(); _setFightSaveGameData(null); }, []); let loadedSaveData = getFightFromLocalStorage(); const isSaveOk = checkSaveIsValid(loadedSaveData); if (!isSaveOk) { loadedSaveData = null; } const [fightSaveGameData, _setFightSaveGameData] = useState(loadedSaveData); useEffect(() => { if (!localSaveFightId) { console.error("!localSaveFightId"); return; } const save = getFightFromLocalStorage(); const isSaveValid = checkSaveIsValid(save); if (save && isSaveValid) { _setFightSaveGameData(save); } return function cleanup() { const save = getFightFromLocalStorage(); if (!save) { _setFightSaveGameData(null); } }; }, []); return { saveLocalStorageFight, clearLocalStorageFight, fightSaveGameData }; }; const checkSaveIsValid = (save) => { if (!save) return false; if (!save?.challengee) return false; if (!save?.challenger) return false; return true; };