diff --git a/_docs/api.md b/_docs/api.md index a61be655..7ad94388 100644 --- a/_docs/api.md +++ b/_docs/api.md @@ -1464,6 +1464,7 @@ posX, posY:素材在该素材图片上的位置;height:素材的高度;f core.searchBlock(id, floorId, showDisable) 搜索一个图块出现过的所有位置。id为图块ID,也可以传入图块的数字。 +id支持通配符搜索,比如"*Door"可以搜索所有的门,"unknownEvent*"可以所有所有的unknownEvent。 floorId为要搜索的楼层,可以是一个楼层ID,或者一个楼层数组。如果floorId不填则只搜索当前楼层。 showDisable如果为真,则对于禁用的图块也会返回。 此函数将返回一个数组,每一项为一个搜索到的结果: @@ -1997,6 +1998,10 @@ core.reverseDirection(direction) 翻转方向,即"up"转成"down", "left"转成"right"等。 +core.matchWildcard(pattern, string) +进行通配符的匹配判定,目前仅支持*(可匹配0或任意个字符)。比如"a*b*c"可以匹配"aa012bc"。 + + core.encodeBase64(str) / core.decodeBase64(str) 将字符串进行base64加密或解密。 diff --git a/libs/maps.js b/libs/maps.js index f8cc1a66..52b540b4 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -1239,8 +1239,9 @@ maps.prototype.searchBlock = function (id, floorId, showDisable) { } for (var i = 0; i < core.status.maps[floorId].blocks.length; ++i) { var block = core.status.maps[floorId].blocks[i]; - if (block.event.id == id && (showDisable || !block.disable)) + if ((showDisable || !block.disable) && core.matchWildcard(id, block.event.id)) { result.push({floorId: floorId, index: i, block: block, x: block.x, y: block.y}); + } } return result; } diff --git a/libs/ui.js b/libs/ui.js index fc6a9047..13e854dd 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -1956,7 +1956,7 @@ ui.prototype._drawEquipbox_description = function (info, max_height) { this._drawEquipbox_drawStatusChanged(info, curr, equip, equipType); } -ui.prototype._drawEquipbox_drawStatusChanged = function (info, y, equip, equipType) { +ui.prototype._drawEquipbox_getStatusChanged = function (info, equip, equipType) { var compare, differentMode = null; if (info.index < this.LAST) compare = core.compareEquipment(null, info.selectId); else { @@ -1973,6 +1973,12 @@ ui.prototype._drawEquipbox_drawStatusChanged = function (info, y, equip, equipTy core.fillText('ui', differentMode, 10, y, '#CCCCCC', this._buildFont(14, false)); return; } + return compare; +} + +ui.prototype._drawEquipbox_drawStatusChanged = function (info, y, equip, equipType) { + var compare = this._drawEquipbox_getStatusChanged(info, equip, equipType); + if (compare == null) return; var drawOffset = 10; // --- 变化值... core.setFont('ui', this._buildFont(14, true)); @@ -2003,13 +2009,14 @@ ui.prototype._drawEquipbox_drawStatusChanged = function (info, y, equip, equipTy } ui.prototype._drawEquipbox_drawEquiped = function (info, line) { - core.setTextAlign('ui', 'right'); + core.setTextAlign('ui', 'center'); var per_line = this.HSIZE - 3, width = Math.floor(this.PIXEL / (per_line + 0.25)); // 当前装备 for (var i = 0; i < info.equipLength ; i++) { var equipId = info.equipEquipment[i] || null; - var offset_text = width * (i % per_line) + 56; + // var offset_text = width * (i % per_line) + 56; var offset_image = width * (i % per_line) + width * 2 / 3; + var offset_text = offset_image - (width - 32) / 2; var y = line + 54 * Math.floor(i / per_line) + 19; if (equipId) { var icon = core.material.icons.items[equipId]; diff --git a/libs/utils.js b/libs/utils.js index d491197e..9da86c95 100644 --- a/libs/utils.js +++ b/libs/utils.js @@ -624,6 +624,12 @@ utils.prototype.reverseDirection = function (direction) { return {"left":"right","right":"left","down":"up","up":"down"}[direction] || direction; } +utils.prototype.matchWildcard = function (pattern, string) { + return new RegExp('^' + pattern.split(/\*+/).map(function (s) { + return s.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&'); + }).join('.*') + '$').test(string); +} + ////// Base64加密 ////// utils.prototype.encodeBase64 = function (str) { return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {