compressMap __initFloorMap

This commit is contained in:
oc 2019-02-25 22:25:26 +08:00
parent 8170d30861
commit 4ae6decb8a

View File

@ -178,20 +178,42 @@ maps.prototype.initMaps = function (floorIds) {
return maps;
}
maps.prototype.__initFloorMap = function (floorId) {
var map = core.clone(core.floors[floorId].map);
var mw = core.floors[floorId].width || 13;
var mh = core.floors[floorId].height || 13;
for (var x=0;x<mh;x++) {
if (!core.isset(map[x])) map[x] = [];
for (var y=0;y<mw;y++) {
if (!core.isset(map[x][y])) map[x][y]=0;
// check "disable"
var event = core.floors[floorId].events[y+","+x];
if (core.isset(event) && event.enable === false && main.mode == 'play') {
map[x][y] += ":f";
}
}
}
return map;
}
////// 压缩地图
maps.prototype.compressMap = function (mapArr, floorId) {
if (core.utils.same(mapArr, core.floors[floorId].map)) return null;
var floorMap = this.__initFloorMap(floorId);
if (core.utils.same(mapArr, floorMap)) return null;
var mw = core.floors[floorId].width || 13;
var mh = core.floors[floorId].height || 13;
for (var x=0;x<mh;x++) {
if (core.utils.same(mapArr[x], core.floors[floorId].map[x]||[])) {
if (core.utils.same(mapArr[x], floorMap[x])) {
// 没有改变的行直接删掉记成0
mapArr[x] = 0;
}
else {
for (var y=0;y<mw;y++) {
if (mapArr[x][y] === (core.floors[floorId].map[x]||[])[y]) {
if (mapArr[x][y] === floorMap[x][y]) {
// 没有改变的数据记成-1
mapArr[x][y] = -1;
}
@ -203,19 +225,19 @@ maps.prototype.compressMap = function (mapArr, floorId) {
////// 解压缩地图
maps.prototype.decompressMap = function (mapArr, floorId) {
if (!core.isset(mapArr)) return core.clone(core.floors[floorId].map);
var floorMap = this.__initFloorMap(floorId);
if (!core.isset(mapArr)) return floorMap;
var mw = core.floors[floorId].width || 13;
var mh = core.floors[floorId].height || 13;
for (var x=0;x<mh;x++) {
var floorMap = core.floors[floorId].map[x] || [];
if (mapArr[x] === 0) {
mapArr[x] = floorMap;
mapArr[x] = floorMap[x];
}
else {
for (var y=0;y<mw;y++) {
if (mapArr[x][y] === -1) {
mapArr[x][y] = floorMap[y] || 0;
mapArr[x][y] = floorMap[x][y];
}
}
}