matchWildcard & drawEquipbox
This commit is contained in:
parent
a2506d7068
commit
6c58bf85cd
@ -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加密或解密。
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
13
libs/ui.js
13
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];
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user