修复跟随者聚集和后退问题
This commit is contained in:
parent
8caf1f9b35
commit
461caa933e
@ -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;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
////// 是否到达过某个楼层 //////
|
||||
|
||||
@ -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 () {
|
||||
// 更新状态栏
|
||||
|
||||
@ -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();
|
||||
};
|
||||
|
||||
|
||||
@ -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以方便作者仿照修改
|
||||
|
||||
Loading…
Reference in New Issue
Block a user