修复跟随者聚集和后退问题

This commit is contained in:
ckcz123 2020-05-09 22:25:35 +08:00
parent 8caf1f9b35
commit 461caa933e
5 changed files with 27 additions and 24 deletions

View File

@ -838,8 +838,8 @@ control.prototype._drawHero_getDrawObjs = function (direction, x, y, status, off
"width": core.material.images.images[t.name].width/4, "width": core.material.images.images[t.name].width/4,
"height": core.material.images.images[t.name].height/4, "height": core.material.images.images[t.name].height/4,
"heroIcon": heroIconArr[t.direction], "heroIcon": heroIconArr[t.direction],
"posx": 32*t.x - core.bigmap.offsetX + (t.stop?0:core.utils.scan[t.direction].x*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*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, "status": t.stop?"stop":status,
"index": index++ "index": index++
}); });
@ -1723,6 +1723,7 @@ control.prototype._doSL_load_afterGet = function (id, data) {
} }
core.ui.closePanel(); core.ui.closePanel();
core.loadData(data, function() { core.loadData(data, function() {
core.removeFlag('__fromLoad__');
core.drawTip("读档成功"); core.drawTip("读档成功");
if (id!="autoSave") { if (id!="autoSave") {
core.saves.saveIndex=id; core.saves.saveIndex=id;

View File

@ -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); var info = this._changeFloor_getInfo(floorId, stair, heroLoc, time);
if (info == null) { if (info == null) {
if (callback) callback(); if (callback) callback();
return; return;
} }
info.fromLoad = fromLoad;
floorId = info.floorId; floorId = info.floorId;
info.locked = core.status.lockControl; info.locked = core.status.lockControl;
@ -666,7 +665,7 @@ events.prototype._changeFloor_beforeChange = function (info, callback) {
} }
events.prototype._changeFloor_changing = 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) if (info.time == 0)
this._changeFloor_afterChange(info, callback); this._changeFloor_afterChange(info, callback);
@ -679,19 +678,19 @@ events.prototype._changeFloor_changing = function (info, callback) {
events.prototype._changeFloor_afterChange = function (info, callback) { events.prototype._changeFloor_afterChange = function (info, callback) {
if (!info.locked) core.unLockControl(); if (!info.locked) core.unLockControl();
core.status.replay.animate = false; core.status.replay.animate = false;
core.events.afterChangeFloor(info.floorId, info.fromLoad); core.events.afterChangeFloor(info.floorId);
if (callback) callback(); if (callback) callback();
} }
events.prototype.changingFloor = function (floorId, heroLoc, fromLoad) { events.prototype.changingFloor = function (floorId, heroLoc) {
this.eventdata.changingFloor(floorId, heroLoc, fromLoad); this.eventdata.changingFloor(floorId, heroLoc);
} }
////// 转换楼层结束的事件 ////// ////// 转换楼层结束的事件 //////
events.prototype.afterChangeFloor = function (floorId, fromLoad) { events.prototype.afterChangeFloor = function (floorId) {
if (main.mode != 'play') return; if (main.mode != 'play') return;
return this.eventdata.afterChangeFloor(floorId, fromLoad); return this.eventdata.afterChangeFloor(floorId);
} }
////// 是否到达过某个楼层 ////// ////// 是否到达过某个楼层 //////

View File

@ -92,15 +92,16 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
}); });
}) })
}, },
"changingFloor": function (floorId, heroLoc, fromLoad) { "changingFloor": function (floorId, heroLoc) {
// 正在切换楼层过程中执行的操作;此函数的执行时间是“屏幕完全变黑“的那一刻 // 正在切换楼层过程中执行的操作;此函数的执行时间是“屏幕完全变黑“的那一刻
// floorId为要切换到的楼层IDheroLoc表示勇士切换到的位置fromLoad表示是否是从读档造成的切换 // floorId为要切换到的楼层IDheroLoc表示勇士切换到的位置
// ---------- 此时还没有进行切换当前floorId还是原来的 ---------- // // ---------- 此时还没有进行切换当前floorId还是原来的 ---------- //
var currentId = core.status.floorId || null; // 获得当前的floorId可能为null var currentId = core.status.floorId || null; // 获得当前的floorId可能为null
var fromLoad = core.hasFlag('__fromLoad__'); // 是否是读档造成的切换
if (!fromLoad) { if (!fromLoad) {
if (!core.hasFlag("__leaveLoc__")) core.setFlag("__leaveLoc__", {}); 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进行判定比如删除某些自定义图层等 // 可以对currentId进行判定比如删除某些自定义图层等
@ -110,6 +111,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
// 重置画布尺寸 // 重置画布尺寸
core.maps.resizeMap(floorId); core.maps.resizeMap(floorId);
// 设置勇士的位置
core.status.hero.loc = heroLoc;
// 检查重生怪并重置 // 检查重生怪并重置
if (!fromLoad) { if (!fromLoad) {
core.status.maps[floorId].blocks.forEach(function (block) { core.status.maps[floorId].blocks.forEach(function (block) {
@ -117,10 +120,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
block.disable = false; block.disable = false;
} }
}); });
core.control.gatherFollowers();
} }
// 设置勇士的位置
core.status.hero.loc = heroLoc;
core.control.gatherFollowers();
// ---------- 重绘新地图这一步将会设置core.status.floorId ---------- // // ---------- 重绘新地图这一步将会设置core.status.floorId ---------- //
core.drawMap(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.events.recoverEvents(core.getFlag("__events__"));
core.removeFlag("__events__"); core.removeFlag("__events__");
} else { } 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.width = core.material.images.images[icon].width / 4;
core.material.icons.hero.height = core.material.images.images[icon].height / 4; core.material.icons.hero.height = core.material.images.images[icon].height / 4;
} }
core.setFlag('__fromLoad__', true);
// TODO增加自己的一些读档处理 // TODO增加自己的一些读档处理
@ -1000,7 +1002,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
} }
if (callback) callback(); if (callback) callback();
}, true); });
}, },
"updateStatusBar": function () { "updateStatusBar": function () {
// 更新状态栏 // 更新状态栏

View File

@ -558,8 +558,8 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
}; };
// 更变楼层的行为追加,重置镜头 // 更变楼层的行为追加,重置镜头
events.prototype.changingFloor = function (floorId, heroLoc, fromLoad) { events.prototype.changingFloor = function (floorId, heroLoc) {
this.eventdata.changingFloor(floorId, heroLoc, fromLoad); this.eventdata.changingFloor(floorId, heroLoc);
core.plugin.camera.resetCamera(); core.plugin.camera.resetCamera();
}; };

