// Vector tile art. Symbols are 32x32 and pull colors from the floor theme's CSS variables. // Loaded after data.js; the engine calls gfxCell() per grid cell when graphics are on. const GFX_DEFS=` ` const SHADOW=`` const FLAME=(x,y,s)=>`` const STONES=(rs)=>rs.map(([x,y,w,h])=>``).join("") const FLOOR_BASE=`` const BRICKS=(y0,rows,grad)=>{let s="";for(let r=0;r`}return s} const SPRITES={ f0:FLOOR_BASE+STONES([[1,1,14,9],[17,1,14,9],[1,12,9,8],[12,12,19,8],[1,22,18,9],[21,22,10,9]]), f1:FLOOR_BASE+STONES([[1,1,10,12],[13,1,18,6],[13,9,9,11],[24,9,7,11],[1,15,10,16],[13,22,18,9]]), f2:FLOOR_BASE+STONES([[1,1,19,8],[22,1,9,14],[1,11,9,9],[12,11,8,9],[22,17,9,14],[1,22,19,9]])+``, w:``+BRICKS(0,4,"gW"), wf:``+BRICKS(0,1,"gW")+BRICKS(8,3,"gWF")+``, o:``, i:``, p:SHADOW+``+FLAME(26.8,11,.75)+``, B:SHADOW+``, S:``, r:``, x:``, z:``, n:``, q:``, l:``, g:``+[20,17,14,11].map(y=>``).join("")+``, I:``, M:SHADOW+``, T:``+FLAME(20.5,8,1), F:``+FLAME(12.5,11,.9)+FLAME(19.5,11.5,.85)+FLAME(16,9,1.25), C:`${SHADOW}`, D:``, Dd:``, K:`` } // Grid-cell kinds from cls() that sit on top of a floor tile. const GFX_ON_FLOOR="pBiSrxznqlgIMTFCK" let GFX=1 try{GFX=localStorage.getItem("mrl_gfx")!=="0"}catch(e){} document.getElementById("s").insertAdjacentHTML("afterbegin",``) function gfxToggle(){GFX=!GFX;try{localStorage.setItem("mrl_gfx",GFX?"1":"0")}catch(e){}} function gfxIcon(k){return k=="dark"?"":``} function gfxCell(c,x,y,glyph){ const k=c.split(" ")[1] if(!k||k=="u")return "" const use=id=>`` if(k=="w")return use(y==H-1||tile(x,y+1)=="#"?"w":"wf") if(k=="o")return use("o") const fl=use("f"+((x*7+y*13)%3)) if(k=="f")return fl if(k!="i"&&R[S.r]&&k in R[S.r].ex)return fl+use(R[S.r].ex[k].replace("!","")[0]=="d"?"Dd":"D")+`${glyph}` return fl+(GFX_ON_FLOOR.includes(k)?use(k):`${glyph}`) }