diff --git a/libs/actions.js b/libs/actions.js index 17809fd5..c29d7f1a 100644 --- a/libs/actions.js +++ b/libs/actions.js @@ -1245,10 +1245,12 @@ actions.prototype.clickSL = function(x,y) { // 上一页 if ((x == 3 || x == 4) && y == 12) { core.ui.drawSLPanel(10*(page-1)+offset); + return; } // 下一页 if ((x == 8 || x == 9) && y == 12) { core.ui.drawSLPanel(10*(page+1)+offset); + return; } // 返回 if (x>=10 && x<=12 && y==12) { @@ -1258,17 +1260,37 @@ actions.prototype.clickSL = function(x,y) { } return; } + // 删除 + if (x>=0 && x<=2 && y==12) { + core.status.event.selection=!core.status.event.selection; + core.ui.drawSLPanel(index); + return; + } - var index=6*page+1; + var id=null; if (y>=1 && y<=4) { - if (x>=1 && x<=3) core.doSL("autoSave", core.status.event.id); - if (x>=5 && x<=7) core.doSL(5*page+1, core.status.event.id); - if (x>=9 && x<=11) core.doSL(5*page+2, core.status.event.id); + if (x>=1 && x<=3) id = "autoSave"; + if (x>=5 && x<=7) id = 5*page+1; + if (x>=9 && x<=11) id = 5*page+2; } if (y>=7 && y<=10) { - if (x>=1 && x<=3) core.doSL(5*page+3, core.status.event.id); - if (x>=5 && x<=7) core.doSL(5*page+4, core.status.event.id); - if (x>=9 && x<=11) core.doSL(5*page+5, core.status.event.id); + if (x>=1 && x<=3) id = 5*page+3; + if (x>=5 && x<=7) id = 5*page+4; + if (x>=9 && x<=11) id = 5*page+5; + } + if (id!=null) { + if (core.status.event.selection) { + if (id == 'autoSave') { + core.drawTip("无法删除自动存档!"); + } + else { + core.removeLocalStorage("save"+id); + core.ui.drawSLPanel(index); + } + } + else { + core.doSL(id, core.status.event.id); + } } } @@ -1346,6 +1368,15 @@ actions.prototype.keyUpSL = function (keycode) { } return; } + if (keycode==46) { + if (offset==0) { + core.drawTip("无法删除自动存档!"); + } + else { + core.removeLocalStorage("save"+(5*page+offset)); + core.ui.drawSLPanel(index); + } + } } ////// 系统设置界面时的点击操作 ////// diff --git a/libs/events.js b/libs/events.js index 94dc708d..d1d96eb8 100644 --- a/libs/events.js +++ b/libs/events.js @@ -123,11 +123,32 @@ events.prototype.lose = function (reason) { ////// 游戏结束 ////// events.prototype.gameOver = function (ending, fromReplay) { + // 下载录像 + var confirmDownload = function () { + core.ui.closePanel(); + setTimeout(function () { + core.ui.drawConfirmBox("你想下载录像吗?", function () { + var obj = { + 'name': core.firstData.name, + 'version': core.firstData.version, + 'hard': core.status.hard, + 'route': core.encodeRoute(core.status.route) + } + core.download(core.firstData.name+"_"+core.formatDate2(new Date())+".h5route", JSON.stringify(obj)); + core.restart(); + }, function () { + core.restart(); + }) + }, 150); + } + // 上传成绩 var confirmUpload = function () { + core.ui.closePanel(); + if (!core.isset(ending)) { - core.restart(); + confirmDownload(); return; } @@ -154,8 +175,7 @@ events.prototype.gameOver = function (ending, fromReplay) { formData.append('route', core.encodeRoute(core.status.route)); core.http("POST", "/games/upload.php", formData); - - core.restart(); + confirmDownload(); } core.ui.drawConfirmBox("你想记录你的ID和成绩吗?", function () { @@ -167,30 +187,14 @@ events.prototype.gameOver = function (ending, fromReplay) { return; } - // 下载录像 - var confirmDownload = function () { - core.ui.closePanel(); - core.ui.drawConfirmBox("你想下载录像吗?", function () { - var obj = { - 'name': core.firstData.name, - 'version': core.firstData.version, - 'hard': core.status.hard, - 'route': core.encodeRoute(core.status.route) - } - core.download(core.firstData.name+"_"+core.formatDate2(new Date())+".h5route", JSON.stringify(obj)); - confirmUpload(); - }, function () { - confirmUpload(); - }) - } - if (fromReplay) { core.drawText("录像回放完毕!", function () { core.restart(); }); } else { - confirmDownload(); + // confirmDownload(); + confirmUpload(); } } diff --git a/libs/ui.js b/libs/ui.js index fb1d43ef..0c9425de 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -1572,13 +1572,16 @@ ui.prototype.drawSLPanel = function(index) { var u=416/6, size=118; + var strokeColor = '#FFD700'; + if (core.status.event.selection) strokeColor = '#FF6A6A'; + var name=core.status.event.id=='save'?"存档":"读档"; for (var i=0;i<6;i++) { var id=5*page+i; var data=core.getLocalStorage(i==0?"autoSave":"save"+id, null); if (i<3) { core.fillText('ui', i==0?"自动存档":name+id, (2*i+1)*u, 35, '#FFFFFF', "bold 17px Verdana"); - core.strokeRect('ui', (2*i+1)*u-size/2, 50, size, size, i==offset?'#FFD700':'#FFFFFF', i==offset?6:2); + core.strokeRect('ui', (2*i+1)*u-size/2, 50, size, size, i==offset?strokeColor:'#FFFFFF', i==offset?6:2); if (core.isset(data) && core.isset(data.floorId)) { this.drawThumbnail(data.floorId, 'ui', core.maps.load(data.maps, data.floorId).blocks, (2*i+1)*u-size/2, 50, size, data.hero.loc); core.fillText('ui', core.formatDate(new Date(data.time)), (2*i+1)*u, 65+size, '#FFFFFF', '10px Verdana'); @@ -1590,7 +1593,7 @@ ui.prototype.drawSLPanel = function(index) { } else { core.fillText('ui', name+id, (2*i-5)*u, 230, '#FFFFFF', "bold 17px Verdana"); - core.strokeRect('ui', (2*i-5)*u-size/2, 245, size, size, i==offset?'#FFD700':'#FFFFFF', i==offset?6:2); + core.strokeRect('ui', (2*i-5)*u-size/2, 245, size, size, i==offset?strokeColor:'#FFFFFF', i==offset?6:2); if (core.isset(data) && core.isset(data.floorId)) { this.drawThumbnail(data.floorId, 'ui', core.maps.load(data.maps, data.floorId).blocks, (2*i-5)*u-size/2, 245, size, data.hero.loc); core.fillText('ui', core.formatDate(new Date(data.time)), (2*i-5)*u, 260+size, '#FFFFFF', '10px Verdana'); @@ -1602,6 +1605,11 @@ ui.prototype.drawSLPanel = function(index) { } } this.drawPagination(page+1, 30); + + if (core.status.event.selection) + core.setFillStyle('ui', '#FF6A6A'); + core.fillText('ui', '删除模式', 48, 403); + } ////// 绘制一个缩略图 ////// diff --git a/project/floors/sample0.js b/project/floors/sample0.js index 804dee94..7b75facb 100644 --- a/project/floors/sample0.js +++ b/project/floors/sample0.js @@ -15,19 +15,19 @@ main.floors.sample0 = "bgm": "bgm.mp3", // 到达该层后默认播放的BGM。本项可忽略。 "item_ratio": 2, // 该层的宝石/血瓶倍率 "map": [ // 地图数据,需要是13x13,建议使用地图生成器来生成 - [0, 0, 220, 0, 0, 20, 87, 3, 65, 64, 44, 43, 42], - [0, 246, 0, 246, 0, 20, 0, 3, 58, 59, 60, 61, 41], - [219, 0, 0, 0, 219, 20, 0, 3, 57, 26, 62, 63, 40], - [20, 20, 125, 20, 20, 20, 0, 3, 53, 54, 55, 56, 39], - [216, 247, 263, 235, 248, 6, 0, 3, 49, 50, 51, 52, 38], - [6, 6, 125, 6, 6, 6, 0, 1, 45, 46, 47, 48, 37], - [224, 254, 212, 262, 204, 5, 0, 1, 31, 32, 34, 33, 36], - [201, 261, 217, 264, 207, 5, 0, 1, 27, 28, 29, 30, 35], - [5, 5, 125, 5, 5, 5, 0, 1, 21, 22, 23, 24, 25], - [0, 0, 237, 0, 0, 0, 45, 1, 1, 1, 121, 1, 1], - [4, 4, 133, 4, 4, 4, 0, 0, 0, 0, 0, 85, 124], - [87, 11, 12, 13, 14, 4, 4, 2, 2, 2, 122, 2, 2], - [88, 89, 90, 91, 92, 93, 94, 2, 81, 82, 83, 84, 86], + [ 0, 0,220, 0, 0, 20, 87, 3, 65, 64, 44, 43, 42], + [ 0,246, 0,246, 0, 20, 0, 3, 58, 59, 60, 61, 41], + [219, 0, 0, 0,219, 20, 0, 3, 57, 26, 62, 63, 40], + [ 20, 20,115, 20, 20, 20, 0, 3, 53, 54, 55, 56, 39], + [216,247,263,235,248, 6, 0, 3, 49, 50, 51, 52, 38], + [ 6, 6,115, 6, 6, 6, 0, 1, 45, 46, 47, 48, 37], + [224,254,212,262,204, 5, 0, 1, 31, 32, 34, 33, 36], + [201,261,217,264,207, 5, 0, 1, 27, 28, 29, 30, 35], + [ 5, 5,115, 5, 5, 5, 0, 1, 21, 22, 23, 24, 25], + [ 0, 0,237, 0, 0, 0, 45, 1, 1, 1,111, 1, 1], + [ 4, 4,139, 4, 4, 4, 0, 0, 0, 0, 0, 85,114], + [ 87, 11, 12, 13, 14, 4, 4, 2, 2, 2,112, 2, 2], + [ 88, 89, 90, 91, 92, 93, 94, 2, 81, 82, 83, 84, 86] ], "firstArrive": [ // 第一次到该楼层触发的事件 "\t[样板提示]首次到达某层可以触发 firstArrive 事件,该事件可类似于RMXP中的“自动执行脚本”。\n\n本事件支持一切的事件类型,常常用来触发对话,例如:", diff --git a/project/floors/sample1.js b/project/floors/sample1.js index 669d67b1..70d17578 100644 --- a/project/floors/sample1.js +++ b/project/floors/sample1.js @@ -15,19 +15,19 @@ main.floors.sample1 = // "bgm": "bgm.mp3", // 到达该层后默认播放的BGM。本项可忽略。 "item_ratio": 1, // 该层的宝石/血瓶倍率 "map": [ // 地图数据,需要是13x13,建议使用地图生成器来生成 - [7, 131, 8, 152, 9, 130, 10, 152, 166, 165, 132, 165, 166], - [0, 0, 0, 0, 0, 0, 0, 152, 165, 164, 0, 162, 165], - [152, 152, 152, 152, 121, 152, 152, 152, 0, 0, 229, 0, 0], - [43, 33, 44, 151, 0, 0, 0, 152, 165, 161, 0, 163, 165], - [21, 22, 21, 151, 0, 0, 0, 152, 166, 165, 0, 165, 166], - [151, 245, 151, 151, 0, 87, 0, 152, 152, 152, 85, 153, 153], - [0, 246, 0, 151, 0, 0, 0, 152, 152, 221, 0, 221, 153], - [246, 0, 246, 151, 0, 0, 0, 121, 85, 0, 0, 0, 153], - [151, 246, 151, 151, 0, 153, 153, 153, 153, 153, 153, 153, 153], - [0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 163, 0, 0], - [1, 1, 1, 1, 0, 20, 0, 0, 0, 162, 0, 161, 0], - [1, 0, 123, 1, 0, 20, 124, 0, 121, 0, 122, 0, 126], - [1, 0, 0, 1, 88, 20, 86, 0, 0, 0, 0, 0, 0], + [ 7,121, 8,152, 9,120, 10,352,176,175,122,175,176], + [ 0, 0, 0, 0, 0, 0, 0,352,175,174, 0,172,175], + [352,352,352,352,111,352,352,352, 0, 0,229, 0, 0], + [ 43, 33, 44,151, 0, 0, 0,352,175,171, 0,173,175], + [ 21, 22, 21,151, 0, 0, 0,352,176,175, 0,175,176], + [351,245,351,351, 0, 87, 0,352,352,352, 85,353,353], + [ 0,246, 0,351, 0, 0, 0,352,152,221, 0,221,353], + [246, 0,246,351, 0, 0, 0,111, 85, 0, 0, 0,353], + [351,246,351,351, 0,353,353,353,353,353,353,353,353], + [ 0, 0, 0, 0, 0, 0, 0,174, 0, 0,173, 0, 0], + [ 1, 1, 1, 1, 0, 20, 0, 0, 0,172, 0,171, 0], + [ 1, 0,113, 1, 0, 20,114, 0,111, 0,112, 0,116], + [ 1, 0, 0, 1, 88, 20, 86, 0, 0, 0, 0, 0, 0] ], "firstArrive": [ // 第一次到该楼层触发的事件 diff --git a/project/floors/sample2.js b/project/floors/sample2.js index 6f6e5f7b..187e2520 100644 --- a/project/floors/sample2.js +++ b/project/floors/sample2.js @@ -15,19 +15,19 @@ main.floors.sample2 = "bgm": "qianjin.mid", // 到达该层后默认播放的BGM。本项可忽略。 "item_ratio": 1, // 该层的宝石/血瓶倍率 "map": [ // 地图数据,需要是13x13,建议使用地图生成器来生成 - [5, 5, 5, 5, 5, 5, 87, 5, 5, 5, 5, 5, 5], - [5, 4, 4, 4, 4, 1, 0, 1, 4, 4, 4, 4, 5], - [5, 4, 4, 4, 4, 1, 85, 1, 4, 4, 4, 4, 5], - [5, 4, 4, 4, 247, 1, 247, 1, 247, 4, 4, 4, 5], - [5, 4, 4, 4, 1, 247, 247, 247, 1, 4, 4, 4, 5], - [5, 4, 4, 4, 1, 247, 30, 247, 1, 4, 4, 4, 5], - [5, 4, 4, 4, 247, 1, 124, 1, 247, 4, 4, 4, 5], - [5, 4, 4, 4, 4, 1, 123, 1, 4, 4, 4, 4, 5], - [5, 4, 4, 4, 4, 1, 0, 1, 4, 4, 4, 4, 5], - [5, 4, 4, 4, 4, 1, 0, 1, 4, 4, 4, 4, 5], - [5, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 5], - [5, 4, 4, 4, 4, 4, 85, 4, 4, 4, 4, 4, 5], - [5, 5, 5, 5, 5, 5, 88, 5, 5, 5, 5, 5, 5], + [ 5, 5, 5, 5, 5, 5, 87, 5, 5, 5, 5, 5, 5], + [ 5, 4, 4, 4, 4, 1, 0, 1, 4, 4, 4, 4, 5], + [ 5, 4, 4, 4, 4, 1, 85, 1, 4, 4, 4, 4, 5], + [ 5, 4, 4, 4,247, 1,247, 1,247, 4, 4, 4, 5], + [ 5, 4, 4, 4, 1,247,247,247, 1, 4, 4, 4, 5], + [ 5, 4, 4, 4, 1,247, 30,247, 1, 4, 4, 4, 5], + [ 5, 4, 4, 4,247, 1,114, 1,247, 4, 4, 4, 5], + [ 5, 4, 4, 4, 4, 1,113, 1, 4, 4, 4, 4, 5], + [ 5, 4, 4, 4, 4, 1, 0, 1, 4, 4, 4, 4, 5], + [ 5, 4, 4, 4, 4, 1, 0, 1, 4, 4, 4, 4, 5], + [ 5, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 5], + [ 5, 4, 4, 4, 4, 4, 85, 4, 4, 4, 4, 4, 5], + [ 5, 5, 5, 5, 5, 5, 88, 5, 5, 5, 5, 5, 5] ], "firstArrive": [ // 第一次到该楼层触发的事件 "\t[实战!]本楼将尝试复刻《宿命的旋律》40F剧情。" diff --git a/project/icons.js b/project/icons.js index 21c181d2..cfc26a35 100644 --- a/project/icons.js +++ b/project/icons.js @@ -99,7 +99,23 @@ icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = 'wood': 8, 'pinkShop': 9, 'blueShop': 10, - 'princess': 11 + 'princess': 11, + 'wlt': 12, + 'wt': 13, + 'wrt': 14, + 'wl': 15, + 'wc': 16, + 'wr': 17, + 'wlb': 18, + 'wrb': 19, + 'dlt': 20, + 'dt': 21, + 'drt': 22, + 'dl': 23, + 'dc': 24, + 'dr': 25, + 'dlb': 26, + 'drb': 27, }, 'npc48': { 'npc0': 0, diff --git a/project/images/enemys.png b/project/images/enemys.png index 6797ae59..01d4396f 100644 Binary files a/project/images/enemys.png and b/project/images/enemys.png differ diff --git a/project/images/npcs.png b/project/images/npcs.png index 3df2b21d..a2830bc9 100644 Binary files a/project/images/npcs.png and b/project/images/npcs.png differ diff --git a/project/maps.js b/project/maps.js index 027b4302..45641367 100644 --- a/project/maps.js +++ b/project/maps.js @@ -23,10 +23,10 @@ maps_90f36752_8815_4be8_b32b_d7fad1d0542e = // Autotile '20':{'cls': 'autotile', 'id': 'autotile', 'noPass': true}, // autotile - // 更多的autotile从151到160等,只要不和现有的数字冲突即可 - '151':{'cls': 'autotile', 'id': 'autotile1', 'noPass': true}, - '152':{'cls': 'autotile', 'id': 'autotile2', 'noPass': true}, - '153':{'cls': 'autotile', 'id': 'autotile3', 'noPass': true}, + // 更多的autotile只要不和现有的数字冲突即可 + '351':{'cls': 'autotile', 'id': 'autotile1', 'noPass': true}, + '352':{'cls': 'autotile', 'id': 'autotile2', 'noPass': true}, + '353':{'cls': 'autotile', 'id': 'autotile3', 'noPass': true}, ////////////////////////// 物品部分 ////////////////////////// @@ -99,40 +99,54 @@ maps_90f36752_8815_4be8_b32b_d7fad1d0542e = ////////////////////////// NPC部分 ////////////////////////// - // 121-150 NPC - '121':{'cls': 'npcs', 'id': 'man'}, - '122':{'cls': 'npcs', 'id': 'woman'}, - '123':{'cls': 'npcs', 'id': 'thief'}, - '124':{'cls': 'npcs', 'id': 'fairy'}, - '125':{'cls': 'npcs', 'id': 'magician'}, - '126':{'cls': 'npcs', 'id': 'womanMagician'}, - '127':{'cls': 'npcs', 'id': 'oldMan'}, - '128':{'cls': 'npcs', 'id': 'child'}, - '129':{'cls': 'npcs', 'id': 'wood'}, - '130':{'cls': 'npcs', 'id': 'pinkShop'}, - '131':{'cls': 'npcs', 'id': 'blueShop'}, - '132':{'cls': 'npcs', 'id': 'princess'}, - '133':{'cls': 'npc48', 'id': 'npc0'}, - '134':{'cls': 'npc48', 'id': 'npc1'}, - '135':{'cls': 'npc48', 'id': 'npc2'}, - '136':{'cls': 'npc48', 'id': 'npc3'}, - '137':{'cls': 'npc48', 'id': 'npc4'}, - + // 111-150 NPC + '111':{'cls': 'npcs', 'id': 'man'}, + '112':{'cls': 'npcs', 'id': 'woman'}, + '113':{'cls': 'npcs', 'id': 'thief'}, + '114':{'cls': 'npcs', 'id': 'fairy'}, + '115':{'cls': 'npcs', 'id': 'magician'}, + '116':{'cls': 'npcs', 'id': 'womanMagician'}, + '117':{'cls': 'npcs', 'id': 'oldMan'}, + '118':{'cls': 'npcs', 'id': 'child'}, + '119':{'cls': 'npcs', 'id': 'wood'}, + '120':{'cls': 'npcs', 'id': 'pinkShop'}, + '121':{'cls': 'npcs', 'id': 'blueShop'}, + '122':{'cls': 'npcs', 'id': 'princess'}, + '123': {'cls': 'npcs', 'id': 'wlt'}, + '124': {'cls': 'npcs', 'id': 'wt'}, + '125': {'cls': 'npcs', 'id': 'wrt'}, + '126': {'cls': 'npcs', 'id': 'wl'}, + '127': {'cls': 'npcs', 'id': 'wc'}, + '128': {'cls': 'npcs', 'id': 'wr'}, + '129': {'cls': 'npcs', 'id': 'wlb'}, + '130': {'cls': 'npcs', 'id': 'wrb'}, + '131': {'cls': 'npcs', 'id': 'dlt'}, + '132': {'cls': 'npcs', 'id': 'dt'}, + '133': {'cls': 'npcs', 'id': 'drt'}, + '134': {'cls': 'npcs', 'id': 'dl'}, + '135': {'cls': 'npcs', 'id': 'dc'}, + '136': {'cls': 'npcs', 'id': 'dr'}, + '137': {'cls': 'npcs', 'id': 'dlb'}, + '138': {'cls': 'npcs', 'id': 'drb'}, + '139': {'cls': 'npc48', 'id': 'npc0'}, + '140': {'cls': 'npc48', 'id': 'npc1'}, + '141': {'cls': 'npc48', 'id': 'npc2'}, + '142': {'cls': 'npc48', 'id': 'npc3'}, + '143': {'cls': 'npc48', 'id': 'npc4'}, ////////////////////////// 其他部分 ////////////////////////// - // 161-200 其他(单向箭头、灯、箱子等等) - '161':{'cls': 'terrains', 'id': 'arrowUp', 'noPass': false}, // 单向上箭头 - '162':{'cls': 'terrains', 'id': 'arrowDown', 'noPass': false}, // 单向下箭头 - '163':{'cls': 'terrains', 'id': 'arrowLeft', 'noPass': false}, // 单向左箭头 - '164':{'cls': 'terrains', 'id': 'arrowRight', 'noPass': false}, // 单向右箭头 - '165':{'cls': 'terrains', 'id': 'light', 'trigger': 'changeLight', 'noPass': false}, // 灯 - '166':{'cls': 'terrains', 'id': 'darkLight', 'noPass': true}, // 暗灯 - '167':{'cls': 'terrains', 'id': 'ski', 'trigger': 'ski', 'noPass': false}, // 滑冰 - '168':{'cls': 'terrains', 'id': 'flower', 'noPass': false}, // 花 - '169':{'cls': 'terrains', 'id': 'box', 'trigger': 'pushBox', 'noPass': true}, // 箱子 - '170':{'cls': 'terrains', 'id': 'boxed', 'trigger': 'pushBox', 'noPass': true}, // 完成的箱子 - + // 171-200 其他(单向箭头、灯、箱子等等) + '171':{'cls': 'terrains', 'id': 'arrowUp', 'noPass': false}, // 单向上箭头 + '172':{'cls': 'terrains', 'id': 'arrowDown', 'noPass': false}, // 单向下箭头 + '173':{'cls': 'terrains', 'id': 'arrowLeft', 'noPass': false}, // 单向左箭头 + '174':{'cls': 'terrains', 'id': 'arrowRight', 'noPass': false}, // 单向右箭头 + '175':{'cls': 'terrains', 'id': 'light', 'trigger': 'changeLight', 'noPass': false}, // 灯 + '176':{'cls': 'terrains', 'id': 'darkLight', 'noPass': true}, // 暗灯 + '177':{'cls': 'terrains', 'id': 'ski', 'trigger': 'ski', 'noPass': false}, // 滑冰 + '178':{'cls': 'terrains', 'id': 'flower', 'noPass': false}, // 花 + '179':{'cls': 'terrains', 'id': 'box', 'trigger': 'pushBox', 'noPass': true}, // 箱子 + '180':{'cls': 'terrains', 'id': 'boxed', 'trigger': 'pushBox', 'noPass': true}, // 完成的箱子 ////////////////////////// 怪物部分 ////////////////////////// diff --git a/更新说明.txt b/更新说明.txt index 1fd64f41..e97f2ba6 100644 --- a/更新说明.txt +++ b/更新说明.txt @@ -1,19 +1,14 @@ HTML5魔塔样板V2.0.2 -编辑器添加“新建空白地图”按钮 √ -编辑器的地图自动保存 √ -大数据魔塔的支持(临界计算等) √ +编辑器添加新建和删除按钮;地图自动保存 √ +录像支持倒退(录像播放中每50步自动存档,最多存20个) 支持用gif动图作为某层楼的背景图 APP端也能下载录像 图片显示增加淡入淡出效果 -录像的倒退 地图临界显伤 √ -单个存档清理 -魔龙和章鱼添加到样板 -大数据魔塔的显示 √ -修改999999999的上界问题 √ -修复有时候无法输入ID的问题 -修复坐标等不能为负数的问题 √ +单个存档清理 √ +大数据魔塔的支持(临界计算等) √ +修复有时候无法输入ID的问题 √ 其他细节优化 -----------------------------------------------------------------------