| @@ -247,6 +247,9 @@ | |||||
| .search-box .attrs .fix-main-color-label::after{ | .search-box .attrs .fix-main-color-label::after{ | ||||
| content: "限制属性 1 为主属性,属性 2 为副属性"; | content: "限制属性 1 为主属性,属性 2 为副属性"; | ||||
| } | } | ||||
| .search-box .consider-equivalent-awoken-label::after{ | |||||
| content: "同时搜索等效觉醒"; | |||||
| } | |||||
| .attrs .attr-all::before{ | .attrs .attr-all::before{ | ||||
| content: "不限"; | content: "不限"; | ||||
| } | } | ||||
| @@ -680,23 +680,25 @@ function initialize() | |||||
| searchBox.classList.toggle("display-none"); | 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"); | return it.querySelector(".awoken-icon"); | ||||
| }); | }); | ||||
| let s_awokensCount = s_awokensItem.map(it=>{ | |||||
| const s_awokensCounts = s_awokensItems.map(it=>{ | |||||
| return it.querySelector(".count"); | 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(){ | b.onclick = function(){ | ||||
| const countDom = s_awokensCount[idx]; | |||||
| const countDom = s_awokensCounts[idx]; | |||||
| let count = parseInt(countDom.innerHTML,10); | let count = parseInt(countDom.innerHTML,10); | ||||
| if (count<9) | if (count<9) | ||||
| { | { | ||||
| @@ -719,17 +721,17 @@ function initialize() | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| s_awokensCount.forEach((b,idx)=>{ //每种觉醒减少1 | |||||
| s_awokensCounts.forEach((b,idx)=>{ //每种觉醒减少1 | |||||
| b.onclick = searchSubAwoken; | b.onclick = searchSubAwoken; | ||||
| }); | }); | ||||
| const awokenClear = searchBox.querySelector(".awoken-div .awoken-clear"); | const awokenClear = searchBox.querySelector(".awoken-div .awoken-clear"); | ||||
| const sawokenClear = searchBox.querySelector(".sawoken-div .sawoken-clear"); | const sawokenClear = searchBox.querySelector(".sawoken-div .sawoken-clear"); | ||||
| awokenClear.onclick = function(){ //清空觉醒选项 | awokenClear.onclick = function(){ //清空觉醒选项 | ||||
| s_awokensCount.forEach(t=>{ | |||||
| s_awokensCounts.forEach(t=>{ | |||||
| t.innerHTML = 0; | t.innerHTML = 0; | ||||
| }); | }); | ||||
| s_awokensItem.forEach(t=>{ | |||||
| s_awokensItems.forEach(t=>{ | |||||
| t.classList.add("zero"); | t.classList.add("zero"); | ||||
| }); | }); | ||||
| }; | }; | ||||
| @@ -801,12 +803,12 @@ function initialize() | |||||
| } | } | ||||
| const typesFilter = s_types.filter(returnCheckedInput).map(returnInputValue).map(Str2Int); | const typesFilter = s_types.filter(returnCheckedInput).map(returnInputValue).map(Str2Int); | ||||
| const sawokensFilter = s_sawokens.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)}; | 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); | showSearch(searchResult); | ||||
| }; | }; | ||||
| searchClose.onclick = function(){ | searchClose.onclick = function(){ | ||||
| @@ -818,10 +820,10 @@ function initialize() | |||||
| s_types.forEach(t=>{ | s_types.forEach(t=>{ | ||||
| t.checked = false; | t.checked = false; | ||||
| }); | }); | ||||
| s_awokensCount.forEach(t=>{ | |||||
| s_awokensCounts.forEach(t=>{ | |||||
| t.innerHTML = 0; | t.innerHTML = 0; | ||||
| }); | }); | ||||
| s_awokensItem.forEach(t=>{ | |||||
| s_awokensItems.forEach(t=>{ | |||||
| t.classList.add("zero"); | t.classList.add("zero"); | ||||
| }); | }); | ||||
| s_sawokens.forEach(t=>{ | s_sawokens.forEach(t=>{ | ||||
| @@ -1989,17 +1991,15 @@ function refreshFormationAwokenCount(awokenDom,teams){ | |||||
| const aicon = awokenUL.querySelector(".awoken-" + ai); | const aicon = awokenUL.querySelector(".awoken-" + ai); | ||||
| if (!aicon) continue; //如果没有这个觉醒图,直接跳过 | 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 | }else | ||||
| { | { | ||||
| setCount(aicon,awokenCountInFormation(teams,ai,solo)); | 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="languages/language-list.js"></script> | ||||
| <script type="text/javascript" src="universal_function.js"></script> | <script type="text/javascript" src="universal_function.js"></script> | ||||
| <script type="text/javascript" src="script.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"> | <script type="text/javascript"> | ||||
| const solo = true; | const solo = true; | ||||
| const teamsCount = 1; | 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="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> | <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> | </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> | ||||
| <div class="types-div"><!--类型--> | <div class="types-div"><!--类型--> | ||||
| <ul class="type-list"> | <ul class="type-list"> | ||||
| @@ -450,6 +450,7 @@ var formation = new Formation(teamsCount,6); | |||||
| </div> | </div> | ||||
| <div class="awoken-div"><!--觉醒--> | <div class="awoken-div"><!--觉醒--> | ||||
| <button class="awoken-clear" ></button> | <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"> | <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-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><!--攻击+--> | <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:19,big:53,times:2}, //手指 | ||||
| {small:21,big:56,times:2}, //SB | {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 | //仿GM_xmlhttpRequest函数v1.3 | ||||
| const GM_xmlhttpRequest = function(GM_param) { | const GM_xmlhttpRequest = function(GM_param) { | ||||
| const xhr = new XMLHttpRequest(); //创建XMLHttpRequest对象 | const xhr = new XMLHttpRequest(); //创建XMLHttpRequest对象 | ||||
| @@ -294,48 +296,66 @@ function calculateAbility(member = null, assist = null, solo = true) | |||||
| return abilitys; | 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) | 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) //如果固定了顺序,或者副属性选的是无 | }else if (fixMainColor || attr2 == -1) //如果固定了顺序,或者副属性选的是无 | ||||
| { | { | ||||
| if (attr1 != null) | if (attr1 != null) | ||||
| { | { | ||||
| res = res.filter(c=>{return c.attrs[0] == attr1;}); | |||||
| cardsRange = cardsRange.filter(c=>{return c.attrs[0] == attr1;}); | |||||
| } | } | ||||
| if (attr2 != null) | if (attr2 != null) | ||||
| { | { | ||||
| res = res.filter(c=>{return c.attrs[1] == attr2;}); | |||||
| cardsRange = cardsRange.filter(c=>{return c.attrs[1] == attr2;}); | |||||
| } | } | ||||
| }else //不限定顺序时 | }else //不限定顺序时 | ||||
| { | { | ||||
| if (attr1 != null) | 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) | 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) | 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) | 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) | 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) | function createCardA(id) | ||||