| @@ -247,6 +247,9 @@ | |||
| .search-box .attrs .fix-main-color-label::after{ | |||
| content: "限制属性 1 为主属性,属性 2 为副属性"; | |||
| } | |||
| .search-box .consider-equivalent-awoken-label::after{ | |||
| content: "同时搜索等效觉醒"; | |||
| } | |||
| .attrs .attr-all::before{ | |||
| content: "不限"; | |||
| } | |||
| @@ -680,23 +680,25 @@ function initialize() | |||
| searchBox.classList.toggle("display-none"); | |||
| }; | |||
| let s_attr1s = Array.prototype.slice.call(searchBox.querySelectorAll(".attrs .attr-list-1 .attr-radio")); | |||
| let s_attr2s = Array.prototype.slice.call(searchBox.querySelectorAll(".attrs .attr-list-2 .attr-radio")); | |||
| let s_fixMainColor = searchBox.querySelector(".attrs .fix-main-color"); | |||
| let s_types = Array.prototype.slice.call(searchBox.querySelectorAll(".types-div .type-check")); | |||
| let s_awokensItem = Array.prototype.slice.call(searchBox.querySelectorAll(".awoken-div .awoken-count")); | |||
| let s_awokensIcon = s_awokensItem.map(it=>{ | |||
| const s_attr1s = Array.prototype.slice.call(searchBox.querySelectorAll(".attrs .attr-list-1 .attr-radio")); | |||
| const s_attr2s = Array.prototype.slice.call(searchBox.querySelectorAll(".attrs .attr-list-2 .attr-radio")); | |||
| const s_fixMainColor = searchBox.querySelector(".attrs #fix-main-color"); | |||
| const s_types = Array.prototype.slice.call(searchBox.querySelectorAll(".types-div .type-check")); | |||
| const s_awokensItems = Array.prototype.slice.call(searchBox.querySelectorAll(".awoken-div .awoken-count")); | |||
| const s_awokensIcons = s_awokensItems.map(it=>{ | |||
| return it.querySelector(".awoken-icon"); | |||
| }); | |||
| let s_awokensCount = s_awokensItem.map(it=>{ | |||
| const s_awokensCounts = s_awokensItems.map(it=>{ | |||
| return it.querySelector(".count"); | |||
| }); | |||
| /*let s_awokensIcon = Array.prototype.slice.call(searchBox.querySelectorAll(".awoken-div .awoken-icon")); | |||
| let s_awokensCount = Array.prototype.slice.call(searchBox.querySelectorAll(".awoken-div .count"));*/ | |||
| let s_sawokens = Array.prototype.slice.call(searchBox.querySelectorAll(".sawoken-div .sawoken-check")); | |||
| s_awokensIcon.forEach((b,idx)=>{ //每种觉醒增加1 | |||
| const s_awokensEquivalent = searchBox.querySelector(".awoken-div #consider-equivalent-awoken"); //搜索等效觉醒 | |||
| const s_sawokens = Array.prototype.slice.call(searchBox.querySelectorAll(".sawoken-div .sawoken-check")); | |||
| s_awokensIcons.forEach((b,idx)=>{ //每种觉醒增加1 | |||
| b.onclick = function(){ | |||
| const countDom = s_awokensCount[idx]; | |||
| const countDom = s_awokensCounts[idx]; | |||
| let count = parseInt(countDom.innerHTML,10); | |||
| if (count<9) | |||
| { | |||
| @@ -719,17 +721,17 @@ function initialize() | |||
| } | |||
| } | |||
| } | |||
| s_awokensCount.forEach((b,idx)=>{ //每种觉醒减少1 | |||
| s_awokensCounts.forEach((b,idx)=>{ //每种觉醒减少1 | |||
| b.onclick = searchSubAwoken; | |||
| }); | |||
| const awokenClear = searchBox.querySelector(".awoken-div .awoken-clear"); | |||
| const sawokenClear = searchBox.querySelector(".sawoken-div .sawoken-clear"); | |||
| awokenClear.onclick = function(){ //清空觉醒选项 | |||
| s_awokensCount.forEach(t=>{ | |||
| s_awokensCounts.forEach(t=>{ | |||
| t.innerHTML = 0; | |||
| }); | |||
| s_awokensItem.forEach(t=>{ | |||
| s_awokensItems.forEach(t=>{ | |||
| t.classList.add("zero"); | |||
| }); | |||
| }; | |||
| @@ -801,12 +803,12 @@ function initialize() | |||
| } | |||
| const typesFilter = s_types.filter(returnCheckedInput).map(returnInputValue).map(Str2Int); | |||
| const sawokensFilter = s_sawokens.filter(returnCheckedInput).map(returnInputValue).map(Str2Int); | |||
| const awokensFilter = s_awokensCount.filter(btn=>{return parseInt(btn.innerHTML,10)>0;}).map(btn=>{ | |||
| const awokensFilter = s_awokensCounts.filter(btn=>{return parseInt(btn.innerHTML,10)>0;}).map(btn=>{ | |||
| return {id:parseInt(btn.value,10),num:parseInt(btn.innerHTML,10)}; | |||
| }); | |||
| console.log("搜索条件",attr1,attr2,fixMainColor,typesFilter,awokensFilter,sawokensFilter); | |||
| let searchResult = searchCards(Cards,attr1,attr2,fixMainColor,typesFilter,awokensFilter,sawokensFilter); | |||
| console.log("搜索结果",searchResult); | |||
| console.debug("搜索条件",attr1,attr2,fixMainColor,typesFilter,awokensFilter,sawokensFilter,s_awokensEquivalent.checked); | |||
| const searchResult = searchCards(Cards,attr1,attr2,fixMainColor,typesFilter,awokensFilter,sawokensFilter,s_awokensEquivalent.checked); | |||
| console.debug("搜索结果",searchResult); | |||
| showSearch(searchResult); | |||
| }; | |||
| searchClose.onclick = function(){ | |||
| @@ -818,10 +820,10 @@ function initialize() | |||
| s_types.forEach(t=>{ | |||
| t.checked = false; | |||
| }); | |||
| s_awokensCount.forEach(t=>{ | |||
| s_awokensCounts.forEach(t=>{ | |||
| t.innerHTML = 0; | |||
| }); | |||
| s_awokensItem.forEach(t=>{ | |||
| s_awokensItems.forEach(t=>{ | |||
| t.classList.add("zero"); | |||
| }); | |||
| s_sawokens.forEach(t=>{ | |||
| @@ -1989,17 +1991,15 @@ function refreshFormationAwokenCount(awokenDom,teams){ | |||
| const aicon = awokenUL.querySelector(".awoken-" + ai); | |||
| if (!aicon) continue; //如果没有这个觉醒图,直接跳过 | |||
| //搜索等效觉醒 | |||
| const equivalentAwokens = equivalent_awoken.filter((ak)=>{return ak.small == ai || ak.big == ai;}); | |||
| if (equivalentAwokens.length > 0) | |||
| if (equivalent_awoken_small.indexOf(ai) >= 0) | |||
| { | |||
| const equivalentAwoken = equivalentAwokens[0]; | |||
| if (equivalentAwoken.small == ai) | |||
| { //小觉醒 | |||
| setCount(aicon, awokenCountInFormation(teams, equivalentAwoken.small, solo) + awokenCountInFormation(teams, equivalentAwoken.big, solo) * equivalentAwoken.times); | |||
| }else | |||
| { //属于大觉醒 | |||
| continue; | |||
| } | |||
| const equivalentAwoken = equivalent_awoken.filter((ak)=>{return ak.small == ai;})[0]; | |||
| const totalNum = awokenCountInFormation(teams, equivalentAwoken.small, solo) + | |||
| awokenCountInFormation(teams, equivalentAwoken.big, solo) * equivalentAwoken.times; | |||
| setCount(aicon, totalNum); | |||
| }else if(equivalent_awoken_big.indexOf(ai) >= 0) | |||
| { | |||
| continue; | |||
| }else | |||
| { | |||
| setCount(aicon,awokenCountInFormation(teams,ai,solo)); | |||
| @@ -11,7 +11,7 @@ | |||
| <script type="text/javascript" src="languages/language-list.js"></script> | |||
| <script type="text/javascript" src="universal_function.js"></script> | |||
| <script type="text/javascript" src="script.js"></script> | |||
| <script type="text/javascript" src="http://html2canvas.hertzen.com/dist/html2canvas.min.js"></script> | |||
| <script type="text/javascript" src="html2canvas.min.js"></script> | |||
| <script type="text/javascript"> | |||
| const solo = true; | |||
| const teamsCount = 1; | |||
| @@ -430,7 +430,7 @@ var formation = new Formation(teamsCount,6); | |||
| <li><input type="radio" name="attr-2" class="attr-radio" value="4" id="search-attr-2-4" /><label class="attr-t4" for="search-attr-2-4"><!--暗--></label></li> | |||
| <li><input type="radio" name="attr-2" class="attr-radio" value="-1" id="search-attr-2-none" /><label class="attr-none" for="search-attr-2-none"><!--无--></label></li> | |||
| </ul> | |||
| <label class="fix-main-color-label"><input type="checkbox" name="fix-main-color" class="fix-main-color" /></label> | |||
| <input type="checkbox" name="fix-main-color" class="config-checkbox-ipt" id="fix-main-color"><label class="config-checkbox-lbl fix-main-color-label" for="fix-main-color"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| </div> | |||
| <div class="types-div"><!--类型--> | |||
| <ul class="type-list"> | |||
| @@ -450,6 +450,7 @@ var formation = new Formation(teamsCount,6); | |||
| </div> | |||
| <div class="awoken-div"><!--觉醒--> | |||
| <button class="awoken-clear" ></button> | |||
| <input type="checkbox" name="consider-equivalent-awoken" class="config-checkbox-ipt" id="consider-equivalent-awoken" checked><label class="config-checkbox-lbl consider-equivalent-awoken-label" for="consider-equivalent-awoken"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| <ul class="awoken-ul"> | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-1" value="1"></button><button class="count" value="1">0</button></li><!--HP+--> | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-2" value="2"></button><button class="count" value="2">0</button></li><!--攻击+--> | |||
| @@ -23,6 +23,8 @@ const equivalent_awoken = [ | |||
| {small:19,big:53,times:2}, //手指 | |||
| {small:21,big:56,times:2}, //SB | |||
| ]; | |||
| const equivalent_awoken_small = equivalent_awoken.map(eak=>{return eak.small;}); | |||
| const equivalent_awoken_big = equivalent_awoken.map(eak=>{return eak.big;}); | |||
| //仿GM_xmlhttpRequest函数v1.3 | |||
| const GM_xmlhttpRequest = function(GM_param) { | |||
| const xhr = new XMLHttpRequest(); //创建XMLHttpRequest对象 | |||
| @@ -294,48 +296,66 @@ function calculateAbility(member = null, assist = null, solo = true) | |||
| return abilitys; | |||
| } | |||
| //搜索卡片用 | |||
| function searchCards(cards,attr1,attr2,fixMainColor,types,awokens,sawokens) | |||
| function searchCards(cards,attr1,attr2,fixMainColor,types,awokens,sawokens,equalAk) | |||
| { | |||
| let res = cards; | |||
| let cardsRange = cards; | |||
| //属性 | |||
| if (attr1 != null && attr1 === attr2) | |||
| { //当两个颜色相同时,主副一样颜色的只需判断一次 | |||
| res = res.filter(c=>{return c.attrs[0] == attr1 && c.attrs[1] == attr1;}); | |||
| cardsRange = cardsRange.filter(c=>{return c.attrs[0] == attr1 && c.attrs[1] == attr1;}); | |||
| }else if (fixMainColor || attr2 == -1) //如果固定了顺序,或者副属性选的是无 | |||
| { | |||
| if (attr1 != null) | |||
| { | |||
| res = res.filter(c=>{return c.attrs[0] == attr1;}); | |||
| cardsRange = cardsRange.filter(c=>{return c.attrs[0] == attr1;}); | |||
| } | |||
| if (attr2 != null) | |||
| { | |||
| res = res.filter(c=>{return c.attrs[1] == attr2;}); | |||
| cardsRange = cardsRange.filter(c=>{return c.attrs[1] == attr2;}); | |||
| } | |||
| }else //不限定顺序时 | |||
| { | |||
| if (attr1 != null) | |||
| { | |||
| res = res.filter(c=>{return c.attrs.indexOf(attr1)>=0;}); | |||
| cardsRange = cardsRange.filter(c=>{return c.attrs.indexOf(attr1)>=0;}); | |||
| } | |||
| if (attr2 != null) | |||
| { | |||
| res = res.filter(c=>{return c.attrs.indexOf(attr2)>=0;}); | |||
| cardsRange = cardsRange.filter(c=>{return c.attrs.indexOf(attr2)>=0;}); | |||
| } | |||
| } | |||
| //类型 | |||
| if (types.length>0) | |||
| { | |||
| res = res.filter(c=>{return types.some(t=>{return c.types.indexOf(t)>=0;});}); | |||
| cardsRange = cardsRange.filter(c=>{return types.some(t=>{return c.types.indexOf(t)>=0;});}); | |||
| } | |||
| //觉醒 | |||
| if (awokens.length>0) | |||
| { | |||
| res = res.filter(c=>{return awokens.every(a=>{ | |||
| return c.awakenings.filter(ca=>{return ca == a.id;}).length >= a.num; | |||
| cardsRange = cardsRange.filter(card=>{return awokens.every(ak=>{ | |||
| if (equalAk) //如果开启等效觉醒 | |||
| { | |||
| //搜索等效觉醒 | |||
| if (equivalent_awoken_small.indexOf(ak.id) >= 0) | |||
| { | |||
| const equivalentAwoken = equivalent_awoken.filter((eak)=>{return eak.small == ak.id;})[0]; | |||
| const totalNum = card.awakenings.filter(cak=>{return cak == equivalentAwoken.small;}).length + | |||
| card.awakenings.filter(cak=>{return cak == equivalentAwoken.big;}).length * equivalentAwoken.times; | |||
| return totalNum >= ak.num; | |||
| }else if(equivalent_awoken_big.indexOf(ak.id) >= 0) | |||
| { //属于大觉醒,直接忽略 | |||
| return true; | |||
| } | |||
| } | |||
| return card.awakenings.filter(cak=>{return cak == ak.id;}).length >= ak.num; | |||
| });}); | |||
| } | |||
| //超觉醒 | |||
| if (sawokens.length>0) | |||
| { | |||
| res = res.filter(c=>{return sawokens.some(sa=>{return c.superAwakenings.indexOf(sa)>=0;});}); | |||
| cardsRange = cardsRange.filter(card=>{return sawokens.some(sak=>{return card.superAwakenings.indexOf(sak)>=0;});}); | |||
| } | |||
| return res; | |||
| return cardsRange; | |||
| } | |||
| //产生一个怪物头像 | |||
| function createCardA(id) | |||