diff --git a/_server/blockly/MotaAction.g4 b/_server/blockly/MotaAction.g4 index db191884..5f4dac99 100644 --- a/_server/blockly/MotaAction.g4 +++ b/_server/blockly/MotaAction.g4 @@ -187,12 +187,15 @@ action | setValue_s | show_s | hide_s - | showFloorImg_s - | hideFloorImg_s | trigger_s | revisit_s | exit_s | setBlock_s + | showFloorImg_s + | hideFloorImg_s + | showBgFgMap_s + | hideBgFgMap_s + | setBgFgBlock_s | setHeroIcon_s | update_s | updateEnemys_s @@ -420,6 +423,61 @@ var code = '{"type": "hide"'+floorstr+IdString_0+''+Int_0+'},\n'; return code; */; +trigger_s + : '触发事件' 'x' PosString ',' 'y' PosString Newline + + +/* trigger_s +tooltip : trigger: 立即触发另一个地点的事件 +helpUrl : https://ckcz123.github.io/mota-js/#/event?id=trigger%EF%BC%9A%E7%AB%8B%E5%8D%B3%E8%A7%A6%E5%8F%91%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%9C%B0%E7%82%B9%E7%9A%84%E4%BA%8B%E4%BB%B6 +default : ["0","0"] +colour : this.eventColor +var code = '{"type": "trigger", "loc": ['+PosString_0+','+PosString_1+']},\n'; +return code; +*/; + +revisit_s + : '重启当前事件' Newline + + +/* revisit_s +tooltip : revisit: 立即重启当前事件 +helpUrl : https://ckcz123.github.io/mota-js/#/event?id=revisit%EF%BC%9A%E7%AB%8B%E5%8D%B3%E9%87%8D%E5%90%AF%E5%BD%93%E5%89%8D%E4%BA%8B%E4%BB%B6 +colour : this.eventColor +var code = '{"type": "revisit"},\n'; +return code; +*/; + +exit_s + : '立刻结束当前事件' Newline + + +/* exit_s +tooltip : exit: 立刻结束当前事件 +helpUrl : https://ckcz123.github.io/mota-js/#/event?id=exit%EF%BC%9A%E7%AB%8B%E5%88%BB%E7%BB%93%E6%9D%9F%E5%BD%93%E5%89%8D%E4%BA%8B%E4%BB%B6 +colour : this.eventColor +var code = '{"type": "exit"},\n'; +return code; +*/; + +setBlock_s + : '转变图块为' Int 'x' PosString? ',' 'y' PosString? '楼层' IdString? Newline + + +/* setBlock_s +tooltip : setBlock:设置某个图块,忽略坐标楼层则为当前事件 +helpUrl : https://ckcz123.github.io/mota-js/#/event?id=setblock%EF%BC%9A%E8%AE%BE%E7%BD%AE%E6%9F%90%E4%B8%AA%E5%9B%BE%E5%9D%97 +colour : this.dataColor +default : [0,"","",""] +var floorstr = ''; +if (PosString_0 && PosString_1) { + floorstr = ', "loc": ['+PosString_0+','+PosString_1+']'; +} +IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"'); +var code = '{"type": "setBlock", "number":'+Int_0+floorstr+IdString_0+'},\n'; +return code; +*/; + showFloorImg_s : '显示贴图' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? Newline @@ -482,58 +540,83 @@ var code = '{"type": "hideFloorImg"'+floorstr+IdString_0+'},\n'; return code; */; -trigger_s - : '触发事件' 'x' PosString ',' 'y' PosString Newline - +showBgFgMap_s + : '显示图层块' Bg_Fg_List 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? Newline -/* trigger_s -tooltip : trigger: 立即触发另一个地点的事件 -helpUrl : https://ckcz123.github.io/mota-js/#/event?id=trigger%EF%BC%9A%E7%AB%8B%E5%8D%B3%E8%A7%A6%E5%8F%91%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%9C%B0%E7%82%B9%E7%9A%84%E4%BA%8B%E4%BB%B6 -default : ["0","0"] + +/* showBgFgMap_s +tooltip : showBgFgMap: 显示图层块,即背景图层/前景图层的某些图块,xy为左上角坐标,可用逗号分隔表示多个点 +helpUrl : https://ckcz123.github.io/mota-js/#/event?id=showFloorImg%ef%bc%9a%e6%98%be%e7%a4%ba%e8%b4%b4%e5%9b%be +default : ["bg","","",""] colour : this.eventColor -var code = '{"type": "trigger", "loc": ['+PosString_0+','+PosString_1+']},\n'; +var floorstr = ''; +if (EvalString_0 && EvalString_1) { + var pattern1 = /^flag:[0-9a-zA-Z_][0-9a-zA-Z_\-:]*$/; + if(pattern1.test(EvalString_0) || pattern1.test(EvalString_1)){ + EvalString_0=MotaActionFunctions.PosString_pre(EvalString_0); + EvalString_1=MotaActionFunctions.PosString_pre(EvalString_1); + EvalString_0=[EvalString_0,EvalString_1] + } else { + var pattern2 = /^([+-]?\d+)(,[+-]?\d+)*$/; + if(!pattern2.test(EvalString_0) || !pattern2.test(EvalString_1))throw new Error('坐标格式错误,请右键点击帮助查看格式'); + EvalString_0=EvalString_0.split(','); + EvalString_1=EvalString_1.split(','); + if(EvalString_0.length!==EvalString_1.length)throw new Error('坐标格式错误,请右键点击帮助查看格式'); + for(var ii=0;ii

-
-
-
+
+
+
+ diff --git a/editor.html b/editor.html index de7bb4c7..446aaaaf 100644 --- a/editor.html +++ b/editor.html @@ -383,15 +383,16 @@

-
-
-
+
+
+
+ diff --git a/index.html b/index.html index 6beb83f3..c97c9a8e 100644 --- a/index.html +++ b/index.html @@ -108,15 +108,16 @@

-
-
-
+
+
+
+ diff --git a/libs/actions.js b/libs/actions.js index 01619092..de4ca739 100644 --- a/libs/actions.js +++ b/libs/actions.js @@ -1574,19 +1574,19 @@ actions.prototype.clickSwitchs = function (x,y) { break; case 3: core.flags.displayEnemyDamage=!core.flags.displayEnemyDamage; - core.updateFg(); + core.updateDamage(); core.setLocalStorage('enemyDamage', core.flags.displayEnemyDamage); core.ui.drawSwitchs(); break; case 4: core.flags.displayCritical=!core.flags.displayCritical; - core.updateFg(); + core.updateDamage(); core.setLocalStorage('critical', core.flags.displayCritical); core.ui.drawSwitchs(); break; case 5: core.flags.displayExtraDamage=!core.flags.displayExtraDamage; - core.updateFg(); + core.updateDamage(); core.setLocalStorage('extraDamage', core.flags.displayExtraDamage); core.ui.drawSwitchs(); break; diff --git a/libs/control.js b/libs/control.js index a59adf5a..bd1db38c 100644 --- a/libs/control.js +++ b/libs/control.js @@ -1437,7 +1437,7 @@ control.prototype.snipe = function (snipes) { var animateCurrent = 0; var animateTime = 0; - core.canvas.fg.textAlign = 'left'; + core.canvas.damage.textAlign = 'left'; var animate=window.setInterval(function() { @@ -1455,22 +1455,22 @@ control.prototype.snipe = function (snipes) { var nowX = 32*x+dx, nowY = 32*y+dy; // 清空上一次 - core.clearMap('fg', nowX-2*scan[direction].x, nowY-2*scan[direction].y, 32, 32); + core.clearMap('damage', nowX-2*scan[direction].x, nowY-2*scan[direction].y, 32, 32); core.canvas.event.clearRect(nowX-2*scan[direction].x, nowY-2*scan[direction].y, 32, 32); core.canvas.event2.clearRect(nowX-2*scan[direction].x, nowY-2*scan[direction].y-32, 32, 32) core.drawBlock(snipe.block, animateCurrent, dx, dy); if (core.hasItem('book')) { - // drawFG - core.setFillStyle('fg', '#000000'); - core.canvas.fg.fillText(snipe.damage, nowX + 2, nowY + 30); - core.canvas.fg.fillText(snipe.damage, nowX, nowY + 30); - core.canvas.fg.fillText(snipe.damage, nowX + 2, nowY + 32); - core.canvas.fg.fillText(snipe.damage, nowX, nowY + 32); + // drawDamage + core.setFillStyle('damage', '#000000'); + core.canvas.damage.fillText(snipe.damage, nowX + 2, nowY + 30); + core.canvas.damage.fillText(snipe.damage, nowX, nowY + 30); + core.canvas.damage.fillText(snipe.damage, nowX + 2, nowY + 32); + core.canvas.damage.fillText(snipe.damage, nowX, nowY + 32); - core.setFillStyle('fg', snipe.color); - core.canvas.fg.fillText(snipe.damage, nowX + 1, nowY + 31); + core.setFillStyle('damage', snipe.color); + core.canvas.damage.fillText(snipe.damage, nowX + 1, nowY + 31); } }) @@ -1589,18 +1589,18 @@ control.prototype.setFg = function(color, time, callback) { } ////// 更新全地图显伤 ////// -control.prototype.updateFg = function () { +control.prototype.updateDamage = function () { if (!core.isset(core.status.thisMap) || !core.isset(core.status.thisMap.blocks)) return; // 更新显伤 var mapBlocks = core.status.thisMap.blocks; - core.clearMap('fg'); + core.clearMap('damage'); // 没有怪物手册 if (!core.hasItem('book')) return; - core.setFont('fg', "bold 11px Arial"); + core.setFont('damage', "bold 11px Arial"); var hero_hp = core.status.hero.hp; if (core.flags.displayEnemyDamage || core.flags.displayCritical) { - core.canvas.fg.textAlign = 'left'; + core.canvas.damage.textAlign = 'left'; for (var b = 0; b < mapBlocks.length; b++) { var x = mapBlocks[b].x, y = mapBlocks[b].y; if (core.isset(mapBlocks[b].event) && mapBlocks[b].event.cls.indexOf('enemy')==0 @@ -1637,14 +1637,14 @@ control.prototype.updateFg = function () { damage += "+"; } - core.setFillStyle('fg', '#000000'); - core.canvas.fg.fillText(damage, 32 * x + 2, 32 * (y + 1) - 2); - core.canvas.fg.fillText(damage, 32 * x, 32 * (y + 1) - 2); - core.canvas.fg.fillText(damage, 32 * x + 2, 32 * (y + 1)); - core.canvas.fg.fillText(damage, 32 * x, 32 * (y + 1)); + core.setFillStyle('damage', '#000000'); + core.canvas.damage.fillText(damage, 32 * x + 2, 32 * (y + 1) - 2); + core.canvas.damage.fillText(damage, 32 * x, 32 * (y + 1) - 2); + core.canvas.damage.fillText(damage, 32 * x + 2, 32 * (y + 1)); + core.canvas.damage.fillText(damage, 32 * x, 32 * (y + 1)); - core.setFillStyle('fg', color); - core.canvas.fg.fillText(damage, 32 * x + 1, 32 * (y + 1) - 1); + core.setFillStyle('damage', color); + core.canvas.damage.fillText(damage, 32 * x + 1, 32 * (y + 1) - 1); } // 临界显伤 @@ -1653,13 +1653,13 @@ control.prototype.updateFg = function () { if (critical.length>0) critical=critical[0]; critical = core.formatBigNumber(critical[0]); if (critical == '???') critical = '?'; - core.setFillStyle('fg', '#000000'); - core.canvas.fg.fillText(critical, 32 * x + 2, 32 * (y + 1) - 2 - 10); - core.canvas.fg.fillText(critical, 32 * x, 32 * (y + 1) - 2 - 10); - core.canvas.fg.fillText(critical, 32 * x + 2, 32 * (y + 1) - 10); - core.canvas.fg.fillText(critical, 32 * x, 32 * (y + 1) - 10); - core.setFillStyle('fg', '#FFFFFF'); - core.canvas.fg.fillText(critical, 32 * x + 1, 32 * (y + 1) - 1 - 10); + core.setFillStyle('damage', '#000000'); + core.canvas.damage.fillText(critical, 32 * x + 2, 32 * (y + 1) - 2 - 10); + core.canvas.damage.fillText(critical, 32 * x, 32 * (y + 1) - 2 - 10); + core.canvas.damage.fillText(critical, 32 * x + 2, 32 * (y + 1) - 10); + core.canvas.damage.fillText(critical, 32 * x, 32 * (y + 1) - 10); + core.setFillStyle('damage', '#FFFFFF'); + core.canvas.damage.fillText(critical, 32 * x + 1, 32 * (y + 1) - 1 - 10); } } @@ -1667,20 +1667,20 @@ control.prototype.updateFg = function () { } // 如果是领域&夹击 if (core.flags.displayExtraDamage) { - core.canvas.fg.textAlign = 'center'; + core.canvas.damage.textAlign = 'center'; for (var x=0;x0) { damage = core.formatBigNumber(damage); - core.setFillStyle('fg', '#000000'); - core.canvas.fg.fillText(damage, 32 * x + 17, 32 * (y + 1) - 13); - core.canvas.fg.fillText(damage, 32 * x + 15, 32 * (y + 1) - 15); - core.canvas.fg.fillText(damage, 32 * x + 17, 32 * (y + 1) - 15); - core.canvas.fg.fillText(damage, 32 * x + 15, 32 * (y + 1) - 13); + core.setFillStyle('damage', '#000000'); + core.canvas.damage.fillText(damage, 32 * x + 17, 32 * (y + 1) - 13); + core.canvas.damage.fillText(damage, 32 * x + 15, 32 * (y + 1) - 15); + core.canvas.damage.fillText(damage, 32 * x + 17, 32 * (y + 1) - 15); + core.canvas.damage.fillText(damage, 32 * x + 15, 32 * (y + 1) - 13); - core.setFillStyle('fg', '#FF7F00'); - core.canvas.fg.fillText(damage, 32 * x + 16, 32 * (y + 1) - 14); + core.setFillStyle('damage', '#FF7F00'); + core.canvas.damage.fillText(damage, 32 * x + 16, 32 * (y + 1) - 14); } } } @@ -2740,7 +2740,7 @@ control.prototype.updateStatusBar = function () { core.statusBar.image.settings.src = core.statusBar.icons.settings.src; } - core.updateFg(); + core.updateDamage(); } ////// 屏幕分辨率改变后重新自适应 ////// @@ -2933,8 +2933,6 @@ control.prototype.resize = function(clientWidth, clientHeight) { rules: { width: (canvasWidth - SPACE*2) + unit, height:(canvasWidth - SPACE*2) + unit, - top: (canvasTop + SPACE) + unit, - right: SPACE + unit, } }, { @@ -2942,8 +2940,6 @@ control.prototype.resize = function(clientWidth, clientHeight) { rules: { width: (canvasWidth - SPACE*2) + unit, height:(canvasWidth - SPACE*2) + unit, - top: (canvasTop + SPACE) + unit, - right: SPACE + unit, } }, { @@ -2951,8 +2947,6 @@ control.prototype.resize = function(clientWidth, clientHeight) { rules: { width: (canvasWidth - SPACE*2) + unit, height:(canvasWidth - SPACE*2) + unit, - top: (canvasTop + SPACE) + unit, - right: SPACE + unit, } }, { diff --git a/libs/core.js b/libs/core.js index ee47c077..98705b78 100644 --- a/libs/core.js +++ b/libs/core.js @@ -73,7 +73,7 @@ function core() { scale: 1.0, } this.bigmap = { - canvas: ["bg", "event", "event2", "fg", "route"], + canvas: ["bg", "event", "event2", "fg", "damage", "route"], offsetX: 0, // in pixel offsetY: 0, width: 13, // map width and height @@ -743,6 +743,11 @@ core.prototype.setBlock = function (number, x, y, floorId) { core.maps.setBlock(number, x, y, floorId); } +////// 改变图层块 ////// +core.prototype.setBgFgBlock = function (name, number, x, y, floorId) { + core.maps.setBgFgBlock(name, number, x, y, floorId); +} + ////// 添加一个全局动画 ////// core.prototype.addGlobalAnimate = function (block) { core.maps.addGlobalAnimate(block); @@ -799,8 +804,8 @@ core.prototype.setFg = function(color, time, callback) { } ////// 更新全地图显伤 ////// -core.prototype.updateFg = function () { - core.control.updateFg(); +core.prototype.updateDamage = function () { + core.control.updateDamage(); } ////// 测试是否拥有某个特殊属性 ////// diff --git a/libs/events.js b/libs/events.js index 73497b87..c69f1623 100644 --- a/libs/events.js +++ b/libs/events.js @@ -399,6 +399,16 @@ events.prototype.doAction = function() { } else this.doAction(); break; + case "setBlock": // 设置某图块 + { + if (core.isset(data.loc)) { + x=core.calValue(data.loc[0]); + y=core.calValue(data.loc[1]); + } + core.setBlock(data.number, x, y, data.floorId); + this.doAction(); + break; + } case "showFloorImg": // 显示贴图 if (!core.isset(data.loc)) data.loc = [x,y]; @@ -419,13 +429,33 @@ events.prototype.doAction = function() { core.events.doAction(); }) break; - case "setBlock": // 设置某图块 + case "showBgFgMap": // 显示图层块 + if (!core.isset(data.loc)) + data.loc = [x,y]; + if ((typeof data.loc[0] == 'number' || typeof data.loc[0] == 'string') + && (typeof data.loc[1] == 'number' || typeof data.loc[1] == 'string')) + data.loc = [[core.calValue(data.loc[0]), core.calValue(data.loc[1])]]; + core.maps.setBgFgMap("show", data.name, data.loc, data.floorId, function() { + core.events.doAction(); + }) + break; + case "hideBgFgMap": // 隐藏图层块 + if (!core.isset(data.loc)) + data.loc = [x,y]; + if ((typeof data.loc[0] == 'number' || typeof data.loc[0] == 'string') + && (typeof data.loc[1] == 'number' || typeof data.loc[1] == 'string')) + data.loc = [[core.calValue(data.loc[0]), core.calValue(data.loc[1])]]; + core.maps.setBgFgMap("hide", data.name, data.loc, data.floorId, function() { + core.events.doAction(); + }) + break; + case "setBgFgBlock": // 设置图层块 { if (core.isset(data.loc)) { x=core.calValue(data.loc[0]); y=core.calValue(data.loc[1]); } - core.setBlock(data.number, x, y, data.floorId); + core.setBgFgBlock(data.name, data.number, x, y, data.floorId); this.doAction(); break; } @@ -1195,7 +1225,9 @@ events.prototype.changeFloor = function (floorId, stair, heroLoc, time, callback // 更改BGM if (core.isset(core.floors[floorId].bgm)) { - core.playBgm(core.floors[floorId].bgm); + var bgm = core.floors[floorId].bgm; + if (bgm instanceof Array) bgm = bgm[0]; + core.playBgm(bgm); } // 不存在事件时,更改画面色调 diff --git a/libs/maps.js b/libs/maps.js index ba9653c8..4ec056a9 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -249,7 +249,7 @@ maps.prototype.canMoveHero = function(x,y,direction,floorId) { var nowBlock = core.getBlock(x,y,floorId); if (nowBlock!=null){ - nowId = nowBlock.block.event.id; + var nowId = nowBlock.block.event.id; var nowIsArrow = nowId.slice(0, 5).toLowerCase() == 'arrow'; if(nowIsArrow){ var nowArrow = nowId.slice(5).toLowerCase(); @@ -267,7 +267,7 @@ maps.prototype.canMoveHero = function(x,y,direction,floorId) { var nx = x+scan[direction].x, ny = y+scan[direction].y; var nextBlock = core.getBlock(nx,ny); if (nextBlock!=null){ - nextId = nextBlock.block.event.id; + var nextId = nextBlock.block.event.id; // 遇到单向箭头处理 var isArrow = nextId.slice(0, 5).toLowerCase() == 'arrow'; if(isArrow){ @@ -340,20 +340,54 @@ maps.prototype.drawBlock = function (block, animate, dx, dy) { } } +////// 背景/前景图块的绘制 ////// +maps.prototype.drawBgFgMap = function (floorId, canvas, name) { + var width = core.floors[floorId].width || 13; + var height = core.floors[floorId].height || 13; + + var groundId = core.floors[floorId].defaultGround || "ground"; + var blockIcon = core.material.icons.terrains[groundId]; + var blockImage = core.material.images.terrains; + + var getMapArray = function (name) { + var arr = core.clone(core.floors[floorId][name+"map"] || []); + for (var x = 0; x < width; x++) { + for (var y = 0; y < height; y++) { + arr[y] = arr[y] || []; + if (core.hasFlag(name + "_" + floorId + "_" + x + "_" + y)) arr[y][x] = 0; + else arr[y][x] = core.getFlag(name + "v_" + floorId + "_" + x + "_" + y, arr[y][x] || 0); + } + } + return arr; + } + var arr = getMapArray(name); + for (var x = 0; x < width; x++) { + for (var y = 0; y < height; y++) { + if (name=='bg') + canvas.drawImage(blockImage, 0, blockIcon * 32, 32, 32, x * 32, y * 32, 32, 32); + if (arr[y][x]>0) { + var block = core.maps.initBlock(x, y, arr[y][x]); + if (core.isset(block.event)) { + var id = block.event.id, cls = block.event.cls; + if (cls == 'autotile') + core.drawAutotile(canvas, arr, block, 32, 0, 0); + else + canvas.drawImage(core.material.images[cls], 0, core.material.icons[cls][id] * 32, 32, 32, x * 32, y * 32, 32, 32); + } + } + } + } + +} + ////// 绘制某张地图 ////// maps.prototype.drawMap = function (mapName, callback) { core.clearMap('all'); core.removeGlobalAnimate(null, null, true); var drawBg = function(){ - var groundId = core.floors[mapName].defaultGround || "ground"; - var blockIcon = core.material.icons.terrains[groundId]; - var blockImage = core.material.images.terrains; - - for (var x = 0; x < core.bigmap.width; x++) { - for (var y = 0; y < core.bigmap.height; y++) { - core.canvas.bg.drawImage(blockImage, 0, blockIcon * 32, 32, 32, x * 32, y * 32, 32, 32); - } - } + + core.maps.drawBgFgMap(mapName, core.canvas.bg, "bg"); + core.maps.drawBgFgMap(mapName, core.canvas.fg, "fg"); var images = []; if (core.isset(core.floors[mapName].images)) { @@ -385,9 +419,9 @@ maps.prototype.drawMap = function (mapName, callback) { } } else if (t[3]==1) - core.canvas.event2.drawImage(image, 32*dx, 32*dy, image.width, image.height); + core.canvas.fg.drawImage(image, 32*dx, 32*dy, image.width, image.height); else if (t[3]==2) { - core.canvas.event2.drawImage(image, 0, 0, image.width, image.height-32, + core.canvas.fg.drawImage(image, 0, 0, image.width, image.height-32, 32*dx, 32*dy, image.width, image.height-32); core.canvas.bg.drawImage(image, 0, image.height-32, image.width, 32, 32*dx, 32*dy + image.height - 32, image.width, 32); @@ -435,6 +469,7 @@ maps.prototype.drawMap = function (mapName, callback) { core.clearMap('bg'); core.clearMap('event'); core.clearMap('event2'); + core.clearMap('fg'); drawBg(); drawEvent(); core.setGlobalAnimate(core.values.animateSpeed); @@ -957,6 +992,18 @@ maps.prototype.setBlock = function (number, x, y, floorId) { } } +////// 改变图层块 ////// +maps.prototype.setBgFgBlock = function (name, number, x, y, floorId) { + floorId = floorId || core.status.floorId; + if (!core.isset(number) || !core.isset(x) || !core.isset(y)) return; + if (x<0 || x>=core.bigmap.width || y<0 || y>=core.bigmap.height) return; + if (name!='bg' && name!='fg') return; + + core.setFlag(name+"v_"+floorId+"_"+x+"_"+y, number); + if (floorId == core.status.floorId) + core.drawMap(floorId); +} + ////// 添加一个全局动画 ////// maps.prototype.addGlobalAnimate = function (b) { if (main.mode=='editor' && main.editor.disableGlobalAnimate) return; @@ -1105,6 +1152,28 @@ maps.prototype.setFloorImage = function (type, loc, floorId, callback) { } } +maps.prototype.setBgFgMap = function (type, name, loc, floorId, callback) { + if (type!='show') type='hide'; + if (name!='fg') name='bg'; + if (typeof loc[0] == 'number' && typeof loc[1] == 'number') + loc = [loc]; + floorId = floorId||core.status.floorId; + + if (loc.length==0) return; + loc.forEach(function (t) { + var x=t[0], y=t[1]; + var flag = name+"_"+floorId+"_"+x+"_"+y; + core.setFlag(flag, type=='show'?false:true); + }) + + if (floorId==core.status.floorId) { + core.drawMap(floorId, callback); + } + else { + if (core.isset(callback)) callback(); + } +} + maps.prototype.resetMap = function(floorId) { var floorId = floorId||core.status.floorId; core.status.maps[floorId] = this.loadFloor(floorId); diff --git a/libs/ui.js b/libs/ui.js index a365323f..a6d022c0 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -529,7 +529,7 @@ ui.prototype.drawTextBox = function(content) { core.clearMap("ui", content_left, content_top - 18, validWidth, top + height - content_top + 10); core.setAlpha('ui', textAttribute.background[3]); core.setFillStyle('ui', core.arrayToRGB(textAttribute.background)); - core.fillRect("ui", content_left, content_top - 18, validWidth, top + height - content_top + 10); + core.fillRect("ui", content_left, content_top - 18, validWidth, top + height - content_top + 11); core.setAlpha('ui', textAttribute.text[3]); core.setFillStyle('ui', core.arrayToRGB(textAttribute.text)); @@ -1826,15 +1826,9 @@ ui.prototype.drawThumbnail = function(floorId, canvas, blocks, x, y, size, cente tempCanvas.canvas.height = tempHeight; tempCanvas.clearRect(0, 0, tempWidth, tempHeight); - var groundId = core.floors[floorId].defaultGround || "ground"; - var blockIcon = core.material.icons.terrains[groundId]; - var blockImage = core.material.images.terrains; - // background - for (var j=0;j