var step_x=8,step_y=8,size_x=16,size_y=16,set=null,x=0,y=0,set_file="",tile_x=0,tile_y=0,tile_set=null,tile_file=null,rotate=0; var set_cache={}; var mode="normal",lines=true,under_mode=false,last_move="map",purpose=null; var area_start=null,cgroup=null,anim=null,current_id,polygon=[],line_start=null,tilings=0,sprites=0,r_start=null; var texture_cache={}; var mm_afk=false,map_editor=true; //compatibility function register_tile(set,x,y,size_x,size_y,rotation) { var frames=null; if(anim) { frames=parseInt($(".frames").val()); if(!frames) return; } for(var i=0;i300; // tiling=false; // bad performance var def=map_data.tiles[num],cx=x,name="area-"+num,xs=0; if(!texture_cache[name]) { var rectangle = new PIXI.Rectangle(def[1],def[2],def[3],nunv(def[4],def[3])); texture_cache[name]=new PIXI.Texture(C[tilesets[def[0]].file],rectangle); } while(cx<=lx) { var cy=y,ys=0; while(cy<=ly) { if(!tiling) { var entity=new PIXI.Sprite(texture_cache[name]); sprites++; entity.x=cx; entity.y=cy; map.addChild(entity); } ys++; cy+=nunv(def[4],def[3]); } xs++; cx+=def[3]; } if(tiling) { tilings++; var entity=new PIXI.extras.TilingSprite(texture_cache[name],xs*def[3],ys*nunv(def[4],def[3])); sprites++; entity.x=x; entity.y=y; map.addChild(entity); } if(!already) { if(anim) { var interval=parseInt($(".interval").val()),delay=$(".delay").val(),zoffset=parseFloat($(".zoffsetval").val()); if(is_number(delay)) delay=parseInt(delay); if(purpose=="simple") zoffset=-999; if(purpose=="night") map_data.nights.push([num,x,y,lx,ly,interval,delay,zoffset]); else map_data.animations.push([num,x,y,lx,ly,interval,delay,zoffset]); return startstop_animation(); } var c=map_data.placements; if(cgroup) c=map_data.groups[cgroup-1]; if(under_mode) c.unshift([num,x,y,lx,ly]); else c.push([num,x,y,lx,ly]); } } function line_check(visited,type,current) { var first=visited.first,paths=0; visited.first=false; if(type=="x") { map.addChild(draw_line(current[0],current[1],current[0],current[2],2,0xD6627F)); for(var i=0;i<(map_data.x_lines||[]).length;i++) { if(visited.x[i]) continue; var line=map_data.x_lines[i]; if(current[0]==line[0] && (current[1]<=line[1] && line[1]<=current[2] || current[1]<=line[2] && line[2]<=current[2])) { visited.x[i]=true; paths+=1; line_check(visited,"x",line); } } for(var i=0;i<(map_data.y_lines||[]).length;i++) { if(visited.y[i]) continue; var line=map_data.y_lines[i]; if(line[1]<=current[0] && current[0]<=line[2] && current[1]<=line[0] && line[0]<=current[2]) { visited.y[i]=true; paths+=1; line_check(visited,"y",line); } } } if(type=="y") { map.addChild(draw_line(current[1],current[0],current[2],current[0],2,0xD6627F)); for(var i=0;i<(map_data.y_lines||[]).length;i++) { if(visited.y[i]) continue; var line=map_data.y_lines[i]; if(current[0]==line[0] && (current[1]<=line[1] && line[1]<=current[2] || current[1]<=line[2] && line[2]<=current[2])) { visited.y[i]=true; paths+=1; line_check(visited,"y",line); } } for(var i=0;i<(map_data.x_lines||[]).length;i++) { if(visited.x[i]) continue; var line=map_data.x_lines[i]; if(line[1]<=current[0] && current[0]<=line[2] && current[1]<=line[0] && line[0]<=current[2]) { visited.x[i]=true; paths+=1; line_check(visited,"x",line); } } } if(first) { if(paths>1) show_alert(paths+" paths - there is probably a gap!!"); } } function map_click(event) { // if(event.originalEvent) show_alert("yes"); var cx=(event.data.global.x-map.x)/scale,cy=(event.data.global.y-map.y)/scale; circle=new PIXI.Graphics(); circle.beginFill(0x88313D); circle.drawCircle(cx,cy,3); circle.endFill(); //map.addChild(circle); if(mode=="alert") { if(map_data.points) for(var id in map_data.points) { var point=map_data.points[id]; if(point_distance(cx,cy,point[0],point[1])<6) return show_alert("Point: ["+rf(point[0])+","+rf(point[1])+"]"); } if(map_data.rectangles) for(var id in map_data.rectangles) { var point=map_data.rectangles[id]; if(point_distance(cx,cy,point[0],point[1])<8) return show_alert("Rectangle: ["+rf(point[0])+","+rf(point[1])+","+rf(point[2])+","+rf(point[3])+"]
Door: ["+rf(point[0]+(point[2]-point[0])/2)+","+rf(point[3])+","+rf(point[2]-point[0])+","+rf(point[3]-point[1])+"]"); } if(map_data.polygons) for(var z in map_data.polygons||{}) { var found=false,p=null,min_x=map_data.polygons[z][0][0],max_x=map_data.polygons[z][0][0],min_y=map_data.polygons[z][0][1],max_y=map_data.polygons[z][0][1]; for(var i=0;iBoundaries: ["+rf(min_x)+","+rf(min_y)+","+rf(max_x)+","+rf(max_y)+"]"); } } if(mode=="alert" && !c_pressed && !x_pressed && !z_pressed) show_alert("x: "+cx+" y: "+cy); else if(c_pressed) // line deletion or alert { var done=false; for(var i=0;i<(map_data.x_lines||[]).length;i++) { var current=map_data.x_lines[i]; if(abs(cx-current[0])<3 && current[1]<=cy && cy<=current[2]) { done=1; if(mode=="alert") show_alert("x-line x "+current[0]+" | y "+current[1]+" to "+current[2]); else map_data.x_lines.splice(i,1); break; } } if(!done) for(var i=0;i<(map_data.y_lines||[]).length;i++) { var current=map_data.y_lines[i]; if(abs(cy-current[0])<3 && current[1]<=cx && cx<=current[2]) { done=1; if(mode=="alert") show_alert("y-line y "+current[0]+" | x "+current[1]+" to "+current[2]); else map_data.y_lines.splice(i,1); break; } } } else if(b_pressed) // zone deletion { var done=false; for(var z in map_data.points||{}) { var point=map_data.points[z]; if(point_distance(cx,cy,point[0],point[1])<=5) { done=1; delete map_data.points[z]; break; } } if(!done) for(var z in map_data.rectangles||{}) { var point=map_data.rectangles[z]; if(point_distance(cx,cy,point[0],point[1])<=5) { done=1; delete map_data.rectangles[z]; break; } } if(!done) for(var z in map_data.polygons||{}) { for(var i=0;i=0;i--) // descending + break so only the first one is deleted { var tile=map_data.placements[i]; if(is_nun(tile[3])) continue; var def=map_data.tiles[tile[0]]; var w=def[3],h=nunv(def[4],def[3]); if(tile[1]<=cx && tile[2]<=cy && tile[3]+w>=cx && tile[4]+h>=cy) { if(mode=="alert") show_alert("area-tile def: "+JSON.stringify(def)+" tile: "+JSON.stringify(tile)); else to_delete.push(i); break; } } for (var i=to_delete.length-1;i>=0;i--) map_data.placements.splice(to_delete[i],1); } else if(x_pressed) // singular-delete { var to_delete=[]; for(var i=map_data.placements.length-1;i>=0;i--) // descending + break so only the first one is deleted { var tile=map_data.placements[i]; if(!is_nun(tile[3])) continue; var def=map_data.tiles[tile[0]]; var w=def[3],h=nunv(def[4],def[3]); if(tile[1]<=cx && tile[2]<=cy && tile[1]+w>=cx && tile[2]+h>=cy) { if(mode=="alert") show_alert("single-tile def: "+JSON.stringify(def)+" tile: "+JSON.stringify(tile)); else to_delete.push(i); break; } } for (var i=to_delete.length-1;i>=0;i--) map_data.placements.splice(to_delete[i],1); } else if(v_pressed) // entity deletion { var done=false; var to_delete=[]; for(var i=(map_data.lights||[]).length-1;i>=0;i--) { var tile=map_data.lights[i]; var def=map_data.tiles[tile[0]]; var w=def[3],h=nunv(def[4],def[3]); if(tile[1]<=cx && tile[2]<=cy && nunv(tile[3],tile[1])+w>=cx && nunv(tile[4],tile[2])+h>=cy) { to_delete.push(i); done=true; break; } } for (var i=to_delete.length-1;i>=0;i--) map_data.lights.splice(to_delete[i],1); if(!done) { for(var i=(map_data.nights||[]).length-1;i>=0;i--) { var tile=map_data.nights[i]; var def=map_data.tiles[tile[0]]; var w=def[3],h=nunv(def[4],def[3]); if(tile[1]<=cx && tile[2]<=cy && nunv(tile[3],tile[1])+w>=cx && nunv(tile[4],tile[2])+h>=cy) { to_delete.push(i); done=true; break; } } for (var i=to_delete.length-1;i>=0;i--) map_data.nights.splice(to_delete[i],1); } if(!done) { for(var i=(map_data.animations||[]).length-1;i>=0;i--) { var tile=map_data.animations[i]; var def=map_data.tiles[tile[0]]; var w=def[3],h=nunv(def[4],def[3]); if(tile[1]<=cx && tile[2]<=cy && nunv(tile[3],tile[1])+w>=cx && nunv(tile[4],tile[2])+h>=cy) { to_delete.push(i); done=true; break; } } for (var i=to_delete.length-1;i>=0;i--) map_data.animations.splice(to_delete[i],1); } if(!done) { var to_delete=undefined,y_spread=0; for(var p=0;p<(map_data.groups||[]).length;p++) { if(!map_data.groups[p].length) continue; var max_y=-9999999999,min_y=9999999999,max_x=-999999999,min_x=9999999999,rx,line; for(var i=0;imax_x) max_x=tile[1]+w; if(tile[3]max_x) max_x=tile[3]+w; if(tile[2]max_y) max_y=tile[2]+h; if(tile[4]max_y) max_y=tile[4]+h; } else { if(tile[1]max_x) max_x=tile[1]+w; if(tile[2]max_y) max_y=tile[2]+h; } } if(min_y<=cy && cy<=max_y && min_x<=cx && cx<=max_x) { if(to_delete===undefined || max_y-min_y=0;i--) // descending + break so only the first one is deleted { var tile=map_data.placements[i]; var def=map_data.tiles[tile[0]]; var w=def[3],h=nunv(def[4],def[3]); if(tile[1]<=cx && tile[2]<=cy && tile[1]+w>=cx && tile[2]+h>=cy) { map_data['default']=tile[0]; show_alert("Default is Set"); break; } } } else if(mode=="point") { register_point(cx,cy); } else if(mode=="polygon" && !polygon.length) { polygon[0]=[floor(cx/step_x)*step_x,floor(cy/step_y)*step_y]; } else if(mode=="polygon") { var rx=floor(cx/step_x)*step_x,ry=floor(cy/step_y)*step_y,t,rxl=rx,ryl=ry; if(abs(rx-polygon[polygon.length-1][0])=4) register_polygon(); } else if(mode=="rectangle" && !r_start) { r_start=[cx,cy]; } else if(mode=="rectangle") { register_rectangle(cx,cy); } else if(mode=="line" && !line_start) { line_start=[floor(cx/step_x)*step_x,floor(cy/step_y)*step_y]; } else if(mode=="line") { var rx=floor(cx/step_x)*step_x,ry=floor(cy/step_y)*step_y,t,rxl=rx,ryl=ry; if(abs(rx-line_start[0])ry) t=ry,ry=line_start[1],line_start[1]=t; map_data.x_lines.push([line_start[0],line_start[1],ry]); line_start=[line_start[0],ryl]; } else { if(line_start[0]>rx) t=rx,rx=line_start[0],line_start[0]=t; map_data.y_lines.push([line_start[1],line_start[0],rx]); line_start=[rxl,line_start[1]]; } } else { if(!tile_set || x==-1) return; if(mode=="area") { if(area_start) { var lx=area_start[0],ly=area_start[1]; if(cx>=area_start[0]) while(lx+size_x<=cx) lx+=size_x; else {while(lx-size_x>=cx) lx-=size_x; t=lx; lx=area_start[0]; area_start[0]=t;} if(cy>=area_start[1]) while(ly+size_y<=cy) ly+=size_y; else {while(ly-size_y>=cy) ly-=size_y; t=ly; ly=area_start[1]; area_start[1]=t;} place_area(area_num,area_start[0],area_start[1],lx,ly); area_start=null; } else { area_num=register_tile(tile_set,tile_x,tile_y,size_x,size_y); area_start=[floor(cx/step_x)*step_x,floor(cy/step_y)*step_y]; } } else { var num=register_tile(tile_set,tile_x,tile_y,size_x,size_y); place_tile(num,floor(cx/step_x)*step_x,floor(cy/step_y)*step_y); } //console.log("click: "+event.data.global.x+","+event.data.global.y+" map: "+map.x+","+map.y+" entity: "+cx+","+cy); } redraw_map(); } function show_alert(x) { show_modal("
"+x+"
"); } function save(url) { if(!url) url=document.url; $.post(url,{data:JSON.stringify(map_data)}).done(function(data){ show_alert("Done! "+data+" bytes"); }); } function map_mmove(event) { last_move="map"; var cx=(event.data.global.x-map.x)/scale,cy=(event.data.global.y-map.y)/scale; if(window.indicator) try{ indicator.parent.removeChild(indicator),indicator.destroy({children:true}),indicator=null; }catch(e){} if(mode=="alert") indicator=draw_crosshair(cx,cy,3,0xDB2A1B); else if(mode=="point") indicator=draw_circle(cx,cy,2,0xD24499); else if(x_pressed) indicator=draw_xhair(cx,cy,2.5); else if(b_pressed) indicator=draw_xhair(cx,cy,2.5,0xDF4D8E); else if(v_pressed) indicator=draw_xhair(cx,cy,2.5,0x9A7DE6); else if(z_pressed) indicator=draw_xhair(cx,cy,2.5,0x63CE99); else if(c_pressed) indicator=draw_xhair(cx,cy,2.5,0x287CCE); else if(l_pressed) indicator=draw_circle(cx,cy,2,0xD6627F); else if(y_pressed) indicator=draw_circle(cx,cy,2,0x69D44F); else if(mode=="rectangle" && !r_start) { indicator=draw_circle(cx,cy,2,0x3790BA); } else if(mode=="line" && !line_start || mode=="polygon" && !polygon.length) { indicator=draw_circle(floor(cx/step_x)*step_x,floor(cy/step_y)*step_y,2,0x00BB00); } else if(mode=="line") { if(abs(floor(cx/step_x)*step_x-line_start[0])=cx;i-=size_x) xs.push(i); else for(var i=area_start[0]+size_x;i<=cx;i+=size_x) xs.push(i); if(cy=cy;i-=size_y) ys.push(i); else for(var i=area_start[1]+size_y;i<=cy;i+=size_y) ys.push(i); indicator=new PIXI.Container(); xs.forEach(function(tx){ ys.forEach(function(ty){ var name=tile_file+"-"+tile_x+"-"+tile_y+"-"+size_x+"-"+size_y; if(!texture_cache[name]) { var rectangle = new PIXI.Rectangle(tile_x,tile_y,size_x,size_y); texture_cache[name]=new PIXI.Texture(C[tile_file],rectangle); } var cindicator=new PIXI.Sprite(texture_cache[name]); cindicator.x=floor(tx/step_x)*step_x; cindicator.y=floor(ty/step_y)*step_y; indicator.addChild(cindicator); }); }); } else { var name=tile_file+"-"+tile_x+"-"+tile_y+"-"+size_x+"-"+size_y; if(!texture_cache[name]) { var rectangle = new PIXI.Rectangle(tile_x,tile_y,size_x,size_y); texture_cache[name]=new PIXI.Texture(C[tile_file],rectangle); } indicator=new PIXI.Sprite(texture_cache[name]); if(tile_set=="lights") indicator.alpha=0.5; indicator.x=floor(cx/step_x)*step_x; indicator.y=floor(cy/step_y)*step_y; } } else indicator=empty_rect(floor(cx/step_x)*step_x,floor(cy/step_y)*step_y,size_x,size_y,2); map.addChild(indicator); event.stopPropagation(); } function map2_click(event) { x=(event.data.global.x-(window.tileset&&window.tileset.x||0))/tileset_scale; y=(event.data.global.y-(window.tileset&&window.tileset.y||0))/tileset_scale; tile_x=floor(x/step_x)*step_x; tile_y=floor(y/step_y)*step_y; tile_set=set; tile_file=set_file; $('.xbutton').css("display","inline-block"); } function map2_mmove(event) { last_move="map2"; var cx=(event.data.global.x-(window.tileset&&window.tileset.x||0))/tileset_scale,cy=(event.data.global.y-(window.tileset&&window.tileset.y||0))/tileset_scale,size=2; if(tileset_scale>1) size=1; if(window.indicator2) try{ indicator2.parent.removeChild(indicator2),indicator2.destroy(),indicator2=null; }catch(e){} indicator2=empty_rect(floor(cx/step_x)*step_x,floor(cy/step_y)*step_y,size_x,size_y,size); (window.tileset||stage2).addChild(indicator2); event.stopPropagation(); } function cache_set() { set_cache[set]={x:tileset.x,y:tileset.y,scale:tileset_scale,m:$(".tilesetmove.active").length}; } function tileset_zoom(num) { var mid_x=renderer2.width/2.0-tileset.x,mid_y=renderer2.height/2.0-tileset.y; tileset_scale=tileset_scale+num; if(tileset_scale<1) tileset_scale=0.5; else tileset_scale=parseInt(floor(tileset_scale)); // console.log(mid_x+" "+mid_y); tileset.scale=new PIXI.Point(tileset_scale,tileset_scale); //tileset.x=round(x*tileset_scale)-renderer2.width*tileset_scale/2.0; //tileset.y=round(y*tileset_scale)-renderer2.height*tileset_scale/2.0; tileset.x=round(renderer2.width/2.0-mid_x); tileset.y=round(renderer2.height/2.0-mid_y); cache_set(); } function toggle_area_mode() { $(".mbutton").removeClass("active"); if(mode=="area") { mode="normal"; } else { mode="area"; area_start=null; $(".areabutton").addClass("active"); } } function toggle_under_mode() { if(under_mode) { under_mode=false; $(".underbutton").removeClass("active"); } else { under_mode=true; $(".underbutton").addClass("active"); } } function toggle_line_mode() { if(!map_data.x_lines) map_data.x_lines=[]; if(!map_data.y_lines) map_data.y_lines=[]; $(".mbutton").removeClass("active"); if(mode=="line") { mode="normal"; } else { mode="line"; line_start=null; $(".linebutton").addClass("active"); } } function toggle_alert_mode() { $(".mbutton").removeClass("redborder"); if(mode=="alert") mode="normal"; else { mode="alert"; $(".alertbutton").addClass("redborder"); } } function toggle_lines() { if(lines) $('.linesbutton').html("Info: OFF"); else $('.linesbutton').html("Info: ON"); lines=!lines; redraw_map(); } function startstop_group() { if(!map_data.groups) map_data.groups=[]; if(cgroup) { if(!map_data.groups[cgroup-1].length) { map_data.groups.splice(cgroup-1); } else { map_data.groups[cgroup-1][0][5]=parseFloat($('.zoffsetval').val())||0; } cgroup=null; $(".entitybutton").removeClass("active").removeClass("orangeborder").html("Add Entity"); $(".zoffset").hide(); } else { map_data.groups.push([]); cgroup=map_data.groups.length; $(".entitybutton").addClass("active").html("Complete"); $(".zoffset").css("display","inline-block"); } hide_modal(); } function startstop_animation(type) { if(!map_data.animations) map_data.animations=[]; if(!map_data.nights) map_data.nights=[]; if(anim) { anim=false; $(".entitybutton").removeClass("active").removeClass("orangeborder").html("Add Entity"); $(".zoffset").hide(); $(".animinfo").hide(); } else { anim=true; $(".entitybutton").addClass("orangeborder").html("Cancel"); $(".animinfo").css("display","inline-block"); purpose=type; if(type!="simple") $(".zoffset").css("display","inline-block"); } hide_modal(); } function startstop_entity() { if(cgroup) startstop_group(); else if(anim) startstop_animation(); else show_modal($('#entitymodal').html(),{wrap:false}); } function startstop_zone() { if(mode=="polygon" || mode=="point" || mode=="rectangle") { mode="normal"; polygon=[]; $(".zonebutton").removeClass("orangeborder").html("Add Zone"); $('.idbutton').hide(); } else show_modal($('#zonemodal').html(),{wrap:false}); } function startstop_polygon() { if(mode=="polygon") { mode="normal"; polygon=[]; $(".zonebutton").removeClass("orangeborder").html("Add Zone"); $('.idbutton').hide(); } else { mode="polygon"; $('.idbuttonid').val(randomStr(5)); $('.idbutton').css("display","inline-block"); polygon=[]; $(".zonebutton").addClass("orangeborder").html("Cancel"); } hide_modal(); } function startstop_point(p) { purpose=p; if(mode=="point") { mode="normal"; $(".zonebutton").removeClass("orangeborder").html("Add Zone"); $('.idbutton').hide(); } else { mode="point"; $('.idbuttonid').val(randomStr(5)); $('.idbutton').css("display","inline-block"); $(".zonebutton").addClass("orangeborder").html("Cancel"); } hide_modal(); } function startstop_rectangle(p) { purpose=p; if(mode=="rectangle") { mode="normal"; $(".zonebutton").removeClass("orangeborder").html("Add Zone"); $('.idbutton').hide(); } else { mode="rectangle"; $('.idbuttonid').val(randomStr(5)); $('.idbutton').css("display","inline-block"); r_start=null; $(".zonebutton").addClass("orangeborder").html("Cancel"); } hide_modal(); } function register_point(x,y) { if(purpose=="spawn") { for(var i=0;i<(map_data.x_lines||[]).length;i++) { var current=map_data.x_lines[i]; if(abs(x-current[0])<12 && current[1]<=y && y<=current[2]) { return show_alert("Spawn points need to be 12px away from lines!"); } } for(var i=0;i<(map_data.y_lines||[]).length;i++) { var current=map_data.y_lines[i]; if(abs(y-current[0])<12 && current[1]<=x && x<=current[2]) { return show_alert("Spawn points need to be 12px away from lines!"); } } } if(!map_data.points) map_data.points={}; map_data.points[$('.idbuttonid').val()]=[x,y]; startstop_point(); } function register_rectangle(x,y) { if(r_start[0]!=x || r_start[1]!=y) { if(!map_data.rectangles) map_data.rectangles={}; map_data.rectangles[$('.idbuttonid').val()]=[min(x,r_start[0]),min(y,r_start[1]),max(x,r_start[0]),max(y,r_start[1])]; } mode="rectangle"; startstop_rectangle(); } function register_polygon() { if(polygon.length==4) return r_start=polygon[1],register_rectangle(polygon[3][0],polygon[3][1]); if(!map_data.polygons) map_data.polygons={}; polygon.length=polygon.length-1; map_data.polygons[$('.idbuttonid').val()]=polygon; startstop_polygon(); } function destroy_tileset() { set=""; $("#toprightcorner").hide(); $("#toprightcorner").html(""); if(set!="upload") { stage2.destroy(); stage2=null; renderer2.destroy(); indicator2=null; window.tileset=null; } } function load_tileset(name,file) { var new_mode=true; window.tileset_scale=1; window.tileset_move=false; if(set==name) destroy_tileset(); else { if(set) destroy_tileset(); if(location.search.indexOf("old_mode")!=-1) { renderer2 = new PIXI.CanvasRenderer(C[file].width,C[file].height,{antialias: false, transparent: false, resolution:window.devicePixelRatio, autoResize:true}); stage2 = new PIXI.Container(); new_mode=false; } else { renderer2 = new PIXI.CanvasRenderer(min(parseInt($(window).width()/2),max(600,min(C[file].width,width))),min(parseInt($(window).height()-80),max(400,min(C[file].height,height))),{antialias: false, transparent: false, resolution:window.devicePixelRatio, autoResize:true}); stage2 = new PIXI.Container(); stage2.scale=new PIXI.Point(1,1); } set=name; x=-1; y=0; set_file=file; var name="the-"+set_file; if(!texture_cache[name]) { var rectangle = new PIXI.Rectangle(0,0,C[file].width,C[file].height); texture_cache[name]=new PIXI.Texture(C[file],rectangle); } var entity=new PIXI.Sprite(texture_cache[name]); if(new_mode) window.tileset=entity; entity.interactive=true; entity.on('mousedown',map2_click); entity.on('mousemove',map2_mmove); entity.hitArea = new PIXI.Rectangle(-40000, -40000, 80000, 80000); if(set_cache[set]) tileset_scale=set_cache[set].scale,entity.scale=new PIXI.Point(tileset_scale,tileset_scale),entity.x=set_cache[set].x,entity.y=set_cache[set].y; stage2.addChild(entity); document.getElementById("toprightcorner").appendChild(renderer2.view); $('#toprightcorner').show(); //
M
if(new_mode) $("#toprightcorner").append("
M
-
+
"); if(set_cache[set] && set_cache[set].m) $(".tilesetmove").addClass('active'); } } function show_upload_modal() { var html="
"; html+="
Make sure you save your map before uploading a tileset
"; html+='
"this_map":
'; html+='
"this_map_a":
'; html+="
"; if(set) destroy_tileset(); set="upload"; $("#toprightcorner").html(html); $('#toprightcorner').show(); } function rescale_map(nscale) { var ox=(map.x-round(width/2))/scale,oy=(map.y-round(height/2))/scale; if(in_arr(nscale,[0.25,0.5,1,2,3,4,5,6])) { scale=nscale; redraw_map(); map.x=round(width/2)+round(ox*scale); map.y=round(height/2)+round(oy*scale); } } function map_zoom(num) { if(num>0 && scale==6) return; if(num<0 && scale==0.25) return; var index=1; if(scale==0.25) index=0; if(scale==0.5) index=1; if(scale==1) index=2; if(scale==2) index=3; if(scale==3) index=4; if(scale==4) index=5; if(scale==5) index=6; if(scale==6) index=7; if(num>0) index++; else index--; rescale_map([0.25,0.5,1,2,3,4,5,6][index]); } function redraw_map() { tilings=0; sprites=0; var x=round(width/2),y=round(height/2); if(map) x=map.x,y=map.y,stage.removeChild(map),map.destroy({children:false}); // #GTODO: Consider manually destroying Sprite's at one point [06/10/16] map=new PIXI.Container(); indicator=null; map.x=x; map.y=y; if(scale) map.scale=new PIXI.Point(scale,scale); map.interactive=true; map.on('mousedown',map_click); map.on('mousemove',map_mmove) map.hitArea = new PIXI.Rectangle(-40000, -40000, 80000, 80000); circle=new PIXI.Graphics(); circle.beginFill(0x88313D); circle.drawCircle(0,0,3); circle.endFill(); map.addChild(circle); to_delete=[]; deleted=false; for(var i=0;i-900) continue; try{ if(!is_nun(tile[3])) place_area(tile[0],tile[1],tile[2],tile[3],tile[4],"yes"); else place_tile(tile[0],tile[1],tile[2],"yes"); }catch(e) { console.log("Faulty tile detected + deleted"); deleted=true; to_delete.push(i); } } delete_indices(map_data.animations,to_delete); if(deleted) show_alert("Deleted some faulty tiles, this might have happened if you shrinked your own tileset, or if you increased your tile area after selecting a tile etc."); to_delete=[]; deleted=false; if(map_data.groups) { for(var p=0;pmax_x) max_x=tile[1]+w; if(tile[3]max_x) max_x=tile[3]+w; if(tile[2]+h>max_y) max_y=tile[2]+h; if(tile[4]+h>max_y) max_y=tile[4]+h; } else { if(tile[1]max_x) max_x=tile[1]+w; if(tile[2]+h>max_y) max_y=tile[2]+h; } } rx=round(max_x/2.0+min_x/2.0); line=draw_line(rx-4,max_y+offset,rx+4,max_y+offset,2,0xEEEB18); line.alpha=0.9; map.addChild(line); } to_delete=[]; deleted=false; if(lines && map_data.nights) for(var i=0;i