import {Palette, RawLevel} from "./types"; import _backgrounds from './backgrounds.json' import _palette from './palette.json' import _allLevels from './levels.json' import {getLevelBackground, hashCode} from "./getLevelBackground"; import {createRoot} from 'react-dom/client'; import {useCallback, useEffect, useState} from "react"; import {moveLevel, resizeLevel, setBrick} from "./levels_editor_util"; const backgrounds = _backgrounds as string[]; const palette = _palette as Palette; let allLevels = _allLevels as RawLevel[]; function App() { const [selected, setSelected] = useState('W') const [applying, setApplying] = useState('') const [levels, setLevels] = useState(allLevels) const updateLevel = useCallback((index: number, change: Partial) => { setLevels(list => list.map((l, li) => li === index ? {...l, ...change} : l)) }, []); const deleteLevel = useCallback((li: number) => { if (confirm('Delete level')) { setLevels(allLevels.filter((l, i) => i !== li)) } }, []) useEffect(()=>{ const timoutId= setTimeout(()=>{ return fetch('http://localhost:4400/src/levels.json', { method: 'POST', headers: { 'Content-Type': 'text/plain' }, body: JSON.stringify(levels, null, 2) }); },500) return ()=>clearTimeout(timoutId) },[levels]) return
{ console.log('mouse up') setApplying('') }} >
{ levels.map((level, li) => { const {name, bricks, size, svg, color} = level const brickButtons = [] for (let x = 0; x < size; x++) { for (let y = 0; y < size; y++) { const index = y * size + x brickButtons.push() } } const background = color ? {backgroundImage: 'none', backgroundColor: color} : { backgroundImage: `url("data:image/svg+xml;UTF8,${encodeURIComponent(getLevelBackground(level) as string)}")`, backgroundColor: 'transparent' } return
updateLevel(li, {name: e.target.value})}/>
e.target.value && updateLevel(li, {color: e.target.value})}/> !isNaN(parseFloat(e.target.value)) && updateLevel(li, { color: '', svg: parseFloat(e.target.value) })} />
{brickButtons}
} ) }
{ Object.entries(palette).map(([code, color]) => ) }
; } const root = createRoot(document.getElementById('app') as HTMLDivElement); root.render();