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, 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 not editor.paused then if mbtn(1) then editor.stamp(tx,ty) --mset(tx,ty,editor.brush.tiles[1]) end if mbtn(3) then if editor.selection then editor.selection.x2=tx editor.selection.y2=ty else editor.selection={} editor.selection.x1=tx editor.selection.y1=ty editor.selection.x2=tx editor.selection.y2=ty end else if editor.selection then editor.create_stamp() editor.selection=nil end end if btnp(KEY_RIGHT) then editor.cam.x=editor.cam.x+8 end if btnp(KEY_LEFT) then editor.cam.x=editor.cam.x-8 end if btnp(KEY_UP) then editor.cam.y=editor.cam.y-8 end if btnp(KEY_DOWN) then editor.cam.y=editor.cam.y+8 end if btnp(KEY_F) then editor.floodfill(tx,ty,editor.brush.tiles[1]) end if btnp(KEY_RETURN) then editor.brush.tiles[1]=mget(tx,ty) end if btnp(KEY_ESCAPE) then editor.paused=true editor.show_menu() end if btnp(KEY_TAB) then update=editor.update_tileset end end end, update_tileset=function() cls() sspr(0,0,128,128,0,0) local mx,my=mousex(),mousey() 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 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 }