-
Notifications
You must be signed in to change notification settings - Fork 5
/
editor.old.html
21 lines (21 loc) · 2.08 KB
/
editor.old.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<p><input style=width:85vw id=o> <a href=# id=l>go</a> <a href=editor.html>reset</a>
<div style="width:146px;height:calc(99vh - 60px);overflow:auto;float:left;position:relative;border:1px solid"><canvas id=a width=128 height=1024></canvas><v style="border:2px solid red;position:absolute;top:0;left:0"id=p></div>
<div style="width:calc(99vw - 180px);height:calc(99vh - 60px);overflow:auto;float:left;position:relative;border:1px solid"><canvas id=A oncontextmenu=return!1 onmouseup=m=0 onmousedown=m=event.which;D(event)></div>
<script src=r.js></script>
<script>
c=a.getContext`2d`;C=A.getContext`2d`
load_level(o.value=(decodeURI(location.hash)).slice(1));if(!d.w)d={w:+prompt("tile size in px (8/16/32/64/128)", 32),W:+prompt("map width", 100),H:+prompt("map height", 100),T:[]}
A.width=d.W*d.w;A.height=d.w*d.w
p.style.width=d.w-2;p.style.height=d.w-2
c.fillStyle=C.fillStyle="#ddd";for(i=0;i<1e6;i+=d.w)c.fillRect(i,0,1,1e6),C.fillRect(i,0,1,1e6);for(i=0;i<1e6;i+=d.w)c.fillRect(0,i,1e6,1),C.fillRect(0,i,1e6,1)
m=t=x=y=0;a.onclick=e=>{r=a.getBoundingClientRect();x=(~~((e.pageX-r.left)/d.w))*d.w;y=(~~((e.pageY-r.top)/d.w))*d.w;p.style.left=x+"px";p.style.top=y+"px";t=x/d.w+(128/d.w)*(y/d.w)}
D=A.onmousemove=e=>{
R=A.getBoundingClientRect();X=(~~((e.pageX-R.left)/d.w))*d.w;Y=(~~((e.pageY-R.top)/d.w))*d.w;
if(m){C.fillStyle="#fff";C.fillRect(X+1,Y+1,d.w-1,d.w-1);for(i in d.T)d.T[i][0]==X/d.w&&d.T[i][1]==Y/d.w&&delete d.T[i]}
if(m==1){C.drawImage(a,x+1,y+1,d.w-1,d.w-1,X+1,Y+1,d.w-1,d.w-1);E=0;for(i in d.T)d.T[i][0]==X/d.w&&d.T[i][1]==Y/d.w&&(d.T[i][2]=t,E=1);E||d.T.push([X/d.w,Y/d.w,t])}
if(m){o.value=String.fromCodePoint(d.w+32)+String.fromCodePoint(d.w+32)+String.fromCodePoint(d.W+32)+String.fromCodePoint(d.w+32);for(i in d.T)o.value+=String.fromCodePoint(d.T[i][0]+32)+String.fromCodePoint(d.T[i][1]+32)+String.fromCodePoint(d.T[i][2]+32);l.href="#"+encodeURI(o.value)}
}
onload=z=>{for(i in d.T)C.drawImage(a,(d.T[i][2]*d.w)%128+1,~~(d.T[i][2]/(128/d.w))*d.w+1,d.w-1,d.w-1,d.T[i][0]*d.w+1,d.T[i][1]*d.w+1,d.w-1,d.w-1)}
</script>
<script src=s.js></script>
<img src=s.png hidden onload=c.drawImage(this,0,0)>