From 461caa933edd91b55b5abf609b51d1aded5f10fc Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 9 May 2020 22:25:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B7=9F=E9=9A=8F=E8=80=85?= =?UTF-8?q?=E8=81=9A=E9=9B=86=E5=92=8C=E5=90=8E=E9=80=80=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/control.js | 5 +++-- libs/events.js | 15 +++++++-------- project/functions.js | 22 ++++++++++++---------- project/plugins.js | 4 ++-- v2.x-final更新.txt | 5 +++-- 5 files changed, 27 insertions(+), 24 deletions(-) diff --git a/libs/control.js b/libs/control.js index 0218da0b..a4c57856 100644 --- a/libs/control.js +++ b/libs/control.js @@ -838,8 +838,8 @@ control.prototype._drawHero_getDrawObjs = function (direction, x, y, status, off "width": core.material.images.images[t.name].width/4, "height": core.material.images.images[t.name].height/4, "heroIcon": heroIconArr[t.direction], - "posx": 32*t.x - core.bigmap.offsetX + (t.stop?0:core.utils.scan[t.direction].x*offset), - "posy": 32*t.y - core.bigmap.offsetY + (t.stop?0:core.utils.scan[t.direction].y*offset), + "posx": 32*t.x - core.bigmap.offsetX + (t.stop?0:core.utils.scan[t.direction].x*Math.abs(offset)), + "posy": 32*t.y - core.bigmap.offsetY + (t.stop?0:core.utils.scan[t.direction].y*Math.abs(offset)), "status": t.stop?"stop":status, "index": index++ }); @@ -1723,6 +1723,7 @@ control.prototype._doSL_load_afterGet = function (id, data) { } core.ui.closePanel(); core.loadData(data, function() { + core.removeFlag('__fromLoad__'); core.drawTip("读档成功"); if (id!="autoSave") { core.saves.saveIndex=id; diff --git a/libs/events.js b/libs/events.js index 944572dd..5747a213 100644 --- a/libs/events.js +++ b/libs/events.js @@ -563,13 +563,12 @@ events.prototype._sys_changeFloor = function (data, callback) { } ////// 楼层切换 ////// -events.prototype.changeFloor = function (floorId, stair, heroLoc, time, callback, fromLoad) { +events.prototype.changeFloor = function (floorId, stair, heroLoc, time, callback) { var info = this._changeFloor_getInfo(floorId, stair, heroLoc, time); if (info == null) { if (callback) callback(); return; } - info.fromLoad = fromLoad; floorId = info.floorId; info.locked = core.status.lockControl; @@ -666,7 +665,7 @@ events.prototype._changeFloor_beforeChange = function (info, callback) { } events.prototype._changeFloor_changing = function (info, callback) { - this.changingFloor(info.floorId, info.heroLoc, info.fromLoad); + this.changingFloor(info.floorId, info.heroLoc); if (info.time == 0) this._changeFloor_afterChange(info, callback); @@ -679,19 +678,19 @@ events.prototype._changeFloor_changing = function (info, callback) { events.prototype._changeFloor_afterChange = function (info, callback) { if (!info.locked) core.unLockControl(); core.status.replay.animate = false; - core.events.afterChangeFloor(info.floorId, info.fromLoad); + core.events.afterChangeFloor(info.floorId); if (callback) callback(); } -events.prototype.changingFloor = function (floorId, heroLoc, fromLoad) { - this.eventdata.changingFloor(floorId, heroLoc, fromLoad); +events.prototype.changingFloor = function (floorId, heroLoc) { + this.eventdata.changingFloor(floorId, heroLoc); } ////// 转换楼层结束的事件 ////// -events.prototype.afterChangeFloor = function (floorId, fromLoad) { +events.prototype.afterChangeFloor = function (floorId) { if (main.mode != 'play') return; - return this.eventdata.afterChangeFloor(floorId, fromLoad); + return this.eventdata.afterChangeFloor(floorId); } ////// 是否到达过某个楼层 ////// diff --git a/project/functions.js b/project/functions.js index 0cd9f145..ebd1681a 100644 --- a/project/functions.js +++ b/project/functions.js @@ -92,15 +92,16 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = }); }) }, - "changingFloor": function (floorId, heroLoc, fromLoad) { + "changingFloor": function (floorId, heroLoc) { // 正在切换楼层过程中执行的操作;此函数的执行时间是“屏幕完全变黑“的那一刻 - // floorId为要切换到的楼层ID;heroLoc表示勇士切换到的位置;fromLoad表示是否是从读档造成的切换 + // floorId为要切换到的楼层ID;heroLoc表示勇士切换到的位置 // ---------- 此时还没有进行切换,当前floorId还是原来的 ---------- // var currentId = core.status.floorId || null; // 获得当前的floorId,可能为null + var fromLoad = core.hasFlag('__fromLoad__'); // 是否是读档造成的切换 if (!fromLoad) { if (!core.hasFlag("__leaveLoc__")) core.setFlag("__leaveLoc__", {}); - if (currentId != null) core.getFlag("__leaveLoc__")[currentId] = core.status.hero.loc; + if (currentId != null) core.getFlag("__leaveLoc__")[currentId] = core.clone(core.status.hero.loc); } // 可以对currentId进行判定,比如删除某些自定义图层等 @@ -110,6 +111,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // 重置画布尺寸 core.maps.resizeMap(floorId); + // 设置勇士的位置 + core.status.hero.loc = heroLoc; // 检查重生怪并重置 if (!fromLoad) { core.status.maps[floorId].blocks.forEach(function (block) { @@ -117,10 +120,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = block.disable = false; } }); + core.control.gatherFollowers(); } - // 设置勇士的位置 - core.status.hero.loc = heroLoc; - core.control.gatherFollowers(); // ---------- 重绘新地图;这一步将会设置core.status.floorId ---------- // core.drawMap(floorId); @@ -149,12 +150,12 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // ...可以新增一些其他内容,比如创建个画布在右上角显示什么内容等等 }, - "afterChangeFloor": function (floorId, fromLoad) { + "afterChangeFloor": function (floorId) { // 转换楼层结束的事件;此函数会在整个楼层切换完全结束后再执行 - // floorId是切换到的楼层;fromLoad若为true则代表是从读档行为造成的楼层切换 + // floorId是切换到的楼层 // 如果是读档,则进行检查(是否需要恢复事件) - if (fromLoad) { + if (core.hasFlag('__fromLoad__')) { core.events.recoverEvents(core.getFlag("__events__")); core.removeFlag("__events__"); } else { @@ -989,6 +990,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = core.material.icons.hero.width = core.material.images.images[icon].width / 4; core.material.icons.hero.height = core.material.images.images[icon].height / 4; } + core.setFlag('__fromLoad__', true); // TODO:增加自己的一些读档处理 @@ -1000,7 +1002,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = } if (callback) callback(); - }, true); + }); }, "updateStatusBar": function () { // 更新状态栏 diff --git a/project/plugins.js b/project/plugins.js index b142ff03..3f25e0f6 100644 --- a/project/plugins.js +++ b/project/plugins.js @@ -558,8 +558,8 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = }; // 更变楼层的行为追加,重置镜头 - events.prototype.changingFloor = function (floorId, heroLoc, fromLoad) { - this.eventdata.changingFloor(floorId, heroLoc, fromLoad); + events.prototype.changingFloor = function (floorId, heroLoc) { + this.eventdata.changingFloor(floorId, heroLoc); core.plugin.camera.resetCamera(); }; diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index c30d8086..5a8fd939 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -16,7 +16,7 @@ (已完成!) 15. “等待用户操作”虽然提供了场合块但还不支持将多个按键的场合合并(比如空格、回车和C键一般会被作者予以合并,执行内容如果只是大致相同也值得合并,在块内由作者根据flag再行分歧),建议支持一下 (已完成!) 16. “绘制描边文本”事件建议加一个“描边颜色”参数,目前只能描黑边 (已完成!) 17. “设置画布属性”的基准线建议增加'hanging'和'ideographic'这两种模式 -18. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug(加大行距又会导致第一行的纵坐标难以估计),此bug在道具商店和1.3倍行距英文看的很明显 +(已完成!) 18. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug(加大行距又会导致第一行的纵坐标难以估计),此bug在道具商店和1.3倍行距英文看的很明显 19.(来自群友)建议给第一代全局商店的子选项像“显示选择项”一样提供图标、颜色和出现条件(注意长按的适配) (已完成!) 20. 很多事件对应的脚本有默认参数,但在事件中省略参数却会变成0,建议修复 @@ -34,6 +34,7 @@ 转向:顺时针/逆时针/反向 事件转向 (已完成!) 合并数值操作事件 +fromLoad,聚集问题 (不处理) 0. 部分文案的修改,如“地图编辑器”(启动服务.exe中)、“enemys”、“snipe” @@ -113,7 +114,7 @@ (已完成!) 72. “绘制描边文本”事件希望加一个“描边颜色”参数,目前只能描黑边 73. 画弧既然有现成的API,那建议也作为UI绘制事件提供。甚至希望提供画椭圆功能(长短轴水平或铅直的那种)参数为中心坐标和长短轴长度 (已完成!) 74. “设置画布属性”的基准线建议增加'hanging'和'ideographic'这两种模式 -75. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug(加大行距又会导致第一行的纵坐标难以估计),此bug在道具商店和1.3倍行距英文看的很明显 +(已完成!) 75. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug(加大行距又会导致第一行的纵坐标难以估计),此bug在道具商店和1.3倍行距英文看的很明显 76. (来自群友)建议给第一代全局商店像“显示选择项”一样提供图标、颜色和出现条件 (不处理) 77. 建议给core.searchBlock()新增问号通配符(匹配一个任意字符) (已完成!) 78. 建议移除core.setInitData()并将其内容写在startText以方便作者仿照修改