diff --git a/_server/editor.js b/_server/editor.js
index 9c9603cc..0fb176e8 100644
--- a/_server/editor.js
+++ b/_server/editor.js
@@ -12,14 +12,7 @@ editor.prototype.init = function (callback) {
editor.reset(function () {
editor.drawMapBg();
- var mapArray = core.maps.save(core.status.maps, core.status.floorId);
- editor.map = mapArray.map(function (v) {
- return v.map(function (v) {
- return editor.ids[[editor.indexs[parseInt(v)][0]]]
- })
- });
- editor.currentFloorId = core.status.floorId;
- editor.currentFloorData = core.floors[core.status.floorId];
+ editor.fetchMapFromCore();
editor.updateMap();
editor.buildMark();
editor.drawEventBlock();
@@ -170,7 +163,11 @@ editor.prototype.mapInit = function () {
editor.map[y][x] = 0;
}
}
+ editor.fgmap=JSON.parse(JSON.stringify(editor.map));
+ editor.bgmap=JSON.parse(JSON.stringify(editor.map));
editor.currentFloorData.map = editor.map;
+ editor.currentFloorData.fgmap = editor.fgmap;
+ editor.currentFloorData.bgmap = editor.bgmap;
editor.currentFloorData.firstArrive = [];
editor.currentFloorData.events = {};
editor.currentFloorData.changeFloor = {};
@@ -326,26 +323,45 @@ editor.prototype.buildMark = function(){
}
}
-editor.prototype.changeFloor = function (floorId, callback) {
- editor.currentFloorData.map = editor.map.map(function (v) {
+editor.prototype.fetchMapFromCore = function(){
+ var mapArray = core.maps.save(core.status.maps, core.status.floorId);
+ editor.map = mapArray.map(function (v) {
return v.map(function (v) {
- return v.idnum || v || 0
+ return editor.ids[[editor.indexs[parseInt(v)][0]]]
})
});
+ editor.currentFloorId = core.status.floorId;
+ editor.currentFloorData = core.floors[core.status.floorId];
+ for(var ii=0,name;name=['bgmap','fgmap'][ii];ii++){
+ var mapArray = editor.currentFloorData[name];
+ if(!mapArray || JSON.stringify(mapArray)==JSON.stringify([])){//未设置或空数组
+ //与editor.map同形的全0
+ mapArray=eval('['+Array(editor.map.length+1).join('['+Array(editor.map[0].length+1).join('0,')+'],')+']');
+ }
+ editor[name]=mapArray.map(function (v) {
+ return v.map(function (v) {
+ return editor.ids[[editor.indexs[parseInt(v)][0]]]
+ })
+ });
+ }
+}
+
+editor.prototype.changeFloor = function (floorId, callback) {
+ for(var ii=0,name;name=['map','bgmap','fgmap'][ii];ii++){
+ var mapArray=editor[name].map(function (v) {
+ return v.map(function (v) {
+ return v.idnum || v || 0
+ })
+ });
+ editor.currentFloorData[name]=mapArray;
+ }
core.changeFloor(floorId, null, {"x": 0, "y": 0, "direction": "up"}, null, function () {
core.bigmap.offsetX=0;
core.bigmap.offsetY=0;
editor.moveViewport(0,0);
editor.drawMapBg();
- var mapArray = core.maps.save(core.status.maps, core.status.floorId);
- editor.map = mapArray.map(function (v) {
- return v.map(function (v) {
- return editor.ids[[editor.indexs[parseInt(v)][0]]]
- })
- });
- editor.currentFloorId = core.status.floorId;
- editor.currentFloorData = core.floors[core.status.floorId];
+ editor.fetchMapFromCore();
editor.updateMap();
editor_mode.floor();
editor.drawEventBlock();
diff --git a/_server/editor_file.js b/_server/editor_file.js
index 4f534d2a..e4c46b1c 100644
--- a/_server/editor_file.js
+++ b/_server/editor_file.js
@@ -106,8 +106,8 @@ editor_file = function (editor, callback) {
});
for (var ii in editor.currentFloorData)
if (editor.currentFloorData.hasOwnProperty(ii)) {
- if (ii == 'map')
- datastr = datastr.concat(['\n"', ii, '": [\n', formatMap(editor.currentFloorData[ii]), '\n],']);
+ if (['map','bgmap','fgmap'].indexOf(ii)!==-1)
+ datastr = datastr.concat(['\n"', ii, '": [\n', formatMap(editor.currentFloorData[ii],ii!='map'), '\n],']);
else
datastr = datastr.concat(['\n"', ii, '": ', JSON.stringify(editor.currentFloorData[ii], null, 4), ',']);
}
@@ -704,7 +704,13 @@ editor_file = function (editor, callback) {
return true
}
- var formatMap = function (mapArr) {
+ var formatMap = function (mapArr,trySimplify) {
+ if(!mapArr || JSON.stringify(mapArr)==JSON.stringify([]))return '';
+ if(trySimplify){
+ //检查是否是全0二维数组
+ var jsoncheck=JSON.stringify(mapArr).replace(/\D/g,'');
+ if(jsoncheck==Array(jsoncheck.length+1).join('0'))return '';
+ }
//把二维数组格式化
var formatArrStr = '';
var arr = JSON.stringify(mapArr).replace(/\s+/g, '').split('],[');
diff --git a/editor-mobile.html b/editor-mobile.html
index ad395cc3..641e5763 100644
--- a/editor-mobile.html
+++ b/editor-mobile.html
@@ -211,6 +211,7 @@
+
@@ -406,7 +407,7 @@
-
+
diff --git a/editor.html b/editor.html
index 446aaaaf..28ddbce2 100644
--- a/editor.html
+++ b/editor.html
@@ -210,6 +210,7 @@
+
@@ -391,7 +392,7 @@
-
+
diff --git a/libs/maps.js b/libs/maps.js
index 4ec056a9..89ae1ff1 100644
--- a/libs/maps.js
+++ b/libs/maps.js
@@ -433,6 +433,7 @@ maps.prototype.drawMap = function (mapName, callback) {
if (main.mode=='editor'){
main.editor.drawMapBg = function(){
core.clearMap('bg');
+ core.clearMap('fg');
drawBg();
}
} else {