import { useEffect, useRef } from "react" import { Hammer } from "./classes/Hammer"; import pako from "pako"; function App() { // ? elements // * Canvas const canvas = useRef(null); // * Buttons const button_set_tilesheet = useRef(null); const button_import_map = useRef(null); // * Divs const div_progress_bar = useRef(null); const div_progress = useRef(null); const div_view_tiles = useRef(null); // * Input (a part) const inputFileTilesheet = useRef(null); const inputFileMap = useRef(null); // ? hammer const hammerRef = useRef(null); useEffect(() => { hammerRef.current = new Hammer(); hammerRef.current.helements.setElement("canvas", canvas.current); hammerRef.current.helements.setElement("button_set_tilesheet", button_set_tilesheet.current); hammerRef.current.helements.setElement("button_import_map", button_import_map.current); hammerRef.current.helements.setElement("div_progress_bar", div_progress_bar.current); hammerRef.current.helements.setElement("div_progress", div_progress.current); hammerRef.current.helements.setElement("div_view_tiles", div_view_tiles.current); return () => { hammerRef.current?.hevent.destroy(); } }, []); // ? functions const handleLoadTilesheet = () => { if (hammerRef.current != null) { const files = inputFileTilesheet.current?.files; if (files && files?.length > 0) { hammerRef.current.loadTileSheet(files[0]); } } } const handleLoadMap = async () => { if (hammerRef.current != null) { const files = inputFileMap.current?.files; if (files && files.length > 0) { hammerRef.current.hconsole.push("Importing the current map..."); // ? Verif du format let filenameSplit = files[0].name.split("."); if (!["tmpx"].includes(filenameSplit[filenameSplit.length - 1])) { return hammerRef.current.hconsole.push("File format invalid !", "ERROR") }; try { let reader = new FileReader(); reader.readAsArrayBuffer(files[0]); reader.onload = (evt) => { if (evt.target) { // @ts-expect-error const uncompressed_data = pako.inflate(evt.target.result, {to: "string"}); console.log(uncompressed_data) const data = JSON.parse(uncompressed_data as string); if (hammerRef.current) { const tl = new Image(); tl.src = data.tilesheet; tl.onload = () => { if (hammerRef.current) { hammerRef.current.setTileSheet(tl); hammerRef.current.heditor.tileMap = data.map; } }; } } } } catch (error) { hammerRef.current.hconsole.push("Error importing map.", "ERROR"); } } } } return ( <>


) } export default App