View File

@ -16,7 +16,7 @@
(已完成!) 15. “等待用户操作”虽然提供了场合块但还不支持将多个按键的场合合并比如空格、回车和C键一般会被作者予以合并执行内容如果只是大致相同也值得合并在块内由作者根据flag再行分歧建议支持一下 (已完成!) 15. “等待用户操作”虽然提供了场合块但还不支持将多个按键的场合合并比如空格、回车和C键一般会被作者予以合并执行内容如果只是大致相同也值得合并在块内由作者根据flag再行分歧建议支持一下
(已完成!) 16. “绘制描边文本”事件建议加一个“描边颜色”参数,目前只能描黑边 (已完成!) 16. “绘制描边文本”事件建议加一个“描边颜色”参数,目前只能描黑边
(已完成!) 17. “设置画布属性”的基准线建议增加'hanging'和'ideographic'这两种模式 (已完成!) 17. “设置画布属性”的基准线建议增加'hanging'和'ideographic'这两种模式
18. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug加大行距又会导致第一行的纵坐标难以估计此bug在道具商店和1.3倍行距英文看的很明显 (已完成!) 18. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug加大行距又会导致第一行的纵坐标难以估计此bug在道具商店和1.3倍行距英文看的很明显
19.(来自群友)建议给第一代全局商店的子选项像“显示选择项”一样提供图标、颜色和出现条件(注意长按的适配) 19.(来自群友)建议给第一代全局商店的子选项像“显示选择项”一样提供图标、颜色和出现条件(注意长按的适配)
(已完成!) 20. 很多事件对应的脚本有默认参数但在事件中省略参数却会变成0建议修复 (已完成!) 20. 很多事件对应的脚本有默认参数但在事件中省略参数却会变成0建议修复
@ -34,6 +34,7 @@
转向:顺时针/逆时针/反向 转向:顺时针/逆时针/反向
事件转向 事件转向
(已完成!) 合并数值操作事件 (已完成!) 合并数值操作事件
fromLoad聚集问题
(不处理) 0. 部分文案的修改,如“地图编辑器”(启动服务.exe中、“enemys”、“snipe” (不处理) 0. 部分文案的修改,如“地图编辑器”(启动服务.exe中、“enemys”、“snipe”
@ -113,7 +114,7 @@
(已完成!) 72. “绘制描边文本”事件希望加一个“描边颜色”参数,目前只能描黑边 (已完成!) 72. “绘制描边文本”事件希望加一个“描边颜色”参数,目前只能描黑边
73. 画弧既然有现成的API那建议也作为UI绘制事件提供。甚至希望提供画椭圆功能长短轴水平或铅直的那种参数为中心坐标和长短轴长度 73. 画弧既然有现成的API那建议也作为UI绘制事件提供。甚至希望提供画椭圆功能长短轴水平或铅直的那种参数为中心坐标和长短轴长度
(已完成!) 74. “设置画布属性”的基准线建议增加'hanging'和'ideographic'这两种模式 (已完成!) 74. “设置画布属性”的基准线建议增加'hanging'和'ideographic'这两种模式
75. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug加大行距又会导致第一行的纵坐标难以估计此bug在道具商店和1.3倍行距英文看的很明显 (已完成!) 75. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug加大行距又会导致第一行的纵坐标难以估计此bug在道具商店和1.3倍行距英文看的很明显
76. (来自群友)建议给第一代全局商店像“显示选择项”一样提供图标、颜色和出现条件 76. (来自群友)建议给第一代全局商店像“显示选择项”一样提供图标、颜色和出现条件
(不处理) 77. 建议给core.searchBlock()新增问号通配符(匹配一个任意字符) (不处理) 77. 建议给core.searchBlock()新增问号通配符(匹配一个任意字符)
(已完成!) 78. 建议移除core.setInitData()并将其内容写在startText以方便作者仿照修改 (已完成!) 78. 建议移除core.setInitData()并将其内容写在startText以方便作者仿照修改