Bigmap prototype

This commit is contained in:
ckcz123 2020-06-30 19:11:19 +08:00
parent cd94acd04d
commit 835d34e6c3
12 changed files with 137 additions and 72 deletions

View File

@ -313,9 +313,9 @@ core.events.openShop = function (shopId, needVisited) {
```js ```js
var drawMap = core.maps.drawMap; // 先把原始函数用一个变量记录下来 var drawMap = core.maps.drawMap; // 先把原始函数用一个变量记录下来
core.maps.drawMap = function (floorId, callback) { core.maps.drawMap = function (floorId) {
console.log("drawMap..."); // 控制台打出一条信息 console.log("drawMap..."); // 控制台打出一条信息
return drawMap.call(core.maps, floorId, callback); // 需要使用`call`来告知this是core.maps return drawMap.call(core.maps, floorId); // 需要使用`call`来告知this是core.maps
} }
``` ```

View File

@ -1867,6 +1867,14 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [
"!type": "number", "!type": "number",
"!doc": "大地图视角纵向偏移量" "!doc": "大地图视角纵向偏移量"
}, },
"posX": {
"!type": "number",
"!doc": "大地图视角横向基准格"
},
"posY": {
"!type": "number",
"!doc": "大地图视角纵向基准格"
},
"tempCanvas": { "tempCanvas": {
"!type": "CanvasRenderingContext2D", "!type": "CanvasRenderingContext2D",
"!doc": "临时画布" "!doc": "临时画布"

View File

@ -1 +1 @@
{"lastUsed":[],"foldPerCol":50,"folded":false,"editorLastFloorId":"sample0","disableBlocklyReplace":false,"disableBlocklyExpandCompare":false,"shortcut":{"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0}} {"lastUsed":[],"foldPerCol":50,"folded":false,"editorLastFloorId":"sample2","disableBlocklyReplace":false,"disableBlocklyExpandCompare":false,"shortcut":{"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0}}

View File

@ -223,6 +223,18 @@ editor.prototype.init = function (callback) {
for (var one in canvases) { for (var one in canvases) {
canvases[one].width = canvases[one].height = core.__PIXELS__; canvases[one].width = canvases[one].height = core.__PIXELS__;
} }
var csize = core.__PIXELS__ + 64;
core.bigmap.canvas.forEach(function (cn) {
core.canvas[cn].canvas.setAttribute("width", csize);
core.canvas[cn].canvas.setAttribute("height", csize);
core.canvas[cn].canvas.style.width = csize * core.domStyle.scale + "px";
core.canvas[cn].canvas.style.height = csize * core.domStyle.scale + "px";
core.canvas[cn].translate(32, 32);
if (main.mode === 'editor' && editor.isMobile) {
core.canvas[cn].canvas.style.width = csize / core.__PIXELS__ * 96 + "vw";
core.canvas[cn].canvas.style.height = csize / core.__PIXELS__ * 96 + "vw";
}
});
core.resetGame(core.firstData.hero, null, core.firstData.floorId, core.clone(core.initStatus.maps)); core.resetGame(core.firstData.hero, null, core.firstData.floorId, core.clone(core.initStatus.maps));
var lastFloorId = editor.config.get('editorLastFloorId', core.status.floorId); var lastFloorId = editor.config.get('editorLastFloorId', core.status.floorId);

View File

@ -924,8 +924,19 @@ control.prototype.addGameCanvasTranslate = function (x, y) {
////// 更新视野范围 ////// ////// 更新视野范围 //////
control.prototype.updateViewport = function() { control.prototype.updateViewport = function() {
// 当前是否应该重绘?
if (core.bigmap.offsetX >= core.bigmap.posX * 32 + 32
|| core.bigmap.offsetX <= core.bigmap.posX * 32 - 32
|| core.bigmap.offsetY >= core.bigmap.posY * 32 + 32
|| core.bigmap.offsetY <= core.bigmap.posY * 32 - 32) {
core.bigmap.posX = parseInt(core.bigmap.offsetX / 32);
core.bigmap.posY = parseInt(core.bigmap.offsetY / 32);
// redraw
core.redrawMap();
}
core.bigmap.canvas.forEach(function(cn){ core.bigmap.canvas.forEach(function(cn){
core.control.setGameCanvasTranslate(cn,-core.bigmap.offsetX,-core.bigmap.offsetY); core.control.setGameCanvasTranslate(cn, -(core.bigmap.offsetX - 32 * core.bigmap.posX) - 32, -(core.bigmap.offsetY - 32 * core.bigmap.posY) - 32);
}); });
// ------ 路线 // ------ 路线
core.relocateCanvas('route', core.status.automaticRoute.offsetX - core.bigmap.offsetX, core.status.automaticRoute.offsetY - core.bigmap.offsetY); core.relocateCanvas('route', core.status.automaticRoute.offsetX - core.bigmap.offsetX, core.status.automaticRoute.offsetY - core.bigmap.offsetY);
@ -2856,9 +2867,17 @@ control.prototype._resize_canvas = function (obj) {
core.dom.gameDraw.style.right = 0; core.dom.gameDraw.style.right = 0;
core.dom.gameDraw.style.border = obj.border; core.dom.gameDraw.style.border = obj.border;
// resize bigmap // resize bigmap
core.bigmap.canvas.forEach(function(cn){ var csize = core.__PIXELS__ + 64;
core.canvas[cn].canvas.style.width = core.bigmap.width * 32 * core.domStyle.scale + "px"; core.bigmap.canvas.forEach(function (cn) {
core.canvas[cn].canvas.style.height = core.bigmap.height * 32 * core.domStyle.scale + "px"; core.canvas[cn].canvas.setAttribute("width", csize);
core.canvas[cn].canvas.setAttribute("height", csize);
core.canvas[cn].canvas.style.width = csize * core.domStyle.scale + "px";
core.canvas[cn].canvas.style.height = csize * core.domStyle.scale + "px";
core.canvas[cn].translate(32, 32);
if (main.mode === 'editor' && editor.isMobile) {
core.canvas[cn].canvas.style.width = csize / core.__PIXELS__ * 96 + "vw";
core.canvas[cn].canvas.style.height = csize / core.__PIXELS__ * 96 + "vw";
}
}); });
// resize dynamic canvas // resize dynamic canvas
for (var name in core.dymCanvas) { for (var name in core.dymCanvas) {

View File

@ -93,6 +93,8 @@ function core() {
canvas: ["bg", "event", "event2", "fg", "damage"], canvas: ["bg", "event", "event2", "fg", "damage"],
offsetX: 0, // in pixel offsetX: 0, // in pixel
offsetY: 0, offsetY: 0,
posX: 0, //
posY: 0,
width: this.__SIZE__, // map width and height width: this.__SIZE__, // map width and height
height: this.__SIZE__, height: this.__SIZE__,
tempCanvas: null, // A temp canvas for drawing tempCanvas: null, // A temp canvas for drawing

View File

@ -379,18 +379,6 @@ maps.prototype.resizeMap = function (floorId) {
if (!floorId) return; if (!floorId) return;
core.bigmap.width = core.floors[floorId].width; core.bigmap.width = core.floors[floorId].width;
core.bigmap.height = core.floors[floorId].height; core.bigmap.height = core.floors[floorId].height;
var cwidth = core.bigmap.width * 32;
var cheight = core.bigmap.height * 32;
core.bigmap.canvas.forEach(function (cn) {
core.canvas[cn].canvas.setAttribute("width", cwidth);
core.canvas[cn].canvas.setAttribute("height", cheight);
core.canvas[cn].canvas.style.width = cwidth * core.domStyle.scale + "px";
core.canvas[cn].canvas.style.height = cheight * core.domStyle.scale + "px";
if (main.mode === 'editor' && editor.isMobile) {
core.canvas[cn].canvas.style.width = core.bigmap.width * 32 / core.__PIXELS__ * 96 + "vw";
core.canvas[cn].canvas.style.height = core.bigmap.height * 32 / core.__PIXELS__ * 96 + "vw";
}
});
} }
////// 将当前地图重新变成二维数组形式 ////// ////// 将当前地图重新变成二维数组形式 //////
@ -758,9 +746,10 @@ maps.prototype.drawBlock = function (block, animate) {
if (!redraw) animate = 0; if (!redraw) animate = 0;
var x = block.x, y = block.y; var x = block.x, y = block.y;
// --- 在界面外的动画不绘制 // --- 在界面外的动画不绘制
if (redraw && block.event.animate > 1 &&
(32 * x < core.bigmap.offsetX - 64 || 32 * x > core.bigmap.offsetX + core.__PIXELS__ + 32 // 判定是否绘制
|| 32 * y < core.bigmap.offsetY - 64 || 32 * y > core.bigmap.offsetY + core.__PIXELS__ + 32 + 16)) { var posX = core.bigmap.posX, posY = core.bigmap.posY;
if (x < posX - 1 || y < posY - 1 || x > posX + core.__SIZE__ || y > posY + core.__SIZE__ + 1) { // +1 for 48 height
return; return;
} }
@ -775,27 +764,31 @@ maps.prototype.drawBlock = function (block, animate) {
maps.prototype._drawBlockInfo = function (blockInfo, x, y) { maps.prototype._drawBlockInfo = function (blockInfo, x, y) {
var image = blockInfo.image, posX = blockInfo.posX, posY = blockInfo.posY, height = blockInfo.height; var image = blockInfo.image, posX = blockInfo.posX, posY = blockInfo.posY, height = blockInfo.height;
var px = 32 * x - 32 * core.bigmap.posX;
var py = 32 * y - 32 * core.bigmap.posY;
core.clearMap('event', x * 32, y * 32, 32, 32); core.clearMap('event', px, py, 32, 32);
core.drawImage('event', image, posX * 32, posY * height + height - 32, 32, 32, x * 32, y * 32, 32, 32); core.drawImage('event', image, posX * 32, posY * height + height - 32, 32, 32, px, py, 32, 32);
if (height > 32) { if (height > 32) {
core.clearMap('event2', x * 32, y * 32 + 32 - height, 32, height - 32) core.clearMap('event2', px, py + 32 - height, 32, height - 32)
core.drawImage('event2', image, posX * 32, posY * height, 32, height - 32, x * 32, y * 32 + 32 - height, 32, height - 32); core.drawImage('event2', image, posX * 32, posY * height, 32, height - 32, px, py + 32 - height, 32, height - 32);
} }
} }
maps.prototype._drawBlockInfo_bgfg = function (blockInfo, name, x, y) { maps.prototype._drawBlockInfo_bgfg = function (blockInfo, name, x, y) {
var image = blockInfo.image, posX = blockInfo.posX, posY = blockInfo.posY, height = blockInfo.height; var image = blockInfo.image, posX = blockInfo.posX, posY = blockInfo.posY, height = blockInfo.height;
var px = 32 * x - 32 * core.bigmap.posX;
var py = 32 * y - 32 * core.bigmap.posY;
core.clearMap(name, x * 32, y * 32 + 32 - height, 32, height); core.clearMap(name, px, py + 32 - height, 32, height);
if (name == 'bg') { if (name == 'bg') {
if (height > 32) { if (height > 32) {
core.clearMap('bg', x * 32, y * 32 - 32, 32, 32); core.clearMap('bg', px, py - 32, 32, 32);
core.drawImage('bg', core.material.groundCanvas.canvas, x * 32, y * 32 - 32); core.drawImage('bg', core.material.groundCanvas.canvas, px, py - 32);
} }
core.drawImage('bg', core.material.groundCanvas.canvas, x * 32, y * 32); core.drawImage('bg', core.material.groundCanvas.canvas, px, py);
} }
core.drawImage(name, image, posX * 32, posY * height, 32, height, x * 32, y * 32 + 32 - height, 32, height); core.drawImage(name, image, posX * 32, posY * height, 32, height, px, py + 32 - height, 32, height);
} }
////// 生成groundPattern ////// ////// 生成groundPattern //////
@ -812,12 +805,9 @@ maps.prototype.generateGroundPattern = function (floorId) {
} }
////// 绘制某张地图 ////// ////// 绘制某张地图 //////
maps.prototype.drawMap = function (floorId, callback) { maps.prototype.drawMap = function (floorId) {
floorId = floorId || core.status.floorId; floorId = floorId || core.status.floorId;
if (!floorId) { if (!floorId) return;
if (callback) callback();
return;
}
core.clearMap('all'); core.clearMap('all');
this.generateGroundPattern(floorId); this.generateGroundPattern(floorId);
core.status.floorId = floorId; core.status.floorId = floorId;
@ -831,7 +821,15 @@ maps.prototype.drawMap = function (floorId, callback) {
} }
core.drawHero(); core.drawHero();
core.updateStatusBar(); core.updateStatusBar();
if (callback) callback(); }
////// 重绘某张地图 //////
maps.prototype.redrawMap = function () {
core.bigmap.canvas.forEach(function (one) {
core.clearMap(one);
});
this._drawMap_drawAll();
// core.redrawDamage();
} }
maps.prototype._drawMap_drawAll = function (floorId) { maps.prototype._drawMap_drawAll = function (floorId) {
@ -843,6 +841,14 @@ maps.prototype._drawMap_drawAll = function (floorId) {
maps.prototype._drawMap_drawBlockInfo = function (ctx, block, blockInfo, arr, onMap) { maps.prototype._drawMap_drawBlockInfo = function (ctx, block, blockInfo, arr, onMap) {
if (blockInfo == null) return; if (blockInfo == null) return;
if (onMap) {
// 判定是否绘制
var posX = core.bigmap.posX, posY = core.bigmap.posY;
if (block.x < posX - 1 || block.y < posY - 1 || block.x > posX + core.__SIZE__ || block.y > posY + core.__SIZE__ + 1) { // +1 for 48 height
return;
}
}
if (blockInfo.cls == 'autotile') { // Autotile单独处理 if (blockInfo.cls == 'autotile') { // Autotile单独处理
this._drawAutotile(ctx, arr, block, 32, 0, 0); this._drawAutotile(ctx, arr, block, 32, 0, 0);
if (onMap) this.addGlobalAnimate(block); if (onMap) this.addGlobalAnimate(block);
@ -866,19 +872,18 @@ maps.prototype.drawBg = function (floorId, ctx) {
core.clearMap(ctx); core.clearMap(ctx);
core.status.floorAnimateObjs = this._getFloorImages(floorId); core.status.floorAnimateObjs = this._getFloorImages(floorId);
} }
core.maps._drawBg_drawBackground(floorId, ctx); core.maps._drawBg_drawBackground(floorId, ctx, onMap);
// ------ 调整这两行的顺序来控制是先绘制贴图还是先绘制背景图块;后绘制的覆盖先绘制的。 // ------ 调整这两行的顺序来控制是先绘制贴图还是先绘制背景图块;后绘制的覆盖先绘制的。
core.maps._drawFloorImages(floorId, ctx, 'bg'); core.maps._drawFloorImages(floorId, ctx, 'bg', null, null, onMap);
core.maps._drawBgFgMap(floorId, ctx, 'bg', onMap); core.maps._drawBgFgMap(floorId, ctx, 'bg', onMap);
} }
maps.prototype._drawBg_drawBackground = function (floorId, ctx) { maps.prototype._drawBg_drawBackground = function (floorId, ctx, onMap) {
var width = core.floors[floorId].width, height = core.floors[floorId].height;
var groundId = (core.status.maps || core.floors)[floorId].defaultGround || "ground"; var groundId = (core.status.maps || core.floors)[floorId].defaultGround || "ground";
var groundInfo = core.getBlockInfo(groundId); var groundInfo = core.getBlockInfo(groundId);
if (groundInfo != null) { if (groundInfo != null) {
for (var i = 0; i < width; i++) { for (var i = onMap ? -1 : 0; i < (onMap ? core.__SIZE__ + 1 : core.floors[floorId].width); i++) {
for (var j = 0; j < height; j++) { for (var j = onMap ? -1 : 0; j < (onMap ? core.__SIZE__ + 1 : core.floors[floorId].height); j++) {
core.drawImage(ctx, groundInfo.image, 32 * groundInfo.posX, groundInfo.height * groundInfo.posY, 32, 32, i * 32, j * 32, 32, 32); core.drawImage(ctx, groundInfo.image, 32 * groundInfo.posX, groundInfo.height * groundInfo.posY, 32, 32, i * 32, j * 32, 32, 32);
} }
} }
@ -910,7 +915,7 @@ maps.prototype.drawFg = function (floorId, ctx) {
core.status.floorAnimateObjs = this._getFloorImages(floorId); core.status.floorAnimateObjs = this._getFloorImages(floorId);
} }
// ------ 调整这两行的顺序来控制是先绘制贴图还是先绘制背景图块;后绘制的覆盖先绘制的。 // ------ 调整这两行的顺序来控制是先绘制贴图还是先绘制背景图块;后绘制的覆盖先绘制的。
this._drawFloorImages(floorId, ctx, 'fg'); this._drawFloorImages(floorId, ctx, 'fg', null, null, onMap);
this._drawBgFgMap(floorId, ctx, 'fg', onMap); this._drawBgFgMap(floorId, ctx, 'fg', onMap);
} }
@ -930,8 +935,13 @@ maps.prototype._drawBgFgMap = function (floorId, ctx, name, onMap) {
eventArr = this.getMapArray(floorId); eventArr = this.getMapArray(floorId);
} }
for (var x = 0; x < width; x++) { var startX = onMap ? Math.max(0, core.bigmap.posX - 1) : 0;
for (var y = 0; y < height; y++) { var endX = onMap ? Math.min(width, core.bigmap.posX + core.__SIZE__ + 1) : width;
var startY = onMap ? Math.max(0, core.bigmap.posY - 1) : 0;
var endY = onMap ? Math.min(height, core.bigmap.posY + core.__SIZE__ + 2) : height; // +1 for 48 px
for (var x = startX; x < endX; x++) {
for (var y = startY; y < endY; y++) {
var block = this.initBlock(x, y, arr[y][x], true); var block = this.initBlock(x, y, arr[y][x], true);
block.name = name; block.name = name;
var blockInfo = this.getBlockInfo(block); var blockInfo = this.getBlockInfo(block);
@ -957,7 +967,7 @@ maps.prototype._drawBgFgMap_shouldBlurFg = function () {
} }
////// 绘制楼层贴图 ////// ////// 绘制楼层贴图 //////
maps.prototype._drawFloorImages = function (floorId, ctx, name, images, currStatus) { maps.prototype._drawFloorImages = function (floorId, ctx, name, images, currStatus, onMap) {
floorId = floorId || core.status.floorId; floorId = floorId || core.status.floorId;
if (!images) images = this._getFloorImages(floorId); if (!images) images = this._getFloorImages(floorId);
var redraw = currStatus != null; var redraw = currStatus != null;
@ -974,7 +984,7 @@ maps.prototype._drawFloorImages = function (floorId, ctx, name, images, currStat
this._drawFloorImages_gif(image, one.x, one.y); this._drawFloorImages_gif(image, one.x, one.y);
return; return;
} }
this._drawFloorImage(ctx, name, one, image, currStatus); this._drawFloorImage(ctx, name, one, image, currStatus, onMap);
}, this); }, this);
} }
@ -995,25 +1005,34 @@ maps.prototype._drawFloorImages_gif = function (image, dx, dy) {
return; return;
} }
maps.prototype._drawFloorImage = function (ctx, name, one, image, currStatus) { maps.prototype._drawFloorImage = function (ctx, name, one, image, currStatus, onMap) {
var height = image.height; var height = image.height;
var imageName = one.name + (one.reverse||''); var imageName = one.name + (one.reverse||'');
var width = parseInt((one.w == null ? image.width : one.w) / (one.frame || 1)); var width = parseInt((one.w == null ? image.width : one.w) / (one.frame || 1));
var height = one.h == null ? image.height : one.h; var height = one.h == null ? image.height : one.h;
var sx = (one.sx || 0) + (currStatus || 0) % (one.frame || 1) * width; var sx = (one.sx || 0) + (currStatus || 0) % (one.frame || 1) * width;
var sy = one.sy || 0; var sy = one.sy || 0;
var x = one.x || 0, y = one.y || 0;
if (onMap) {
if (x > 32 * core.bigmap.posX + core.__PIXELS__ + 32 || x + width < 32 * core.bigmap.posX - 32
|| y > 32 * core.bigmap.posX + core.__PIXELS__ + 32 || y + height < 32 * core.bigmap.posY - 32) {
return;
}
x -= 32 * core.bigmap.posX;
y -= 32 * core.bigmap.posY;
}
if (one.canvas != 'auto' && one.canvas != name) return; if (one.canvas != 'auto' && one.canvas != name) return;
if (one.canvas != 'auto') { if (one.canvas != 'auto') {
if (currStatus != null) core.clearMap(ctx, one.x, one.y, width, height); if (currStatus != null) core.clearMap(ctx, x, y, width, height);
core.drawImage(ctx, imageName, sx, sy, width, height, one.x, one.y, width, height); core.drawImage(ctx, imageName, sx, sy, width, height, x, y, width, height);
} else { } else {
if (name == 'bg') { if (name == 'bg') {
if (currStatus != null) core.clearMap(ctx, one.x, one.y + height - 32, width, 32); if (currStatus != null) core.clearMap(ctx, x, y + height - 32, width, 32);
core.drawImage(ctx, imageName, sx, sy + height - 32, width, 32, one.x, one.y+height - 32, width, 32); core.drawImage(ctx, imageName, sx, sy + height - 32, width, 32, x, y + height - 32, width, 32);
} else if (name == 'fg') { } else if (name == 'fg') {
if (currStatus != null) core.clearMap(ctx, one.x, one.y, width, height - 32); if (currStatus != null) core.clearMap(ctx, x, y, width, height - 32);
core.drawImage(ctx, imageName, sx, sy, width, height - 32, one.x, one.y, width, height - 32); core.drawImage(ctx, imageName, sx, sy, width, height - 32, x, y, width, height - 32);
} }
} }
} }
@ -1531,11 +1550,13 @@ maps.prototype._removeBlockFromMap = function (floorId, block) {
core.drawMap(); core.drawMap();
} else { } else {
var x = block.x, y = block.y; var x = block.x, y = block.y;
var px = 32 * x - core.bigmap.posX * 32;
var py = 32 * y - core.bigmap.posY * 32;
core.removeGlobalAnimate(x, y); core.removeGlobalAnimate(x, y);
core.clearMap('event', x * 32, y * 32, 32, 32); core.clearMap('event', px, py, 32, 32);
var height = block.event.height || 32; var height = block.event.height || 32;
if (height > 32) if (height > 32)
core.clearMap('event2', x * 32, y * 32 + 32 - height, 32, height - 32); core.clearMap('event2', px, py + 32 - height, 32, height - 32);
core.updateStatusBar(); core.updateStatusBar();
} }
} }
@ -1603,11 +1624,9 @@ maps.prototype._triggerBgFgMap = function (type, name, loc, floorId, callback) {
core.status[name + "maps"][floorId] = null; core.status[name + "maps"][floorId] = null;
if (floorId == core.status.floorId) { if (floorId == core.status.floorId) {
core.drawMap(floorId, callback); core.drawMap(floorId);
}
else {
if (callback) callback();
} }
if (callback) callback();
} }
////// 显示一个楼层贴图 ////// ////// 显示一个楼层贴图 //////
@ -1637,11 +1656,9 @@ maps.prototype._triggerFloorImage = function (type, loc, floorId, callback) {
}) })
if (floorId == core.status.floorId) { if (floorId == core.status.floorId) {
core.drawMap(floorId, callback); core.drawMap(floorId);
}
else {
if (callback) callback();
} }
if (callback) callback();
} }
////// 改变图块 ////// ////// 改变图块 //////

