diff --git a/_server/editor.js b/_server/editor.js
index 0942c892..297178ec 100644
--- a/_server/editor.js
+++ b/_server/editor.js
@@ -33,6 +33,15 @@ function editor() {
layerMod2:document.getElementById('layerMod2'),
layerMod3:document.getElementById('layerMod3'),
viewportButtons:document.getElementById('viewportButtons'),
+ appendPicCanvas : document.getElementById('appendPicCanvas'),
+ bg : document.getElementById('appendPicCanvas').children[0],
+ source : document.getElementById('appendPicCanvas').children[1],
+ picClick : document.getElementById('appendPicCanvas').children[2],
+ sprite : document.getElementById('appendPicCanvas').children[3],
+ sourceCtx:document.getElementById('appendPicCanvas').children[1].getContext('2d'),
+ spriteCtx:document.getElementById('appendPicCanvas').children[3].getContext('2d'),
+ appendPicSelection : document.getElementById('appendPicSelection'),
+ selectAppend : document.getElementById('selectAppend'),
};
this.uivalues={
@@ -60,6 +69,7 @@ function editor() {
lastRightButtonPos:[{x:0,y:0},{x:0,y:0}],
lastCopyedInfo : [null, null],
//
+ ratio : 1,
};
diff --git a/_server/editor_datapanel.js b/_server/editor_datapanel.js
index 2dba08e8..bdcc18af 100644
--- a/_server/editor_datapanel.js
+++ b/_server/editor_datapanel.js
@@ -299,8 +299,60 @@ editor_datapanel_wrapper = function (editor) {
+ editor.uifunctions.fixCtx_func = function () {
+ [editor.dom.sourceCtx, editor.dom.spriteCtx].forEach(function (ctx) {
+ ctx.mozImageSmoothingEnabled = false;
+ ctx.webkitImageSmoothingEnabled = false;
+ ctx.msImageSmoothingEnabled = false;
+ ctx.imageSmoothingEnabled = false;
+ })
+ }
+ editor.uifunctions.selectAppend_func = function () {
+ var selectAppend_str = [];
+ ["terrains", "animates", "enemys", "enemy48", "items", "npcs", "npc48", "autotile"].forEach(function (image) {
+ selectAppend_str.push(["\n'].join(''));
+ });
+ editor.dom.selectAppend.innerHTML = selectAppend_str.join('');
+ editor.dom.selectAppend.onchange = function () {
+
+ var value = editor.dom.selectAppend.value;
+
+ if (value == 'autotile') {
+ editor_mode.appendPic.imageName = 'autotile';
+ for (var jj = 0; jj < 4; jj++) editor.dom.appendPicSelection.children[jj].style = 'display:none';
+ if (editor_mode.appendPic.img) {
+ editor.dom.sprite.style.width = (editor.dom.sprite.width = editor_mode.appendPic.img.width) / editor.uivalues.ratio + 'px';
+ editor.dom.sprite.style.height = (editor.dom.sprite.height = editor_mode.appendPic.img.height) / editor.uivalues.ratio + 'px';
+ editor.dom.spriteCtx.clearRect(0, 0, editor.dom.sprite.width, editor.dom.sprite.height);
+ editor.dom.spriteCtx.drawImage(editor_mode.appendPic.img, 0, 0);
+ }
+ return;
+ }
+
+ var ysize = editor.dom.selectAppend.value.endsWith('48') ? 48 : 32;
+ editor_mode.appendPic.imageName = value;
+ var img = core.material.images[value];
+ editor_mode.appendPic.toImg = img;
+ var num = ~~img.width / 32;
+ editor_mode.appendPic.num = num;
+ editor_mode.appendPic.index = 0;
+ var selectStr = '';
+ for (var ii = 0; ii < num; ii++) {
+ editor.dom.appendPicSelection.children[ii].style = 'left:0;top:0;height:' + (ysize - 6) + 'px';
+ selectStr += '{"x":0,"y":0},'
+ }
+ editor_mode.appendPic.selectPos = eval('[' + selectStr + ']');
+ for (var jj = num; jj < 4; jj++) {
+ editor.dom.appendPicSelection.children[jj].style = 'display:none';
+ }
+ editor.dom.sprite.style.width = (editor.dom.sprite.width = img.width) / editor.uivalues.ratio + 'px';
+ editor.dom.sprite.style.height = (editor.dom.sprite.height = img.height + ysize) / editor.uivalues.ratio + 'px';
+ editor.dom.spriteCtx.drawImage(img, 0, 0);
+ }
+ editor.dom.selectAppend.onchange();
+ }
diff --git a/_server/editor_unsorted_2.js b/_server/editor_unsorted_2.js
index f3438fa3..25cbef24 100644
--- a/_server/editor_unsorted_2.js
+++ b/_server/editor_unsorted_2.js
@@ -15,72 +15,12 @@ editor_unsorted_2_wrapper=function(editor_mode){
editor.uifunctions.createNewMaps_func()
editor.uifunctions.changeFloorId_func()
-
-
- // ratio|appendPicCanvas|bg|source_ctx|source|picClick|sprite_ctx|sprite|appendPicSelection
- var ratio = 1;
- var appendPicCanvas = document.getElementById('appendPicCanvas');
- var bg = appendPicCanvas.children[0];
- var source = appendPicCanvas.children[1];
- var source_ctx=source.getContext('2d');
- var picClick = appendPicCanvas.children[2];
- var sprite = appendPicCanvas.children[3];
- var sprite_ctx=sprite.getContext('2d');
- var appendPicSelection = document.getElementById('appendPicSelection');
- [source_ctx,sprite_ctx].forEach(function(ctx){
- ctx.mozImageSmoothingEnabled = false;
- ctx.webkitImageSmoothingEnabled = false;
- ctx.msImageSmoothingEnabled = false;
- ctx.imageSmoothingEnabled = false;
- })
+ editor.uifunctions.fixCtx_func()
+ editor.uifunctions.selectAppend_func()
- var selectAppend = document.getElementById('selectAppend');
- var selectAppend_str = [];
- ["terrains", "animates", "enemys", "enemy48", "items", "npcs", "npc48", "autotile"].forEach(function (image) {
- selectAppend_str.push(["\n'].join(''));
- });
- selectAppend.innerHTML = selectAppend_str.join('');
- selectAppend.onchange = function () {
- var value = selectAppend.value;
- if (value == 'autotile') {
- editor_mode.appendPic.imageName = 'autotile';
- for (var jj=0;jj<4;jj++) appendPicSelection.children[jj].style = 'display:none';
- if (editor_mode.appendPic.img) {
- sprite.style.width = (sprite.width = editor_mode.appendPic.img.width) / ratio + 'px';
- sprite.style.height = (sprite.height = editor_mode.appendPic.img.height) / ratio + 'px';
- sprite_ctx.clearRect(0, 0, sprite.width, sprite.height);
- sprite_ctx.drawImage(editor_mode.appendPic.img, 0, 0);
- }
- return;
- }
-
- var ysize = selectAppend.value.endsWith('48') ? 48 : 32;
- editor_mode.appendPic.imageName = value;
- var img = core.material.images[value];
- editor_mode.appendPic.toImg = img;
- var num = ~~img.width / 32;
- editor_mode.appendPic.num = num;
- editor_mode.appendPic.index = 0;
- var selectStr = '';
- for (var ii = 0; ii < num; ii++) {
- appendPicSelection.children[ii].style = 'left:0;top:0;height:' + (ysize - 6) + 'px';
- selectStr += '{"x":0,"y":0},'
- }
- editor_mode.appendPic.selectPos = eval('[' + selectStr + ']');
- for (var jj = num; jj < 4; jj++) {
- appendPicSelection.children[jj].style = 'display:none';
- }
- sprite.style.width = (sprite.width = img.width) / ratio + 'px';
- sprite.style.height = (sprite.height = img.height + ysize) / ratio + 'px';
- sprite_ctx.drawImage(img, 0, 0);
- }
- selectAppend.onchange();
-
- var getPixel=editor.util.getPixel
- var setPixel=editor.util.setPixel
var autoAdjust = function (image, callback) {
var changed = false;
@@ -98,7 +38,7 @@ editor_unsorted_2_wrapper=function(editor_mode){
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;
- appendPicSelection.children[ii].style = [
+ editor.dom.appendPicSelection.children[ii].style = [
'left:', pos.x * 32, 'px;',
'top:', pos.y * pos.ysize, 'px;',
'height:', pos.ysize - 6, 'px;'
@@ -301,9 +241,9 @@ editor_unsorted_2_wrapper=function(editor_mode){
printe("不合法的Autotile图片!");
return;
}
- var imgData = source_ctx.getImageData(0,0,image.width,image.height);
- sprite_ctx.putImageData(imgData, 0, 0);
- var imgbase64 = sprite.toDataURL().split(',')[1];
+ 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) {
@@ -340,29 +280,29 @@ editor_unsorted_2_wrapper=function(editor_mode){
}
- if (selectAppend.value == 'autotile') {
+ if (editor.dom.selectAppend.value == 'autotile') {
confirmAutotile();
return;
}
- var ysize = selectAppend.value.endsWith('48') ? 48 : 32;
+ var ysize = editor.dom.selectAppend.value.endsWith('48') ? 48 : 32;
for (var ii = 0, v; v = editor_mode.appendPic.selectPos[ii]; ii++) {
- // var imgData = source_ctx.getImageData(v.x * 32, v.y * ysize, 32, ysize);
- // sprite_ctx.putImageData(imgData, ii * 32, sprite.height - ysize);
- // sprite_ctx.drawImage(editor_mode.appendPic.img, v.x * 32, v.y * ysize, 32, ysize, ii * 32, height, 32, ysize)
+ // 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)
- sprite_ctx.drawImage(source_ctx.canvas, v.x*32, v.y*ysize, 32, ysize, 32*ii, sprite.height - ysize, 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 = sprite_ctx.getImageData(0, 0, sprite.width, sprite.height);
- var imgbase64 = sprite.toDataURL().split(',')[1];
+ 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刷新编辑器,或继续追加当前素材');
- sprite.style.height = (sprite.height = (sprite.height+ysize)) + "px";
- sprite_ctx.putImageData(dt, 0, 0);
+ editor.dom.sprite.style.height = (editor.dom.sprite.height = (editor.dom.sprite.height+ysize)) + "px";
+ editor.dom.spriteCtx.putImageData(dt, 0, 0);
});
}