editor_unsorted_2_wrapper=function(editor_mode){ editor_mode.constructor.prototype.listen=function (callback) { // 这里的函数还没有写jsdoc editor.uifunctions.newIdIdnum_func() editor.uifunctions.changeId_func() editor.uifunctions.selectFloor_func() editor.uifunctions.saveFloor_func() editor.uifunctions.newMap_func() editor.uifunctions.createNewMaps_func() editor.uifunctions.changeFloorId_func() editor.uifunctions.fixCtx_func() editor.uifunctions.selectAppend_func() var autoAdjust = function (image, callback) { var changed = false; // Step 1: 检测白底 var tempCanvas = document.createElement('canvas').getContext('2d'); tempCanvas.canvas.width = image.width; tempCanvas.canvas.height = image.height; tempCanvas.mozImageSmoothingEnabled = false; tempCanvas.webkitImageSmoothingEnabled = false; tempCanvas.msImageSmoothingEnabled = false; tempCanvas.imageSmoothingEnabled = false; tempCanvas.drawImage(image, 0, 0); var imgData = tempCanvas.getImageData(0, 0, image.width, image.height); var trans = 0, white = 0, black=0; for (var i=0;iblack && white>trans*10 && confirm("看起来这张图片是以纯白为底色,是否自动调整为透明底色?")) { for (var i=0;iwhite && black>trans*10 && confirm("看起来这张图片是以纯黑为底色,是否自动调整为透明底色?")) { for (var i=0;i= num) editor_mode.appendPic.index = ii + 1 - num; else editor_mode.appendPic.index++; editor_mode.appendPic.selectPos[ii] = pos; editor.dom.appendPicSelection.children[ii].style = [ 'left:', pos.x * 32, 'px;', 'top:', pos.y * pos.ysize, 'px;', 'height:', pos.ysize - 6, 'px;' ].join(''); } var appendConfirm = document.getElementById('appendConfirm'); appendConfirm.onclick = function () { var confirmAutotile = function () { var image = editor_mode.appendPic.img; if (image.width % 96 !=0 || image.height != 128) { printe("不合法的Autotile图片!"); return; } var imgData = editor.dom.sourceCtx.getImageData(0,0,image.width,image.height); editor.dom.spriteCtx.putImageData(imgData, 0, 0); var imgbase64 = editor.dom.sprite.toDataURL().split(',')[1]; // Step 1: List文件名 fs.readdir('./project/images', function (err, data) { if (err) { printe(err); throw(err); } // Step 2: 选择Autotile文件名 var filename; for (var i=1;;++i) { filename = 'autotile'+i; if (data.indexOf(filename+".png")==-1) break; } // Step 3: 写入文件 fs.writeFile('./project/images/'+filename+".png", imgbase64, 'base64', function (err, data) { if (err) { printe(err); throw(err); } // Step 4: 自动注册 editor.file.registerAutotile(filename, function (err) { if (err) { printe(err); throw(err); } printe('自动元件'+filename+'注册成功,请F5刷新编辑器'); }) }) }) } if (editor.dom.selectAppend.value == 'autotile') { confirmAutotile(); return; } var ysize = editor.dom.selectAppend.value.endsWith('48') ? 48 : 32; for (var ii = 0, v; v = editor_mode.appendPic.selectPos[ii]; ii++) { // var imgData = editor.dom.sourceCtx.getImageData(v.x * 32, v.y * ysize, 32, ysize); // editor.dom.spriteCtx.putImageData(imgData, ii * 32, editor.dom.sprite.height - ysize); // editor.dom.spriteCtx.drawImage(editor_mode.appendPic.img, v.x * 32, v.y * ysize, 32, ysize, ii * 32, height, 32, ysize) editor.dom.spriteCtx.drawImage(editor.dom.sourceCtx.canvas, v.x*32, v.y*ysize, 32, ysize, 32*ii, editor.dom.sprite.height - ysize, 32, ysize); } var dt = editor.dom.spriteCtx.getImageData(0, 0, editor.dom.sprite.width, editor.dom.sprite.height); var imgbase64 = editor.dom.sprite.toDataURL().split(',')[1]; fs.writeFile('./project/images/' + editor_mode.appendPic.imageName + '.png', imgbase64, 'base64', function (err, data) { if (err) { printe(err); throw(err) } printe('追加素材成功,请F5刷新编辑器,或继续追加当前素材'); editor.dom.sprite.style.height = (editor.dom.sprite.height = (editor.dom.sprite.height+ysize)) + "px"; editor.dom.spriteCtx.putImageData(dt, 0, 0); }); } editor_mode.change = function (value) { editor_mode.onmode('nextChange'); editor_mode.onmode(value); if(editor.isMobile)editor.showdataarea(false); } var editModeSelect = document.getElementById('editModeSelect'); editModeSelect.onchange = function () { editor_mode.change(editModeSelect.value); } editor_mode.checkUnique = function (thiseval) { if (!(thiseval instanceof Array)) return false; var map = {}; for (var i = 0; i