View File

@ -50,14 +50,20 @@ ui.prototype._createUIEvent = function () {
ui.prototype.clearMap = function (name, x, y, width, height) { ui.prototype.clearMap = function (name, x, y, width, height) {
if (name == 'all') { if (name == 'all') {
for (var m in core.canvas) { for (var m in core.canvas) {
core.canvas[m].clearRect(0, 0, core.bigmap.width*32, core.bigmap.height*32); core.canvas[m].clearRect(-32, -32, core.canvas[m].width+32, core.canvas[m].height+32);
} }
core.dom.gif.innerHTML = ""; core.dom.gif.innerHTML = "";
core.removeGlobalAnimate(); core.removeGlobalAnimate();
} }
else { else {
var ctx = this.getContextByName(name); var ctx = this.getContextByName(name);
if (ctx) ctx.clearRect(x||0, y||0, width||ctx.canvas.width, height||ctx.canvas.height); if (ctx) {
if (x != null && y != null && width != null && height != null) {
ctx.clearRect(x, y, width, height);
} else {
ctx.clearRect(-32, -32, ctx.canvas.width + 32, ctx.canvas.height + 32);
}
}
} }
} }

View File

@ -106,7 +106,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"title": "魔塔样板", "title": "魔塔样板",
"name": "template", "name": "template",
"version": "Ver 2.7.1", "version": "Ver 2.7.1",
"floorId": "sample0", "floorId": "sample2",
"hero": { "hero": {
"image": "hero.png", "image": "hero.png",
"animate": false, "animate": false,

View File

@ -416,7 +416,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
"cls": "tools", "cls": "tools",
"name": "地震卷轴", "name": "地震卷轴",
"text": "可以破坏当前层的所有墙", "text": "可以破坏当前层的所有墙",
"useItemEffect": "(function () {\n\tvar indexes = [];\n\tfor (var index in core.status.thisMap.blocks) {\n\t\tvar block = core.status.thisMap.blocks[index];\n\t\tif (!block.disable && block.event.canBreak) {\n\t\t\tindexes.push(index);\n\t\t}\n\t}\n\tcore.removeBlockByIndexes(indexes);\n\tcore.drawMap(core.status.floorId, function () {\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t});\n})();", "useItemEffect": "(function () {\n\tvar indexes = [];\n\tfor (var index in core.status.thisMap.blocks) {\n\t\tvar block = core.status.thisMap.blocks[index];\n\t\tif (!block.disable && block.event.canBreak) {\n\t\t\tindexes.push(index);\n\t\t}\n\t}\n\tcore.removeBlockByIndexes(indexes);\n\tcore.drawMap();\n\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n})();",
"canUseItemEffect": "(function () {\n\treturn core.status.thisMap.blocks.filter(function (block) {\n\t\treturn !block.disable && block.event.canBreak;\n\t}).length > 0;\n})();" "canUseItemEffect": "(function () {\n\treturn core.status.thisMap.blocks.filter(function (block) {\n\t\treturn !block.disable && block.event.canBreak;\n\t}).length > 0;\n})();"
}, },
"poisonWine": { "poisonWine": {

View File

@ -557,10 +557,9 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
core.status[name + "maps"][floorId] = null; core.status[name + "maps"][floorId] = null;
if (floorId == core.status.floorId) { if (floorId == core.status.floorId) {
core.drawMap(floorId, callback); core.drawMap(floorId);
} else {
if (callback) callback();
} }
if (callback) callback();
}; };
// 改变背景层2与前景层2图块 例:core.setBgFgBlock('fg2',312,core.nextX(),core.nextY()) // 改变背景层2与前景层2图块 例:core.setBgFgBlock('fg2',312,core.nextX(),core.nextY())
core.maps.setBgFgBlock = function (name, number, x, y, floorId) { core.maps.setBgFgBlock = function (name, number, x, y, floorId) {

2
runtime.d.ts vendored
View File

@ -2748,6 +2748,8 @@ type core = {
canvas: string[], canvas: string[],
offsetX: number // in pixel offsetX: number // in pixel
offsetY: number offsetY: number
posX: number
posY: number
width: number // map width and height width: number // map width and height
height: number height: number
tempCanvas: CanvasRenderingContext2D // A temp canvas for drawing tempCanvas: CanvasRenderingContext2D // A temp canvas for drawing