diff --git a/_server/README.md b/_server/README.md
index ccd28558..d23bfb43 100644
--- a/_server/README.md
+++ b/_server/README.md
@@ -33,7 +33,7 @@
``` js
editor.mapInit();//清空地图
editor.changeFloor('MT2')//切换地图
-editor.guid()//产生一个可以作为id的长随机字符串
+editor.util.guid()//产生一个可以作为id的长随机字符串
```
`editor.updateMap`中画未定义快的报错
diff --git a/_server/editor.js b/_server/editor.js
index d1b9e5dd..03b0cf01 100644
--- a/_server/editor.js
+++ b/_server/editor.js
@@ -41,31 +41,9 @@ editor.info
/////////// 数据相关 ///////////
editor.prototype.init = function (callback) {
- var afterCoreReset = function () {
- editor.idsInit(core.maps, core.icons.icons); // 初始化图片素材信息
- editor.drawInitData(core.icons.icons); // 初始化绘图
-
- editor.fetchMapFromCore();
- editor.updateMap();
- editor.buildMark();
- editor.drawEventBlock();
-
- editor.pos = {x: 0, y: 0};
- editor.mode.loc();
- editor.info = editor.ids[editor.indexs[201]];
- editor.mode.enemyitem();
- editor.mode.floor();
- editor.mode.tower();
- editor.mode.functions();
- editor.mode.commonevent();
- editor.mode.showMode('tower');
-
- editor_multi = editor_multi();
- editor_blockly = editor_blockly();
- if (Boolean(callback)) callback();
-
- }
+ editor_util_wrapper(editor);
+ editor_table_wrapper(editor);
var afterMainInit = function () {
core.floors = JSON.parse(JSON.stringify(core.floors, function (k, v) {
@@ -90,7 +68,6 @@ editor.prototype.init = function (callback) {
editor.file = editor_file;
editor_mode = editor_mode(editor);
editor.mode = editor_mode;
- editor_table_wrapper(editor);
core.resetGame(core.firstData.hero, null, core.firstData.floorId, core.initStatus.maps);
core.changeFloor(core.status.floorId, null, core.firstData.hero.loc, null, function () {
afterCoreReset();
@@ -98,6 +75,33 @@ editor.prototype.init = function (callback) {
core.events.setInitData(null);
});
}
+
+ var afterCoreReset = function () {
+
+ editor.idsInit(core.maps, core.icons.icons); // 初始化图片素材信息
+ editor.drawInitData(core.icons.icons); // 初始化绘图
+
+ editor.fetchMapFromCore();
+ editor.updateMap();
+ editor.buildMark();
+ editor.drawEventBlock();
+
+ editor.pos = {x: 0, y: 0};
+ editor.mode.loc();
+ editor.info = editor.ids[editor.indexs[201]];
+ editor.mode.enemyitem();
+ editor.mode.floor();
+ editor.mode.tower();
+ editor.mode.functions();
+ editor.mode.commonevent();
+ editor.mode.showMode('tower');
+
+ editor_multi = editor_multi();
+ editor_blockly = editor_blockly();
+ if (Boolean(callback)) callback();
+
+ }
+
afterMainInit();
}
@@ -355,21 +359,6 @@ editor.prototype.moveViewport=function(x,y){
editor.drawPosSelection();
}
-/////////// 通用 ///////////
-
-editor.prototype.guid = function () {
- return 'id_' + 'xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
- var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
- return v.toString(16);
- });
-}
-
-editor.prototype.HTMLescape = function (str_) {
- return String(str_).split('').map(function (v) {
- return '' + v.charCodeAt(0) + ';'
- }).join('');
-}
-
/////////// 界面交互相关 ///////////
editor.prototype.drawInitData = function (icons) {
diff --git a/_server/editor_file.js b/_server/editor_file.js
index 545867b2..89b7f6c5 100644
--- a/_server/editor_file.js
+++ b/_server/editor_file.js
@@ -94,7 +94,7 @@ editor_file = function (editor, callback) {
}
// format 更改实现方式以支持undefined删除
var tempJsonObj=Object.assign({},editor.currentFloorData);
- var tempMap=[['map',editor.guid()],['bgmap',editor.guid()],['fgmap',editor.guid()]];
+ var tempMap=[['map',editor.util.guid()],['bgmap',editor.util.guid()],['fgmap',editor.util.guid()]];
tempMap.forEach(function(v){
v[2]=tempJsonObj[v[0]];
tempJsonObj[v[0]]=v[1];
@@ -764,7 +764,7 @@ editor_file = function (editor, callback) {
var fmap = {};
var fjson = JSON.stringify(functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a, function (k, v) {
if (v instanceof Function) {
- var id_ = editor.guid();
+ var id_ = editor.util.guid();
fmap[id_] = v.toString();
return id_;
} else return v
@@ -853,11 +853,11 @@ editor_file = function (editor, callback) {
var plmap = {};
var pljson = JSON.stringify(plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1, function (k, v) {
if (v instanceof Function) {
- var id_ = editor.guid();
+ var id_ = editor.util.guid();
plmap[id_] = v.toString();
return id_;
} else if(v===null){
- var id_ = editor.guid();
+ var id_ = editor.util.guid();
plmap[id_] = 'null';
return id_;
} return v
@@ -980,7 +980,7 @@ editor_file = function (editor, callback) {
var emap = {};
var estr = JSON.stringify(maps_90f36752_8815_4be8_b32b_d7fad1d0542e, function (k, v) {
if (v.id != null) {
- var id_ = editor.guid();
+ var id_ = editor.util.guid();
emap[id_] = JSON.stringify(v);
return id_;
} else return v
@@ -1014,7 +1014,7 @@ editor_file = function (editor, callback) {
var emap = {};
var estr = JSON.stringify(enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80, function (k, v) {
if (v.hp != null) {
- var id_ = editor.guid();
+ var id_ = editor.util.guid();
emap[id_] = JSON.stringify(v);
return id_;
} else return v
diff --git a/_server/editor_mode.js b/_server/editor_mode.js
index ac428c07..d38a69e1 100644
--- a/_server/editor_mode.js
+++ b/_server/editor_mode.js
@@ -474,21 +474,8 @@ editor_mode = function (editor) {
}
selectAppend.onchange();
- var getPixel=function(imgData, x, y) {
- var offset = (x + y * imgData.width) * 4;
- var r = imgData.data[offset+0];
- var g = imgData.data[offset+1];
- var b = imgData.data[offset+2];
- var a = imgData.data[offset+3];
- return [r,g,b,a];
- }
- var setPixel=function(imgData, x, y, rgba) {
- var offset = (x + y * imgData.width) * 4;
- imgData.data[offset+0]=rgba[0];
- imgData.data[offset+1]=rgba[1];
- imgData.data[offset+2]=rgba[2];
- imgData.data[offset+3]=rgba[3];
- }
+ var getPixel=editor.util.getPixel
+ var setPixel=editor.util.setPixel
var autoAdjust = function (image, callback) {
var changed = false;
@@ -647,113 +634,9 @@ editor_mode = function (editor) {
var nimgData=new ImageData(imgData.width,imgData.height);
// ImageData .data 形如一维数组,依次排着每个点的 R(0~255) G(0~255) B(0~255) A(0~255)
var convert=function(rgba,delta){
- var round=Math.round;
- // rgbToHsl hue2rgb hslToRgb from https://github.com/carloscabo/colz.git
- //--------------------------------------------
- // The MIT License (MIT)
- //
- // Copyright (c) 2014 Carlos Cabo
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to deal
- // in the Software without restriction, including without limitation the rights
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- // copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in all
- // copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- // SOFTWARE.
- //--------------------------------------------
- // https://github.com/carloscabo/colz/blob/master/public/js/colz.class.js
- var rgbToHsl = function (rgba) {
- var arg, r, g, b, h, s, l, d, max, min;
-
- arg = rgba;
-
- if (typeof arg[0] === 'number') {
- r = arg[0];
- g = arg[1];
- b = arg[2];
- } else {
- r = arg[0][0];
- g = arg[0][1];
- b = arg[0][2];
- }
-
- r /= 255;
- g /= 255;
- b /= 255;
-
- max = Math.max(r, g, b);
- min = Math.min(r, g, b);
- l = (max + min) / 2;
-
- if (max === min) {
- h = s = 0; // achromatic
- } else {
- d = max - min;
- s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
-
- switch (max) {
- case r: h = (g - b) / d + (g < b ? 6 : 0); break;
- case g: h = (b - r) / d + 2; break;
- case b: h = (r - g) / d + 4; break;
- }
-
- h /= 6;
- }
-
- //CARLOS
- h = round(h * 360);
- s = round(s * 100);
- l = round(l * 100);
-
- return [h, s, l];
- }
- //
- var hue2rgb = function (p, q, t) {
- if (t < 0) { t += 1; }
- if (t > 1) { t -= 1; }
- if (t < 1 / 6) { return p + (q - p) * 6 * t; }
- if (t < 1 / 2) { return q; }
- if (t < 2 / 3) { return p + (q - p) * (2 / 3 - t) * 6; }
- return p;
- }
- var hslToRgb = function (hsl) {
- var arg, r, g, b, h, s, l, q, p;
-
- arg = hsl;
-
- if (typeof arg[0] === 'number') {
- h = arg[0] / 360;
- s = arg[1] / 100;
- l = arg[2] / 100;
- } else {
- h = arg[0][0] / 360;
- s = arg[0][1] / 100;
- l = arg[0][2] / 100;
- }
-
- if (s === 0) {
- r = g = b = l; // achromatic
- } else {
-
- q = l < 0.5 ? l * (1 + s) : l + s - l * s;
- p = 2 * l - q;
- r = hue2rgb(p, q, h + 1 / 3);
- g = hue2rgb(p, q, h);
- b = hue2rgb(p, q, h - 1 / 3);
- }
- return [round(r * 255), round(g * 255), round(b * 255)];
- }
+ var rgbToHsl = editor.util.rgbToHsl
+ var hue2rgb = editor.util.hue2rgb
+ var hslToRgb = editor.util.hslToRgb
//
var hsl=rgbToHsl(rgba)
hsl[0]=(hsl[0]+delta)%360
diff --git a/_server/editor_multi.js b/_server/editor_multi.js
index 5125c4e3..9ccd00c9 100644
--- a/_server/editor_multi.js
+++ b/_server/editor_multi.js
@@ -103,7 +103,7 @@ editor_multi = function () {
var tmap = {};
var tstr = JSON.stringify(tobj, function (k, v) {
if (typeof(v) === typeof('') && v.slice(0, 8) === 'function') {
- var id_ = editor.guid();
+ var id_ = editor.util.guid();
tmap[id_] = v.toString();
return id_;
} else return v
@@ -146,7 +146,7 @@ editor_multi = function () {
var tmap = {};
var tstr = JSON.stringify(tobj, function (k, v) {
if (v instanceof Function) {
- var id_ = editor.guid();
+ var id_ = editor.util.guid();
tmap[id_] = v.toString();
return id_;
} else return v
diff --git a/_server/editor_table.js b/_server/editor_table.js
index 32b5aa3d..09009ab2 100644
--- a/_server/editor_table.js
+++ b/_server/editor_table.js
@@ -184,7 +184,7 @@ editor_table_wrapper = function (editor) {
* @param {Object} cobj
*/
editor_table.prototype.objToTr = function (obj, commentObj, field, cfield, vobj, cobj) {
- var guid = editor.guid();
+ var guid = editor.util.guid();
var thiseval = vobj;
var comment = String(cobj._data);
@@ -195,14 +195,14 @@ editor_table_wrapper = function (editor) {
shortField = (shortField.length < charlength ? shortField : shortField.slice(0, charlength) + '...');
// 完整的内容转义后供悬停查看
- var commentHTMLescape = editor.HTMLescape(comment);
+ var commentHTMLescape = editor.util.HTMLescape(comment);
// 把长度超过 charlength 的字符改成 固定长度+...的形式
- var shortCommentHTMLescape = (comment.length < charlength ? commentHTMLescape : editor.HTMLescape(comment.slice(0, charlength)) + '...');
+ var shortCommentHTMLescape = (comment.length < charlength ? commentHTMLescape : editor.util.HTMLescape(comment.slice(0, charlength)) + '...');
var cobjstr = Object.assign({}, cobj);
delete cobjstr._data;
// 把cobj塞到第二个td的[cobj]中, 方便绑定事件时取
- cobjstr = editor.HTMLescape(JSON.stringify(cobjstr));
+ cobjstr = editor.util.HTMLescape(JSON.stringify(cobjstr));
var tdstr = editor.table.objToTd(obj, commentObj, field, cfield, vobj, cobj)
var outstr = editor.table.tr(guid, field, shortField, commentHTMLescape, cobjstr, shortCommentHTMLescape, tdstr)
diff --git a/_server/editor_util.js b/_server/editor_util.js
index f34d26f4..bab29837 100644
--- a/_server/editor_util.js
+++ b/_server/editor_util.js
@@ -10,13 +10,141 @@ editor_util_wrapper = function (editor) {
return v.toString(16);
});
}
-
+
editor_util.prototype.HTMLescape = function (str_) {
return String(str_).split('').map(function (v) {
return '' + v.charCodeAt(0) + ';'
}).join('');
}
-
+
+ editor_util.prototype.getPixel = function (imgData, x, y) {
+ var offset = (x + y * imgData.width) * 4;
+ var r = imgData.data[offset + 0];
+ var g = imgData.data[offset + 1];
+ var b = imgData.data[offset + 2];
+ var a = imgData.data[offset + 3];
+ return [r, g, b, a];
+ }
+
+ editor_util.prototype.setPixel = function (imgData, x, y, rgba) {
+ var offset = (x + y * imgData.width) * 4;
+ imgData.data[offset + 0] = rgba[0];
+ imgData.data[offset + 1] = rgba[1];
+ imgData.data[offset + 2] = rgba[2];
+ imgData.data[offset + 3] = rgba[3];
+ }
+
+ // rgbToHsl hue2rgb hslToRgb from https://github.com/carloscabo/colz.git
+ //--------------------------------------------
+ // The MIT License (MIT)
+ //
+ // Copyright (c) 2014 Carlos Cabo
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
+ // of this software and associated documentation files (the "Software"), to deal
+ // in the Software without restriction, including without limitation the rights
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ // copies of the Software, and to permit persons to whom the Software is
+ // furnished to do so, subject to the following conditions:
+ //
+ // The above copyright notice and this permission notice shall be included in all
+ // copies or substantial portions of the Software.
+ //
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ // SOFTWARE.
+ //--------------------------------------------
+ // https://github.com/carloscabo/colz/blob/master/public/js/colz.class.js
+ var round=Math.round;
+ var rgbToHsl = function (rgba) {
+ var arg, r, g, b, h, s, l, d, max, min;
+
+ arg = rgba;
+
+ if (typeof arg[0] === 'number') {
+ r = arg[0];
+ g = arg[1];
+ b = arg[2];
+ } else {
+ r = arg[0][0];
+ g = arg[0][1];
+ b = arg[0][2];
+ }
+
+ r /= 255;
+ g /= 255;
+ b /= 255;
+
+ max = Math.max(r, g, b);
+ min = Math.min(r, g, b);
+ l = (max + min) / 2;
+
+ if (max === min) {
+ h = s = 0; // achromatic
+ } else {
+ d = max - min;
+ s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
+
+ switch (max) {
+ case r: h = (g - b) / d + (g < b ? 6 : 0); break;
+ case g: h = (b - r) / d + 2; break;
+ case b: h = (r - g) / d + 4; break;
+ }
+
+ h /= 6;
+ }
+
+ //CARLOS
+ h = round(h * 360);
+ s = round(s * 100);
+ l = round(l * 100);
+
+ return [h, s, l];
+ }
+ //
+ var hue2rgb = function (p, q, t) {
+ if (t < 0) { t += 1; }
+ if (t > 1) { t -= 1; }
+ if (t < 1 / 6) { return p + (q - p) * 6 * t; }
+ if (t < 1 / 2) { return q; }
+ if (t < 2 / 3) { return p + (q - p) * (2 / 3 - t) * 6; }
+ return p;
+ }
+ var hslToRgb = function (hsl) {
+ var arg, r, g, b, h, s, l, q, p;
+
+ arg = hsl;
+
+ if (typeof arg[0] === 'number') {
+ h = arg[0] / 360;
+ s = arg[1] / 100;
+ l = arg[2] / 100;
+ } else {
+ h = arg[0][0] / 360;
+ s = arg[0][1] / 100;
+ l = arg[0][2] / 100;
+ }
+
+ if (s === 0) {
+ r = g = b = l; // achromatic
+ } else {
+
+ q = l < 0.5 ? l * (1 + s) : l + s - l * s;
+ p = 2 * l - q;
+ r = hue2rgb(p, q, h + 1 / 3);
+ g = hue2rgb(p, q, h);
+ b = hue2rgb(p, q, h - 1 / 3);
+ }
+ return [round(r * 255), round(g * 255), round(b * 255)];
+ }
+ editor_util.prototype.rgbToHsl=rgbToHsl
+ editor_util.prototype.hue2rgb=hue2rgb
+ editor_util.prototype.hslToRgb=hslToRgb
+
editor.constructor.prototype.util = new editor_util();
}
//editor_util_wrapper(editor);
\ No newline at end of file
diff --git a/_server/refactoring.md b/_server/refactoring.md
index f0e7d13f..5d92d0f4 100644
--- a/_server/refactoring.md
+++ b/_server/refactoring.md
@@ -33,6 +33,7 @@ editor: {
util: 组件
}
game: 来自游戏的数据
+ config: 编辑器配置
mode: 当前的模式(左侧的选择)
map: 当前编辑层的地图
...
diff --git a/editor-mobile.html b/editor-mobile.html
index 6e516541..01fd3454 100644
--- a/editor-mobile.html
+++ b/editor-mobile.html
@@ -525,9 +525,10 @@ if (location.protocol.indexOf("http")!=0) {
+
-
+
diff --git a/editor.html b/editor.html
index 1367f96d..8f826432 100644
--- a/editor.html
+++ b/editor.html
@@ -508,9 +508,10 @@ if (location.protocol.indexOf("http")!=0) {
+
-
+