UNPKG

slanted-gamedev-toolz

Version:

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

80 lines (79 loc) 3.07 kB
import { useCallback, useState } from "react"; import { deadBoxerCount, isDevMode, localSaveRosterId, } from "../../constants/HBC_CONSTANTS"; import { Boxer } from "../../constants/VANILLA_FIGHTERS"; import { rollDeadRedBoxer } from "../../constants/VANILLA_FIGHTERS_GEN"; import { boxerBackgroundTypes, boxerCreatorBackgrounds, } from "../../constants/boxerBackgrounds"; import { legendaryFighters } from "../../constants/legendaryyBoxers/LEGENDARY_BOXERS"; import { useGlobalContext } from "../../contexts/globalContext/GlobalContext"; import { compressObjectWithPako, decompressStringWithPako, } from "../../ui/components/smartComponents/ImportExportLocalStorage/saveStringUtil"; export const getRosterFromLocalStorage = () => { const savedRosterString = localStorage.getItem(localSaveRosterId); const savedRoster = savedRosterString ? decompressStringWithPako(savedRosterString) : { roster: [] }; return savedRoster; }; export const saveRosterToLocalStorage = (newRoster) => { localStorage.setItem(localSaveRosterId, compressObjectWithPako({ roster: newRoster })); }; export const deleteRosterFromLocalStorage = () => { localStorage.removeItem(localSaveRosterId); }; export const useLocalSaveRoster = () => { const loadedRosterSaveData = getRosterFromLocalStorage(); const { isLoadingGameRef } = useGlobalContext(); const [localStorageRoster, _setRosterSaveGameData] = useState(loadedRosterSaveData?.roster); const saveLocalStorageRoster = useCallback((newRoster) => { if (isLoadingGameRef.current) return; saveRosterToLocalStorage(newRoster); _setRosterSaveGameData([...newRoster]); }, [isLoadingGameRef]); if (!loadedRosterSaveData || loadedRosterSaveData.roster.length <= 1) { if (isDevMode) { console.log("created new roster save file"); } saveLocalStorageRoster(generateRosterData()); } const clearLocalStorageRoster = useCallback(() => { if (!localSaveRosterId) { console.error("!localSaveRosterId"); return; } deleteRosterFromLocalStorage(); _setRosterSaveGameData([]); }, []); return { saveLocalStorageRoster, clearLocalStorageRoster, localStorageRoster, }; }; export function generateRosterData() { const roster = []; boxerBackgroundTypes.forEach((bg) => { const b = new Boxer({ isCleanRecord: false, ...boxerCreatorBackgrounds[bg], isNoEquipment: true, isDead: false, code: "rb", }); const b2 = new Boxer({ isCleanRecord: false, ...boxerCreatorBackgrounds[bg], isNoEquipment: true, isDead: false, code: "rb", }); roster.push(b); roster.push(b2); }); for (let i = 0; i < deadBoxerCount; i++) { roster.push(rollDeadRedBoxer()); } for (const leg of legendaryFighters) { roster.push(leg); } return roster; }