优化砍层插件,进一步缩减空间

This commit is contained in:
ckcz123 2020-10-27 15:21:06 +08:00
parent 08c632a5c5
commit dc4a77afcd
7 changed files with 32 additions and 12 deletions

View File

@ -1593,7 +1593,7 @@ callback: 落地或淡出后的回调函数,可选
loadFloor: fn(floorId?: string, map?: ?)
从文件或存档中加载某个楼层
loadMap: fn(data?: ?, floorId?: string)
loadMap: fn(data?: ?, floorId?: string, flags?: ?)
将存档中的地图信息重新读取出来
moveBlock: fn(x: number, y: number, steps: [string], time?: number, keep?: bool, callback?: fn())

View File

@ -3275,7 +3275,7 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [
},
"loadMap": {
"!doc": "将存档中的地图信息重新读取出来",
"!type": "fn(data?: ?, floorId?: string)"
"!type": "fn(data?: ?, floorId?: string, flags?: ?)"
},
"setBlock": {
"!doc": "转变图块<br/>例如core.setBlock(1, 0, 0); // 把地图左上角变成黄墙<br/>number: 新图块的数字(也支持纯数字字符串如'1'或id<br/>x: 横坐标<br/>y: 纵坐标<br/>floorId: 地图id不填视为当前地图",

View File

@ -611,7 +611,8 @@ editor_mappanel_wrapper = function (editor) {
"delayExecute": false,
"multiExecute": false,
"data": [
{"type": "openDoor"}
{"type": "openDoor"},
{"type": "setValue", "name": doorFlag, "operator": "=", "value": "null"},
]
}
};

View File

@ -1102,15 +1102,23 @@ events.prototype.checkAutoEvents = function () {
}
events.prototype.autoEventExecuting = function (symbol, value) {
var name = '_executing_autoEvent_' + symbol;
if (value == null) return core.hasFlag(name);
else core.setFlag(name, value || null);
var aei = core.getFlag('__aei__', []);
if (value == null) return aei.indexOf(symbol) >= 0;
else {
aei = aei.filter(function (one) { return one != symbol; });
if (value) aei.push(symbol);
core.setFlag('__aei__', aei);
}
}
events.prototype.autoEventExecuted = function (symbol, value) {
var name = '_executed_autoEvent_' + symbol;
if (value == null) return core.hasFlag(name);
else core.setFlag(name, value || null);
var aed = core.getFlag('__aed__', []);
if (value == null) return aed.indexOf(symbol) >= 0;
else {
aed = aed.filter(function (one) { return one != symbol; });
if (value) aed.push(symbol);
core.setFlag('__aed__', aed);
}
}
events.prototype.pushEventLoc = function (x, y, floorId) {

View File

@ -360,7 +360,7 @@ maps.prototype.saveMap = function (floorId) {
}
// 砍层状态:直接返回
if ((flags.__removed__ || []).indexOf(floorId) >= 0) {
return { deleted: true, canFlyTo: false, canFlyFrom: false, cannotViewMap: true };
return {};
}
var map = maps[floorId];
@ -385,10 +385,13 @@ maps.prototype._compressFloorData = function (map, floor) {
}
////// 将存档中的地图信息重新读取出来 //////
maps.prototype.loadMap = function (data, floorId) {
maps.prototype.loadMap = function (data, floorId, flags) {
if (!floorId) {
var map = {};
core.floorIds.forEach(function (id) {
if (core.inArray((flags||{}).__removed__, id)) {
data[id] = { deleted: true, canFlyTo: false, canFlyFrom: false, cannotViewMap: true };
}
map[id] = core.maps.loadFloor(id, data[id]);
})
return map;

View File

@ -255,12 +255,20 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
flags.__visited__ = flags.__visited__ || {};
flags.__removed__ = flags.__removed__ || [];
flags.__disabled__ = flags.__disabled__ || {};
flags.__leaveLoc__ = flags.__leaveLoc__ || {};
for (var i = fromIndex; i <= toIndex; ++i) {
var floorId = core.floorIds[i];
if (core.status.maps[floorId].deleted) continue;
delete flags.__visited__[floorId];
flags.__removed__.push(floorId);
delete flags.__disabled__[floorId];
delete flags.__leaveLoc__[floorId];
(core.status.autoEvents || []).forEach(function (event) {
if (event.floorId == floorId && event.currentFloor) {
core.autoEventExecuting(event.symbol, false);
core.autoEventExecuted(event.symbol, false);
}
});
core.status.maps[floorId].deleted = true;
core.status.maps[floorId].canFlyTo = false;
core.status.maps[floorId].canFlyFrom = false;

2
runtime.d.ts vendored
View File

@ -1738,7 +1738,7 @@ declare class maps {
saveMap(floorId?: string): any
/** 将存档中的地图信息重新读取出来 */
loadMap(data?: any, floorId?: string): any
loadMap(data?: any, floorId?: string, flags?: any): any
/** 更改地图画布的尺寸 */
resizeMap(floorId?: string): void