resetMap & fix autotileObjs in load

This commit is contained in:
ckcz123 2018-12-11 16:47:21 +08:00
parent 0fc267be14
commit 93dceaa7b8
2 changed files with 14 additions and 11 deletions

View File

@ -135,11 +135,15 @@ core.changeFloor('MT5', null, {'x': 3, 'y': 6}, 0) 无动画切换到MT5层的(3
core.resetMap()
重置当前楼层地图。
重置当前楼层地图和楼层属性
当我们修改某一层地图后,进游戏读档,会发现修改的内容并没有被更新上去。
这是因为H5的存档是会存下来每一个楼层的地图的读档会从档里面获得地图信息。
此时,如果我们在某一层地图执行 core.resetMap() ,则可以立刻从剧本中读取并重置当前楼层地图。
已经被修改过的内容也会相应出现。
此函数参数有三种形式:
- 不加任何参数表示重置当前层core.resetMap()
- 加上一个floorId表示重置某一层core.resetMap("MT1")
- 使用一个数组表示重置若干层core.resetMap(["MT1", "MT2", "MT3"])
R

View File

@ -476,7 +476,7 @@ maps.prototype.drawBgFgMap = function (floorId, canvas, name, animate) {
}
}
}
core.status.autotileAnimateObjs[name+"map"] = core.clone(arr);
if (animate) core.status.autotileAnimateObjs[name+"map"] = core.clone(arr);
}
////// 绘制某张地图 //////
@ -1449,13 +1449,12 @@ maps.prototype.setBgFgMap = function (type, name, loc, floorId, callback) {
maps.prototype.resetMap = function(floorId) {
floorId = floorId || core.status.floorId;
if (!core.isset(floorId)) return;
core.status.maps[floorId] = this.loadFloor(floorId);
if (floorId==core.status.floorId) {
this.drawMap(floorId, function () {
core.drawTip("地图重置成功");
})
}
else {
core.drawTip(floorId+"地图重置成功");
}
if (typeof floorId == 'string') floorId = [floorId];
var needRefresh = false;
floorId.forEach(function (t) {
core.status.maps[t] = core.maps.loadFloor(t);
if (t == core.status.floorId) needRefresh = true;
});
if (needRefresh) this.drawMap(core.status.floorId);
core.drawTip("地图重置成功");
}