Browse Source

增加等效觉醒

tags/v5.2
枫谷剑仙 6 years ago
parent
commit
2c0b4e3bbd
5 changed files with 89 additions and 45 deletions
  1. +20
    -0
      html2canvas.min.js
  2. +3
    -0
      languages/zh.css
  3. +31
    -31
      script.js
  4. +3
    -2
      solo.html
  5. +32
    -12
      universal_function.js

+ 20
- 0
html2canvas.min.js
File diff suppressed because it is too large
View File


+ 3
- 0
languages/zh.css View File

@@ -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: "不限";
}


+ 31
- 31
script.js View File

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


+ 3
- 2
solo.html View File

@@ -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><!--攻击+-->


+ 32
- 12
universal_function.js View File

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


Loading…
Cancel
Save