matchWildcard & drawEquipbox

This commit is contained in:
oc 2019-04-10 23:13:19 +08:00
parent a2506d7068
commit 6c58bf85cd
4 changed files with 23 additions and 4 deletions

View File

@ -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加密或解密。

View File

@ -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;
}

View File

@ -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];

View File

@ -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) {