diff --git a/libs/core.js b/libs/core.js index 23b1cb7f..74d8a868 100644 --- a/libs/core.js +++ b/libs/core.js @@ -2013,20 +2013,30 @@ core.prototype.drawMap = function (mapName, callback) { core.canvas.bg.drawImage(blockImage, 0, blockIcon * 32, 32, 32, x * 32, y * 32, 32, 32); } } - var mapArr = core.maps.getMapArr(mapName); + + // 如果存在png + if (core.isset(core.floors[mapName].png)) { + var png = core.floors[mapName].png; + if (core.isset(core.material.images.pngs[png])) { + core.canvas.bg.drawImage(core.material.images.pngs[png], 0, 0, 416, 416); + } + } + + var mapArray = core.maps.getMapArray(core.status.maps, mapName); for (var b = 0; b < mapBlocks.length; b++) { // 事件启用 var block = mapBlocks[b]; if (core.isset(block.event) && !(core.isset(block.enable) && !block.enable)) { if (block.event.cls == 'autotile') { - core.drawAutotile(core.canvas.event, mapArr, block, 32); - continue; + core.drawAutotile(core.canvas.event, mapArray, block, 32, 0, 0); } else { - blockIcon = core.material.icons[block.event.cls][block.event.id]; - blockImage = core.material.images[block.event.cls]; - core.canvas.event.drawImage(core.material.images[block.event.cls], 0, blockIcon * 32, 32, 32, block.x * 32, block.y * 32, 32, 32); - core.addGlobalAnimate(block.event.animate, block.x * 32, block.y * 32, blockIcon, blockImage); + if (block.event.id!='none') { + blockIcon = core.material.icons[block.event.cls][block.event.id]; + blockImage = core.material.images[block.event.cls]; + core.canvas.event.drawImage(core.material.images[block.event.cls], 0, blockIcon * 32, 32, 32, block.x * 32, block.y * 32, 32, 32); + core.addGlobalAnimate(block.event.animate, block.x * 32, block.y * 32, blockIcon, blockImage); + } } } } @@ -2088,10 +2098,8 @@ core.prototype.drawAutotile = function(ctx, mapArr, block, size, left, top){ return indexArr; } // 开始绘制autotile - var top = core.isset(top)? top : 0, left = core.isset(left) ? left : 0; var x = block.x, y = block.y; var pieceIndexs = getAutotileIndexs(x, y); - ctx.clearRect(x*size+left, y*size+top, size, size); //修正四个边角的固定搭配 if(pieceIndexs[0] == 13){ diff --git a/libs/maps.js b/libs/maps.js index 3eb6a7b0..2623b6c3 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -354,11 +354,29 @@ maps.prototype.load = function (data, floorId) { } return this.loadFloor(floorId, data[floorId]); } -maps.prototype.getMapArr = function (floorId){ - var floor = core.floors[floorId]; - var map=floor.map; +maps.prototype.getMapArray = function (maps, floorId){ + if (!core.isset(floorId)) { + var map = {}; + for (var id in maps) { + map[id] = this.getMapArray(maps, id); + } + return map; + } - return map; + var thisFloor = maps[floorId]; + + var blocks = []; + for (var x=0;x<13;x++) { + blocks[x]=[]; + for (var y=0;y<13;y++) { + blocks[x].push(0); + } + } + thisFloor.blocks.forEach(function (block) { + if (!(core.isset(block.enable) && !block.enable)) + blocks[block.y][block.x] = block.id; + }); + return blocks; } main.instance.maps = new maps(); \ No newline at end of file diff --git a/libs/ui.js b/libs/ui.js index 18c46f4f..f3635f61 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -1083,13 +1083,20 @@ ui.prototype.drawThumbnail = function(floorId, canvas, blocks, x, y, size, heroL core.canvas[canvas].drawImage(blockImage, 0, blockIcon * 32, 32, 32, x + i * persize, y + j * persize, persize, persize); } } - var mapArr = core.maps.getMapArr(floorId); + + if (core.isset(core.floors[floorId].png)) { + var png = core.floors[floorId].png; + if (core.isset(core.material.images.pngs[png])) { + core.canvas.ui.drawImage(core.material.images.pngs[png], x, y, size, size); + } + } + + var mapArray = core.maps.getMapArray(core.status.maps, floorId); for (var b in blocks) { var block = blocks[b]; if (core.isset(block.event) && !(core.isset(block.enable) && !block.enable)) { if (block.event.cls == 'autotile') { - core.drawAutotile(core.canvas.ui, mapArr, block, persize, x, y); - continue; + core.drawAutotile(core.canvas.ui, mapArray, block, persize, x, y); } else { if (block.event.id!='none') {