editor={ paused=true, cam={x=0,y=0}, --selected_tile=3, brush={w=1,h=1,tiles={3}}, selection=nil, init=function() set_update(editor.update) editor.show_menu() end, show_menu=function() menu.show({ {"NEW MAP", editor.new}, {"LOAD MAP", function() textbox.show("FILENAME TO LOAD:",editor.load, mapa.name) end}, {"SAVE MAP", function() if mapa.name~=nil then editor.save(mapa.name) else textbox.show("FILENAME TO SAVE:",editor.save, mapa.name) end end}, -- {"BACK TO EDITOR", function() editor.paused=false end}, {"EXIT", main_init}, -- {"ENNER LLOR NEIM", function() textbox.show("PELANDRUSC!") end} }, function()editor.paused=false end) end, floodfill=function(x,y,tile) local t=mget(x,y) mset(x,y,tile) if x0 and mget(x-1,y)==t then editor.floodfill(x-1,y,tile) end if y0 and mget(x,y-1)==t then editor.floodfill(x,y-1,tile) end end, create_stamp=function() local tx1,ty1,tx2,ty2=editor.selection.x1,editor.selection.y1,editor.selection.x2,editor.selection.y2 if tx1>tx2 then tx1,tx2=tx2,tx1 end if ty1>ty2 then ty1,ty2=ty2,ty1 end editor.brush.w=tx2-tx1+1 editor.brush.h=ty2-ty1+1 local w,h=editor.brush.w,editor.brush.h local p=1 for y=1,h do for x=1,w do editor.brush.tiles[p]=mget(tx1+x-1,ty1+y-1) --mset(tx+x-1,ty+y-1,editor.brush.tiles[p]) p=p+1 end end end, stamp=function(tx,ty) local w,h=editor.brush.w,editor.brush.h local p=1 for y=1,h do for x=1,w do mset(tx+x-1,ty+y-1,editor.brush.tiles[p]) p=p+1 end end end, displace=function(dx,dy) local w,h=mapa.w,mapa.h if dx>0 then for y=0,h-1 do for x=w-1,1,-1 do mset(x,y,mget(x-1,y)) end end elseif dx<0 then for y=0,h-1 do for x=0,w-2 do mset(x,y,mget(x+1,y)) end end elseif dy>0 then for y=h-1,1,-1 do for x=0,w-1 do mset(x,y,mget(x,y-1)) end end elseif dy<0 then for y=0,h-2 do for x=0,w-1 do mset(x,y,mget(x,y+1)) end end end end, update=function() cls() camera(editor.cam.x, editor.cam.y) map(0,0,0,0,mapa.w, mapa.h) local mx,my=mousex()+editor.cam.x,mousey()+editor.cam.y local tx,ty=mx>>3,my>>3 local rx,ry=tx<<3,ty<<3 rect(rx-1, ry-1, rx+8, ry+8, 10) if editor.selection then local rx1,ry1,rx2,ry2=editor.selection.x1<<3,editor.selection.y1<<3,editor.selection.x2<<3,editor.selection.y2<<3 if rx1>rx2 then rx1,rx2=rx2,rx1 end if ry1>ry2 then ry1,ry2=ry2,ry1 end rect(rx1-1, ry1-1, rx2+8, ry2+8, 8) end camera(0,0) if tx>=0 and ty>=0 and tx>3,my>>3 local rx,ry=tx<<3,ty<<3 rect(rx-1, ry-1, rx+8, ry+8, 10) if btnp(KEY_TAB) or btnp(KEY_ESCAPE) then update=editor.update end if mbtnp(1) then if tx<16 and ty<16 then editor.brush.w=1 editor.brush.h=1 editor.brush.tiles={} editor.brush.tiles[1]=ty*16+tx end update=editor.update end end, new=function() mapa.new(128,128) editor.paused=false end, save=function(filename) mapa.save(filename) editor.paused=false end, load=function(filename) mapa.load(filename) editor.paused=false end }