让搜单主属性也能搜出单副属性怪
This commit is contained in:
parent
c73966bb6b
commit
e8cdfac9b8
|
@ -643,22 +643,27 @@ function searchCards(cards, attr1, attr2, fixMainColor, types, typeAndOr, rares,
|
|||
if (attr1 != null && attr1 === attr2 || //主副属性一致并不为空
|
||||
(attr1 === 6 && attr2 === -1)) //主副属性都为“无”
|
||||
{ //当两个颜色相同时,主副一样颜色的只需判断一次
|
||||
cardsRange = cardsRange.filter(c => c.attrs[0] === attr1 && c.attrs[1] === attr1);
|
||||
} else if (fixMainColor) //如果固定了顺序
|
||||
cardsRange = cardsRange.filter(c => c.attrs[0] === attr1 && c.attrs[1] === attr2);
|
||||
}
|
||||
else if (fixMainColor) //如果固定了顺序
|
||||
{
|
||||
const a1null = attr1 === null,
|
||||
a2null = attr2 === null;
|
||||
cardsRange = cardsRange.filter(c =>
|
||||
(a1null ? true : c.attrs[0] === attr1) &&
|
||||
(a2null ? true : c.attrs[1] === attr2)
|
||||
);
|
||||
} else //不限定顺序时
|
||||
const a1IsNull = attr1 === null,
|
||||
a2IsNull = attr2 === null;
|
||||
if (!a1IsNull || !a2IsNull) { //当a1、a2任一不为null(任意)时才需要筛选
|
||||
cardsRange = cardsRange.filter(c =>
|
||||
(a2IsNull ? c.attrs[0] === 6 && c.attrs[1] === attr1 : false) || //当2为随机,只有属性1时,也专门搜只有副属性=属性1的怪物
|
||||
(a1IsNull ? true : c.attrs[0] === attr1) &&
|
||||
(a2IsNull ? true : c.attrs[1] === attr2)
|
||||
);
|
||||
}
|
||||
}
|
||||
else //不限定顺序时
|
||||
{
|
||||
const search_attrs = [attr1, attr2].filter(a => a !== null && a >= 0 && a <= 5); //所有非空属性
|
||||
const anone = attr1 === 6 || attr2 === -1; //是否有“无”属性
|
||||
const search_attrs = [attr1, attr2].filter(a => a != null && a >= 0 && a <= 5); //所有非空属性
|
||||
const aNone = attr1 === 6 || attr2 === -1; //是否有“无”属性
|
||||
cardsRange = cardsRange.filter(c =>
|
||||
search_attrs.every(a => c.attrs.includes(a)) &&
|
||||
(anone ? (c.attrs.includes(6) || c.attrs.includes(-1)) : true)
|
||||
(aNone ? (c.attrs.includes(6) || c.attrs.includes(-1)) : true)
|
||||
);
|
||||
}
|
||||
//类型
|
||||
|
|
48
script.js
48
script.js
|
@ -2715,8 +2715,8 @@ function initialize(event) {
|
|||
const searchEvolutionByThis = settingBox.querySelector(".row-mon-id .search-evolution-by-this");
|
||||
searchEvolutionByThis.onclick = function() {showSearch(Cards.filter(card=>card.evoMaterials.includes(editBox.mid)))};
|
||||
|
||||
const s_attr1s = Array.from(searchBox.querySelectorAll(".attrs-div .attr-list-1 .attr-radio"));
|
||||
const s_attr2s = Array.from(searchBox.querySelectorAll(".attrs-div .attr-list-2 .attr-radio"));
|
||||
const s_attr1s = Array.from(searchBox.querySelectorAll(".attrs-div .attr-list-1 [name=\"attr-1\"]"));
|
||||
const s_attr2s = Array.from(searchBox.querySelectorAll(".attrs-div .attr-list-2 [name=\"attr-2\"]"));
|
||||
const s_fixMainColor = searchBox.querySelector("#fix-main-color");
|
||||
const s_typesDiv = searchBox.querySelector(".types-div");
|
||||
const s_typeAndOr = s_typesDiv.querySelector("#type-and-or");
|
||||
|
@ -3009,6 +3009,7 @@ function initialize(event) {
|
|||
const searchClose = s_controlDiv.querySelector(".search-close");
|
||||
const searchClear = s_controlDiv.querySelector(".search-clear");
|
||||
|
||||
|
||||
function returnCheckedInput(ipt) {
|
||||
return ipt.checked;
|
||||
}
|
||||
|
@ -3017,6 +3018,17 @@ function initialize(event) {
|
|||
return ipt.value;
|
||||
}
|
||||
|
||||
function returnRadiosValue(radioArr) {
|
||||
let checkedRadio = radioArr.find(returnCheckedInput);
|
||||
let firstCheckedValue = checkedRadio ? returnInputValue(checkedRadio) : undefined;
|
||||
return firstCheckedValue;
|
||||
}
|
||||
function returnCheckBoxsValues(checkBoxsArr) {
|
||||
let checkedCheckBoxs = checkBoxsArr.filter(returnCheckedInput);
|
||||
let checkedValues = checkedCheckBoxs.map(returnInputValue);
|
||||
return checkedValues;
|
||||
}
|
||||
|
||||
function Str2Int(str) {
|
||||
return parseInt(str, 10);
|
||||
}
|
||||
|
@ -3088,31 +3100,19 @@ function initialize(event) {
|
|||
s_add_show_abilities.onchange = reShowSearch;
|
||||
s_add_show_abilities_with_awoken.onchange = reShowSearch;
|
||||
|
||||
const startSearch = function(cards, customAdditionalFunction) {
|
||||
if (customAdditionalFunction == undefined) customAdditionalFunction = [];
|
||||
const attr1Filter = s_attr1s.filter(returnCheckedInput).map(returnInputValue);
|
||||
const attr2Filter = s_attr2s.filter(returnCheckedInput).map(returnInputValue);
|
||||
const startSearch = function(cards, customAdditionalFunction = []) {
|
||||
let attr1, attr2;
|
||||
if (attr1Filter.length > 0) {
|
||||
if (!isNaN(attr1Filter[0])) {
|
||||
attr1 = parseInt(attr1Filter[0], 10);
|
||||
} else {
|
||||
attr1 = null;
|
||||
}
|
||||
}
|
||||
if (attr2Filter.length > 0) {
|
||||
if (!isNaN(attr2Filter[0])) {
|
||||
attr2 = parseInt(attr2Filter[0], 10);
|
||||
} else {
|
||||
attr2 = null;
|
||||
}
|
||||
}
|
||||
const typesFilter = s_types.filter(returnCheckedInput).map(returnInputValue).map(Str2Int);
|
||||
attr1 = returnRadiosValue(s_attr1s); //获取选中单选框的值
|
||||
attr2 = returnRadiosValue(s_attr2s); //获取选中单选框的值
|
||||
attr1 = isNaN(attr1) ? null : Str2Int(attr1); //将值转为十进制
|
||||
attr2 = isNaN(attr2) ? null : Str2Int(attr2); //将值转为十进制
|
||||
|
||||
const typesFilter = returnCheckBoxsValues(s_types).map(Str2Int);
|
||||
const rareFilter = [
|
||||
s_rareLows.filter(returnCheckedInput).map(returnInputValue).map(Str2Int)[0],
|
||||
s_rareHighs.filter(returnCheckedInput).map(returnInputValue).map(Str2Int)[0],
|
||||
returnCheckBoxsValues(s_rareLows).map(Str2Int)[0],
|
||||
returnCheckBoxsValues(s_rareHighs).map(Str2Int)[0],
|
||||
];
|
||||
const sawokensFilter = s_sawokens.filter(returnCheckedInput).map(returnInputValue).map(Str2Int);
|
||||
const sawokensFilter = returnCheckBoxsValues(s_sawokens).map(Str2Int);
|
||||
const awokensFilter = s_awokensIcons.filter(btn => parseInt(btn.getAttribute("data-awoken-count"), 10) > 0).map(btn => {
|
||||
const awokenIndex = parseInt(btn.getAttribute("data-awoken-icon"), 10);
|
||||
return {
|
||||
|
|
Loading…
Reference in New Issue