优化代码
This commit is contained in:
parent
3be8389acf
commit
0780756b11
17
json_data.js
17
json_data.js
|
@ -1,4 +1,19 @@
|
||||||
//类型允许的潜觉杀,前面的数字是官方数据的类型编号,后面的杀是自己做的图片中的潜觉序号
|
const dataSourceList = [ //几个不同的游戏服务区
|
||||||
|
{
|
||||||
|
code:"ja",
|
||||||
|
source:"パズル&ドラゴンズ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code:"en",
|
||||||
|
source:"Puzzle & Dragons"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code:"ko",
|
||||||
|
source:"퍼즐앤드래곤"
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
//类型允许的潜觉杀,前面的数字是官方数据的类型编号,后面的杀是自己做的图片中的潜觉序号
|
||||||
const type_allowable_latent = {
|
const type_allowable_latent = {
|
||||||
"0":[], //0进化
|
"0":[], //0进化
|
||||||
"12":[], //12觉醒
|
"12":[], //12觉醒
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
guideURL:"http://www.puzzledragonx.com/en/monster.asp?n=$1"
|
guideURL:"http://www.puzzledragonx.com/en/monster.asp?n=$1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:"中文(简体)原版技能",i18n:"zh",searchlist:["chs","ja"],
|
name:"中文(繁體)",i18n:"zh-TW",searchlist:["cht","ja"],
|
||||||
guideURL:"http://pad.skyozora.com/pets/$1"
|
guideURL:"http://pad.skyozora.com/pets/$1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
guideURL:"http://pad.skyozora.com/pets/$1"
|
guideURL:"http://pad.skyozora.com/pets/$1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:"中文(繁體)",i18n:"zh-TW",searchlist:["cht","ja"],
|
name:"中文(简体)原版技能",i18n:"zh",searchlist:["chs","ja"],
|
||||||
guideURL:"http://pad.skyozora.com/pets/$1"
|
guideURL:"http://pad.skyozora.com/pets/$1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
156
script.js
156
script.js
|
@ -1,24 +1,9 @@
|
||||||
const dataSourceList = [ //几个不同的游戏服务区
|
|
||||||
{
|
|
||||||
code:"ja",
|
|
||||||
source:"パズル&ドラゴンズ"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code:"en",
|
|
||||||
source:"Puzzle & Dragons"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code:"ko",
|
|
||||||
source:"퍼즐앤드래곤"
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
var Cards; //怪物数据
|
var Cards; //怪物数据
|
||||||
var Skills; //技能数据
|
var Skills; //技能数据
|
||||||
var currentLanguage; //当前语言
|
var currentLanguage; //当前语言
|
||||||
var currentDataSource; //当前数据
|
var currentDataSource; //当前数据
|
||||||
|
|
||||||
var interchangeSvg; //储存划线的SVG
|
var interchangeSvg; //储存划线的SVG
|
||||||
var changeSwapToCopy; //储存交换“复制”和“替换”
|
|
||||||
var controlBox; //储存整个controlBox
|
var controlBox; //储存整个controlBox
|
||||||
var statusLine; //储存状态栏
|
var statusLine; //储存状态栏
|
||||||
var formationBox; //储存整个formationBox
|
var formationBox; //储存整个formationBox
|
||||||
|
@ -27,6 +12,25 @@ var allMembers = []; //储存所有成员,包含辅助
|
||||||
var editBox; //储存整个editBox
|
var editBox; //储存整个editBox
|
||||||
var showSearch; //整个程序都可以用的显示搜索函数
|
var showSearch; //整个程序都可以用的显示搜索函数
|
||||||
|
|
||||||
|
//数组去重
|
||||||
|
/* https://www.cnblogs.com/baiyangyuanzi/p/6726258.html
|
||||||
|
* 实现思路:获取没重复的最右一值放入新数组。
|
||||||
|
* (检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)*/
|
||||||
|
Array.prototype.uniq = function()
|
||||||
|
{
|
||||||
|
let temp = [];
|
||||||
|
const l = this.length;
|
||||||
|
for(let i = 0; i < l; i++) {
|
||||||
|
for(let j = i + 1; j < l; j++){
|
||||||
|
if (this[i] === this[j]){
|
||||||
|
i++;
|
||||||
|
j = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
temp.push(this[i]);
|
||||||
|
}
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
//队员基本的留空
|
//队员基本的留空
|
||||||
var Member = function(){
|
var Member = function(){
|
||||||
this.id=0;
|
this.id=0;
|
||||||
|
@ -294,7 +298,6 @@ window.onload = function()
|
||||||
controlBox = document.body.querySelector(".control-box");
|
controlBox = document.body.querySelector(".control-box");
|
||||||
statusLine = controlBox.querySelector(".status"); //显示当前状态的
|
statusLine = controlBox.querySelector(".status"); //显示当前状态的
|
||||||
const helpLink = controlBox.querySelector(".help-link");
|
const helpLink = controlBox.querySelector(".help-link");
|
||||||
changeSwapToCopy = controlBox.querySelector("#change-swap-to-copy");
|
|
||||||
interchangeSVG = document.body.querySelector("#interchange-line");
|
interchangeSVG = document.body.querySelector("#interchange-line");
|
||||||
interchangeSVG.line = interchangeSVG.querySelector("g line");
|
interchangeSVG.line = interchangeSVG.querySelector("g line");
|
||||||
interchangeSVG.changePoint = function(p1,p2){
|
interchangeSVG.changePoint = function(p1,p2){
|
||||||
|
@ -312,62 +315,45 @@ window.onload = function()
|
||||||
toggleShowMonSkillCd();
|
toggleShowMonSkillCd();
|
||||||
|
|
||||||
formationBox = document.body.querySelector(".formation-box");
|
formationBox = document.body.querySelector(".formation-box");
|
||||||
|
|
||||||
editBox = document.body.querySelector(".edit-box");
|
editBox = document.body.querySelector(".edit-box");
|
||||||
|
|
||||||
|
if (location.hostname.includes("gitee")) { helpLink.hostname = "gitee.com"; }
|
||||||
if (location.hostname.indexOf("gitee")>=0)
|
|
||||||
{
|
|
||||||
helpLink.hostname = "gitee.com";
|
|
||||||
}
|
|
||||||
|
|
||||||
//▼添加语言列表开始
|
//▼添加语言列表开始
|
||||||
const langSelectDom = controlBox.querySelector(".languages");
|
const langSelectDom = controlBox.querySelector(".languages");
|
||||||
languageList.forEach(function(l){
|
languageList.forEach(lang=>
|
||||||
langSelectDom.options.add(new Option(l.name,l.i18n));
|
langSelectDom.options.add(new Option(lang.name,lang.i18n))
|
||||||
});
|
);
|
||||||
|
|
||||||
const parameter_i18n = getQueryString("l") || getQueryString("lang"); //获取参数指定的语言
|
const parameter_i18n = getQueryString("l") || getQueryString("lang"); //获取参数指定的语言
|
||||||
const browser_i18n = (navigator.language || navigator.userLanguage); //获取浏览器语言
|
const browser_i18n = (navigator.language || navigator.userLanguage); //获取浏览器语言
|
||||||
let havingLanguage = languageList.filter(function(l){ //筛选出符合的语言
|
currentLanguage = languageList.find(lang=>{ //筛选出符合的语言
|
||||||
if (parameter_i18n) //如果已指定就用指定的语言
|
if (parameter_i18n) //如果已指定就用指定的语言
|
||||||
return parameter_i18n.indexOf(l.i18n)>=0;
|
return parameter_i18n.includes(lang.i18n);
|
||||||
else //否则筛选浏览器默认语言
|
else //否则筛选浏览器默认语言
|
||||||
return browser_i18n.indexOf(l.i18n)>=0;
|
return browser_i18n.includes(lang.i18n);
|
||||||
});
|
}) ||
|
||||||
currentLanguage = havingLanguage.length ?
|
languageList[0]; //没有找到指定语言的情况下,自动用第一个语言(英语)
|
||||||
havingLanguage.pop() : //有语言使用最后一个
|
|
||||||
languageList[0]; //没有找到指定语言的情况下,自动用第一个语言(英语)
|
|
||||||
document.head.querySelector("#language-css").href = "languages/"+currentLanguage.i18n+".css";
|
document.head.querySelector("#language-css").href = "languages/"+currentLanguage.i18n+".css";
|
||||||
|
|
||||||
const langOptionArray = Array.prototype.slice.call(langSelectDom.options);
|
const langOptionArray = Array.from(langSelectDom.options);
|
||||||
langOptionArray.some(function(langOpt){
|
langOptionArray.find(langOpt=>langOpt.value == currentLanguage.i18n).selected = true;
|
||||||
if (langOpt.value == currentLanguage.i18n)
|
|
||||||
{
|
|
||||||
langOpt.selected = true;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
//▲添加语言列表结束
|
//▲添加语言列表结束
|
||||||
//▼添加数据来源列表开始
|
//▼添加数据来源列表开始
|
||||||
const dataSelectDom = controlBox.querySelector(".datasource");
|
const dataSelectDom = controlBox.querySelector(".datasource");
|
||||||
dataSourceList.forEach(function(ds){
|
dataSourceList.forEach(ds=>
|
||||||
dataSelectDom.options.add(new Option(ds.source,ds.code));
|
dataSelectDom.options.add(new Option(ds.source,ds.code))
|
||||||
});
|
);
|
||||||
const parameter_dsCode = getQueryString("s"); //获取参数指定的数据来源
|
const parameter_dsCode = getQueryString("s"); //获取参数指定的数据来源
|
||||||
let havingDataSource = dataSourceList.filter(function(ds){ //筛选出符合的数据源
|
currentDataSource = parameter_dsCode?
|
||||||
return ds.code == parameter_dsCode;
|
(dataSourceList.find(ds => ds.code == parameter_dsCode) || dataSourceList[0]) ://筛选出符合的数据源
|
||||||
});
|
dataSourceList[0]; //没有指定,直接使用日服
|
||||||
currentDataSource = havingDataSource.length ? havingDataSource[0]: dataSourceList[0];
|
|
||||||
document.body.classList.add("ds-"+currentDataSource.code);
|
document.body.classList.add("ds-"+currentDataSource.code);
|
||||||
let dataSourceOptionArray = Array.prototype.slice.call(dataSelectDom.options);
|
const dataSourceOptionArray = Array.from(dataSelectDom.options);
|
||||||
dataSourceOptionArray.some(function(dataOpt){
|
dataSourceOptionArray.find(dataOpt=>dataOpt.value == currentDataSource.code).selected = true;
|
||||||
if (dataOpt.value == currentDataSource.code)
|
|
||||||
{
|
|
||||||
dataOpt.selected = true;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
const sourceDataFolder = "monsters-info";
|
const sourceDataFolder = "monsters-info";
|
||||||
|
|
||||||
var newCkeys; //当前的Ckey
|
var newCkeys; //当前的Ckey
|
||||||
|
@ -380,7 +366,7 @@ window.onload = function()
|
||||||
dealCkeyData(response.response);
|
dealCkeyData(response.response);
|
||||||
},
|
},
|
||||||
onerror: function(response) {
|
onerror: function(response) {
|
||||||
let isChrome = navigator.userAgent.indexOf("Chrome") >=0;
|
const isChrome = navigator.userAgent.includes("Chrome");
|
||||||
if (isChrome && location.host.length==0 && response.response.length>0)
|
if (isChrome && location.host.length==0 && response.response.length>0)
|
||||||
{
|
{
|
||||||
console.info("因为是Chrome本地打开,正在尝试读取JSON");
|
console.info("因为是Chrome本地打开,正在尝试读取JSON");
|
||||||
|
@ -458,7 +444,7 @@ window.onload = function()
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
onerror: function(response) {
|
onerror: function(response) {
|
||||||
let isChrome = navigator.userAgent.indexOf("Chrome") >=0;
|
const isChrome = navigator.userAgent.includes("Chrome");
|
||||||
if (isChrome && location.host.length==0 && response.response.length>0)
|
if (isChrome && location.host.length==0 && response.response.length>0)
|
||||||
{
|
{
|
||||||
console.info("因为是Chrome本地打开,正在尝试读取JSON");
|
console.info("因为是Chrome本地打开,正在尝试读取JSON");
|
||||||
|
@ -520,7 +506,7 @@ window.onload = function()
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
onerror: function(response) {
|
onerror: function(response) {
|
||||||
let isChrome = navigator.userAgent.indexOf("Chrome") >=0;
|
let isChrome = navigator.userAgent.includes("Chrome");
|
||||||
if (isChrome && location.host.length==0 && response.response.length>0)
|
if (isChrome && location.host.length==0 && response.response.length>0)
|
||||||
{
|
{
|
||||||
console.info("因为是Chrome本地打开,正在尝试读取JSON");
|
console.info("因为是Chrome本地打开,正在尝试读取JSON");
|
||||||
|
@ -704,8 +690,8 @@ function initialize()
|
||||||
//将所有怪物头像添加到全局数组
|
//将所有怪物头像添加到全局数组
|
||||||
teamBigBoxs.forEach(teamBigBox=>{
|
teamBigBoxs.forEach(teamBigBox=>{
|
||||||
const teamBox = teamBigBox.querySelector(".team-box");
|
const teamBox = teamBigBox.querySelector(".team-box");
|
||||||
const menbers = Array.prototype.slice.call(teamBox.querySelectorAll(".team-members .monster"));
|
const menbers = Array.from(teamBox.querySelectorAll(".team-members .monster"));
|
||||||
const assist = Array.prototype.slice.call(teamBox.querySelectorAll(".team-assist .monster"));
|
const assist = Array.from(teamBox.querySelectorAll(".team-assist .monster"));
|
||||||
menbers.forEach(m=>{
|
menbers.forEach(m=>{
|
||||||
allMembers.push(m);
|
allMembers.push(m);
|
||||||
});
|
});
|
||||||
|
@ -735,7 +721,7 @@ function initialize()
|
||||||
//徽章
|
//徽章
|
||||||
const teamBadge = tb.querySelector(".team-badge");
|
const teamBadge = tb.querySelector(".team-badge");
|
||||||
if (!teamBadge) return;
|
if (!teamBadge) return;
|
||||||
const badges = Array.prototype.slice.call(teamBadge.querySelectorAll(".badge-bg"));
|
const badges = Array.from(teamBadge.querySelectorAll(".badge-bg"));
|
||||||
badges.forEach((badge,bidx) => {
|
badges.forEach((badge,bidx) => {
|
||||||
badge.onclick = function(){
|
badge.onclick = function(){
|
||||||
if (teamBadge.classList.contains(className_ChoseBadges))
|
if (teamBadge.classList.contains(className_ChoseBadges))
|
||||||
|
@ -796,7 +782,7 @@ function initialize()
|
||||||
{
|
{
|
||||||
showSearch(Cards.filter(card=>{
|
showSearch(Cards.filter(card=>{
|
||||||
return splitAltName.some(alt=>{
|
return splitAltName.some(alt=>{
|
||||||
return alt.length > 0 && (card.altName.indexOf(alt)>=0 || card.name.indexOf(alt)>=0);
|
return alt.length > 0 && (card.altName.includes(alt) || card.name.includes(alt));
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
@ -828,11 +814,11 @@ function initialize()
|
||||||
searchBox.classList.toggle("display-none");
|
searchBox.classList.toggle("display-none");
|
||||||
};
|
};
|
||||||
|
|
||||||
const s_attr1s = Array.prototype.slice.call(searchBox.querySelectorAll(".attrs .attr-list-1 .attr-radio"));
|
const s_attr1s = Array.from(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_attr2s = Array.from(searchBox.querySelectorAll(".attrs .attr-list-2 .attr-radio"));
|
||||||
const s_fixMainColor = searchBox.querySelector("#fix-main-color");
|
const s_fixMainColor = searchBox.querySelector("#fix-main-color");
|
||||||
const s_types = Array.prototype.slice.call(searchBox.querySelectorAll(".types-div .type-check"));
|
const s_types = Array.from(searchBox.querySelectorAll(".types-div .type-check"));
|
||||||
const s_awokensItems = Array.prototype.slice.call(searchBox.querySelectorAll(".awoken-div .awoken-count"));
|
const s_awokensItems = Array.from(searchBox.querySelectorAll(".awoken-div .awoken-count"));
|
||||||
const s_awokensIcons = s_awokensItems.map(it=>{
|
const s_awokensIcons = s_awokensItems.map(it=>{
|
||||||
return it.querySelector(".awoken-icon");
|
return it.querySelector(".awoken-icon");
|
||||||
});
|
});
|
||||||
|
@ -853,7 +839,7 @@ function initialize()
|
||||||
|
|
||||||
const s_sawokenDiv = searchBox.querySelector(".sawoken-div");
|
const s_sawokenDiv = searchBox.querySelector(".sawoken-div");
|
||||||
|
|
||||||
const s_sawokens = Array.prototype.slice.call(s_sawokenDiv.querySelectorAll(".sawoken-check"));
|
const s_sawokens = Array.from(s_sawokenDiv.querySelectorAll(".sawoken-check"));
|
||||||
const s_includeSuperAwoken = searchBox.querySelector("#include-super-awoken"); //搜索超觉醒
|
const s_includeSuperAwoken = searchBox.querySelector("#include-super-awoken"); //搜索超觉醒
|
||||||
s_includeSuperAwoken.onclick = function(){
|
s_includeSuperAwoken.onclick = function(){
|
||||||
if (this.checked)
|
if (this.checked)
|
||||||
|
@ -1042,7 +1028,7 @@ function initialize()
|
||||||
|
|
||||||
searchMonList.classList.add("display-none");
|
searchMonList.classList.add("display-none");
|
||||||
let fragment = document.createDocumentFragment(); //创建节点用的临时空间
|
let fragment = document.createDocumentFragment(); //创建节点用的临时空间
|
||||||
let headsArray = Array.prototype.slice.call(searchMonList.children);
|
let headsArray = Array.from(searchMonList.children);
|
||||||
headsArray.sort((head_a,head_b)=>{
|
headsArray.sort((head_a,head_b)=>{
|
||||||
let sortNumber = sort_function_list[sortIndex].function(head_a.card,head_b.card);
|
let sortNumber = sort_function_list[sortIndex].function(head_a.card,head_b.card);
|
||||||
if (reverse) sortNumber *= -1;
|
if (reverse) sortNumber *= -1;
|
||||||
|
@ -1075,7 +1061,7 @@ function initialize()
|
||||||
};
|
};
|
||||||
monstersID.oninput = monstersID.onchange;
|
monstersID.oninput = monstersID.onchange;
|
||||||
//觉醒
|
//觉醒
|
||||||
const monEditAwokens = Array.prototype.slice.call(settingBox.querySelectorAll(".row-mon-awoken .awoken-ul .awoken-icon"));
|
const monEditAwokens = Array.from(settingBox.querySelectorAll(".row-mon-awoken .awoken-ul .awoken-icon"));
|
||||||
monEditAwokens.forEach((akDom,idx)=>{
|
monEditAwokens.forEach((akDom,idx)=>{
|
||||||
akDom.onclick = function(){
|
akDom.onclick = function(){
|
||||||
editBox.awokenCount = idx;
|
editBox.awokenCount = idx;
|
||||||
|
@ -1104,7 +1090,7 @@ function initialize()
|
||||||
};
|
};
|
||||||
|
|
||||||
//超觉醒
|
//超觉醒
|
||||||
let monEditSAwokens = Array.prototype.slice.call(settingBox.querySelectorAll(".row-mon-super-awoken .awoken-ul .awoken-icon"));
|
let monEditSAwokens = Array.from(settingBox.querySelectorAll(".row-mon-super-awoken .awoken-ul .awoken-icon"));
|
||||||
monEditSAwokens.forEach((akDom,idx,domArr)=>{
|
monEditSAwokens.forEach((akDom,idx,domArr)=>{
|
||||||
akDom.onclick = function(){
|
akDom.onclick = function(){
|
||||||
for(var ai=0;ai<domArr.length;ai++)
|
for(var ai=0;ai<domArr.length;ai++)
|
||||||
|
@ -1195,9 +1181,9 @@ function initialize()
|
||||||
|
|
||||||
//潜觉
|
//潜觉
|
||||||
const monEditLatentUl = settingBox.querySelector(".m-latent-ul");
|
const monEditLatentUl = settingBox.querySelector(".m-latent-ul");
|
||||||
const monEditLatents = Array.prototype.slice.call(monEditLatentUl.querySelectorAll("li"));
|
const monEditLatents = Array.from(monEditLatentUl.querySelectorAll("li"));
|
||||||
const monEditLatentAllowableUl = settingBox.querySelector(".m-latent-allowable-ul");
|
const monEditLatentAllowableUl = settingBox.querySelector(".m-latent-allowable-ul");
|
||||||
const monEditLatentsAllowable = Array.prototype.slice.call(monEditLatentAllowableUl.querySelectorAll("li"));
|
const monEditLatentsAllowable = Array.from(monEditLatentAllowableUl.querySelectorAll("li"));
|
||||||
editBox.refreshLatent = function(latent,monid) //刷新潜觉
|
editBox.refreshLatent = function(latent,monid) //刷新潜觉
|
||||||
{
|
{
|
||||||
const maxLatentCount = getMaxLatentCount(monid); //最大潜觉数量
|
const maxLatentCount = getMaxLatentCount(monid); //最大潜觉数量
|
||||||
|
@ -1586,6 +1572,7 @@ function interchangeCard(formArr,toArr)
|
||||||
return newMember;
|
return newMember;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const changeSwapToCopy = controlBox.querySelector("#change-swap-to-copy");//储存交换“复制”和“替换”
|
||||||
const isCopy = changeSwapToCopy.checked;
|
const isCopy = changeSwapToCopy.checked;
|
||||||
let from = formation.teams[formArr[0]][formArr[1]][formArr[2]];
|
let from = formation.teams[formArr[0]][formArr[1]][formArr[2]];
|
||||||
let to = formation.teams[toArr[0]][toArr[1]][toArr[2]];
|
let to = formation.teams[toArr[0]][toArr[1]][toArr[2]];
|
||||||
|
@ -1645,7 +1632,7 @@ function changeid(mon,monDom,latentDom)
|
||||||
monDom.classList.add("allowable-assist");
|
monDom.classList.add("allowable-assist");
|
||||||
else
|
else
|
||||||
monDom.classList.remove("allowable-assist");
|
monDom.classList.remove("allowable-assist");
|
||||||
if (card.awakenings.indexOf(49)>=0)//武器
|
if (card.awakenings.includes(49))//武器
|
||||||
monDom.classList.add("wepon");
|
monDom.classList.add("wepon");
|
||||||
else
|
else
|
||||||
monDom.classList.remove("wepon");
|
monDom.classList.remove("wepon");
|
||||||
|
@ -1732,7 +1719,7 @@ function changeid(mon,monDom,latentDom)
|
||||||
}
|
}
|
||||||
if (latentDom)
|
if (latentDom)
|
||||||
{
|
{
|
||||||
let latentDoms = Array.prototype.slice.call(latentDom.querySelectorAll("li"));
|
let latentDoms = Array.from(latentDom.querySelectorAll("li"));
|
||||||
if (mon.latent) //如果提供了潜觉
|
if (mon.latent) //如果提供了潜觉
|
||||||
{
|
{
|
||||||
let latent = mon.latent.sort(function(a,b){
|
let latent = mon.latent.sort(function(a,b){
|
||||||
|
@ -1908,10 +1895,7 @@ function editBoxChangeMonId(id)
|
||||||
const mAltName = monInfoBox.querySelector(".monster-altName");
|
const mAltName = monInfoBox.querySelector(".monster-altName");
|
||||||
mAltName.innerHTML = card.altName;
|
mAltName.innerHTML = card.altName;
|
||||||
mAltName.setAttribute("data-altName",card.altName);
|
mAltName.setAttribute("data-altName",card.altName);
|
||||||
/*const splitAltName = card.altName.split("|"); //取出分段的那种的第一段
|
|
||||||
const hasGroup = splitAltName.some(alt=>{ //自己的名称是否只有一个
|
|
||||||
return Cards.some(c=>{return c.id != card.id && c.altName.indexOf(alt)>=0;});
|
|
||||||
});*/
|
|
||||||
if (card.altName.length == 0)
|
if (card.altName.length == 0)
|
||||||
{ //当没有合作名
|
{ //当没有合作名
|
||||||
mAltName.classList.add("display-none");
|
mAltName.classList.add("display-none");
|
||||||
|
@ -2010,13 +1994,13 @@ function editBoxChangeMonId(id)
|
||||||
const rowLatent = settingBox.querySelector(".row-mon-latent");
|
const rowLatent = settingBox.querySelector(".row-mon-latent");
|
||||||
const monLatentAllowUl = rowLatent.querySelector(".m-latent-allowable-ul");
|
const monLatentAllowUl = rowLatent.querySelector(".m-latent-allowable-ul");
|
||||||
//该宠Type允许的杀,uniq是去重的自定义函数
|
//该宠Type允许的杀,uniq是去重的自定义函数
|
||||||
const allowLatent = uniq(card.types.reduce(function (previous, t, index, array) {
|
const allowLatent = card.types.reduce(function (previous, t, index, array) {
|
||||||
return previous.concat(type_allowable_latent[t]);
|
return previous.concat(type_allowable_latent[t]);
|
||||||
},[]));
|
},[]).uniq();
|
||||||
for(let li=17;li<=24;li++) //显示允许的杀,隐藏不允许的杀
|
for(let li=17;li<=24;li++) //显示允许的杀,隐藏不允许的杀
|
||||||
{
|
{
|
||||||
const latentDom = monLatentAllowUl.querySelector(".latent-icon-" + li);
|
const latentDom = monLatentAllowUl.querySelector(".latent-icon-" + li);
|
||||||
if (allowLatent.indexOf(li)>=0)
|
if (allowLatent.includes(li))
|
||||||
{
|
{
|
||||||
if(latentDom.classList.contains("unselected-latent"))
|
if(latentDom.classList.contains("unselected-latent"))
|
||||||
latentDom.classList.remove("unselected-latent");
|
latentDom.classList.remove("unselected-latent");
|
||||||
|
@ -2042,7 +2026,7 @@ function editBoxChangeMonId(id)
|
||||||
skillTitle.innerHTML = descriptionToHTML(skill.name);
|
skillTitle.innerHTML = descriptionToHTML(skill.name);
|
||||||
skillTitle.setAttribute("data-skillid", skill.id);
|
skillTitle.setAttribute("data-skillid", skill.id);
|
||||||
skillDetail.innerHTML = parseSkillDescription(skill);
|
skillDetail.innerHTML = parseSkillDescription(skill);
|
||||||
const t_maxLevel = card.overlay || card.types.indexOf(15)>=0 ? 1 : skill.maxLevel; //遇到不能升技的,最大等级强制为1
|
const t_maxLevel = card.overlay || card.types.includes(15) ? 1 : skill.maxLevel; //遇到不能升技的,最大等级强制为1
|
||||||
skillLevel.max = t_maxLevel;
|
skillLevel.max = t_maxLevel;
|
||||||
skillLevel.value = t_maxLevel;
|
skillLevel.value = t_maxLevel;
|
||||||
skillLevel_Max.value = t_maxLevel;
|
skillLevel_Max.value = t_maxLevel;
|
||||||
|
@ -2419,7 +2403,7 @@ function localisation($tra)
|
||||||
formationBox.querySelector(".detail-box .detail").placeholder = $tra.detail_blank;
|
formationBox.querySelector(".detail-box .detail").placeholder = $tra.detail_blank;
|
||||||
|
|
||||||
const s_sortList = editBox.querySelector(".search-box .sort-div .sort-list");
|
const s_sortList = editBox.querySelector(".search-box .sort-div .sort-list");
|
||||||
const sortOptions = Array.prototype.slice.call(s_sortList.options);
|
const sortOptions = Array.from(s_sortList.options);
|
||||||
sortOptions.forEach(opt=>{
|
sortOptions.forEach(opt=>{
|
||||||
const tag = opt.getAttribute("data-tag");
|
const tag = opt.getAttribute("data-tag");
|
||||||
const trans = $tra.sort_name[tag];
|
const trans = $tra.sort_name[tag];
|
||||||
|
|
|
@ -85,24 +85,6 @@ function getQueryString(name,url) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//数组去重
|
|
||||||
/* https://www.cnblogs.com/baiyangyuanzi/p/6726258.html
|
|
||||||
* 实现思路:获取没重复的最右一值放入新数组。
|
|
||||||
* (检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)*/
|
|
||||||
function uniq(array){
|
|
||||||
let temp = [];
|
|
||||||
const l = array.length;
|
|
||||||
for(let i = 0; i < l; i++) {
|
|
||||||
for(let j = i + 1; j < l; j++){
|
|
||||||
if (array[i] === array[j]){
|
|
||||||
i++;
|
|
||||||
j = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
temp.push(array[i]);
|
|
||||||
}
|
|
||||||
return temp;
|
|
||||||
}
|
|
||||||
//计算用了多少潜觉格子
|
//计算用了多少潜觉格子
|
||||||
function usedHole(latent)
|
function usedHole(latent)
|
||||||
{
|
{
|
||||||
|
@ -143,7 +125,7 @@ function awokenCountInTeam(team,awokenIndex,solo)
|
||||||
{
|
{
|
||||||
enableAwoken = enableAwoken.concat(card.superAwakenings[mon.sawoken]);
|
enableAwoken = enableAwoken.concat(card.superAwakenings[mon.sawoken]);
|
||||||
}
|
}
|
||||||
if (assistCard && assistCard.enabled && assistCard.awakenings.indexOf(49)>=0)
|
if (assistCard && assistCard.enabled && assistCard.awakenings.includes(49))
|
||||||
{ //如果卡片未启用
|
{ //如果卡片未启用
|
||||||
enableAwoken = enableAwoken.concat(assistCard.awakenings);
|
enableAwoken = enableAwoken.concat(assistCard.awakenings);
|
||||||
}
|
}
|
||||||
|
@ -163,7 +145,7 @@ function returnMonsterNameArr(card, lsList, defaultCode)
|
||||||
else if(card.otLangName)
|
else if(card.otLangName)
|
||||||
{return card.otLangName[lc];}
|
{return card.otLangName[lc];}
|
||||||
}).filter(function(ln){ //去掉空值和问号
|
}).filter(function(ln){ //去掉空值和问号
|
||||||
return (ln?(ln.length>0):false) && !/^(?:초월\s*)?\?+/.test(ln);
|
return typeof(ln) == "string" && ln.length>0 && !new RegExp("^(?:초월\\s*)?[\\?\\*]+","i").test(ln);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (monNameArr.length < 1) //如果本来的列表里没有名字
|
if (monNameArr.length < 1) //如果本来的列表里没有名字
|
||||||
|
@ -261,7 +243,7 @@ function calculateAbility(member = null, assist = null, solo = true)
|
||||||
if (assistCard && assistCard.id > 0 && assistCard.enabled)
|
if (assistCard && assistCard.id > 0 && assistCard.enabled)
|
||||||
{
|
{
|
||||||
const assistAwokenList = assistCard.awakenings.slice(0, assist.awoken); //储存武器点亮的觉醒
|
const assistAwokenList = assistCard.awakenings.slice(0, assist.awoken); //储存武器点亮的觉醒
|
||||||
if (assistAwokenList.indexOf(49)>=0) //49是武器觉醒,确认已经点亮了武器觉醒
|
if (assistAwokenList.includes(49)) //49是武器觉醒,确认已经点亮了武器觉醒
|
||||||
{
|
{
|
||||||
awokenList = awokenList.concat(assistAwokenList);
|
awokenList = awokenList.concat(assistAwokenList);
|
||||||
}
|
}
|
||||||
|
@ -274,7 +256,7 @@ function calculateAbility(member = null, assist = null, solo = true)
|
||||||
//觉醒增加的数值
|
//觉醒增加的数值
|
||||||
const n_awoken = awokenList.length>0 ?
|
const n_awoken = awokenList.length>0 ?
|
||||||
Math.round(awokenAdd[idx].reduce(function(previous,aw){
|
Math.round(awokenAdd[idx].reduce(function(previous,aw){
|
||||||
const awokenCount = awokenList.filter(function(a){return a==aw.index;}).length; //每个觉醒的数量
|
const awokenCount = awokenList.filter(ak=>ak==aw.index).length; //每个觉醒的数量
|
||||||
if (awokenCount>0)
|
if (awokenCount>0)
|
||||||
return previous + aw.value * awokenCount;
|
return previous + aw.value * awokenCount;
|
||||||
else
|
else
|
||||||
|
@ -284,7 +266,7 @@ function calculateAbility(member = null, assist = null, solo = true)
|
||||||
//潜觉增加的倍率
|
//潜觉增加的倍率
|
||||||
const n_latent = (member.latent && member.latent.length>0) ?
|
const n_latent = (member.latent && member.latent.length>0) ?
|
||||||
Math.round(latentScale[idx].reduce(function(previous,la){
|
Math.round(latentScale[idx].reduce(function(previous,la){
|
||||||
const latentCount = member.latent.filter(function(l){return l==la.index;}).length; //每个潜觉的数量
|
const latentCount = member.latent.filter(l=>l==la.index).length; //每个潜觉的数量
|
||||||
return previous + n_base * la.scale * latentCount; //无加值与觉醒的基础值,乘以那么多个潜觉的增加倍数
|
return previous + n_base * la.scale * latentCount; //无加值与觉醒的基础值,乘以那么多个潜觉的增加倍数
|
||||||
},0)) :
|
},0)) :
|
||||||
0;
|
0;
|
||||||
|
@ -293,7 +275,7 @@ function calculateAbility(member = null, assist = null, solo = true)
|
||||||
|
|
||||||
//协力觉醒的倍率
|
//协力觉醒的倍率
|
||||||
reValue = Math.round(awokenScale[idx].reduce(function(previous,aw){
|
reValue = Math.round(awokenScale[idx].reduce(function(previous,aw){
|
||||||
const awokenCount = awokenList.filter(function(a){return a==aw.index;}).length; //每个协力觉醒的数量
|
const awokenCount = awokenList.filter(ak=>ak==aw.index).length; //每个协力觉醒的数量
|
||||||
if (awokenCount>0)
|
if (awokenCount>0)
|
||||||
{
|
{
|
||||||
return previous * Math.pow(aw.scale,awokenCount);
|
return previous * Math.pow(aw.scale,awokenCount);
|
||||||
|
@ -331,17 +313,17 @@ function searchCards(cards,attr1,attr2,fixMainColor,types,awokens,sawokens,equal
|
||||||
{
|
{
|
||||||
if (attr1 != null)
|
if (attr1 != null)
|
||||||
{
|
{
|
||||||
cardsRange = cardsRange.filter(c=>c.attrs.indexOf(attr1)>=0);
|
cardsRange = cardsRange.filter(c=>c.attrs.includes(attr1));
|
||||||
}
|
}
|
||||||
if (attr2 != null)
|
if (attr2 != null)
|
||||||
{
|
{
|
||||||
cardsRange = cardsRange.filter(c=>c.attrs.indexOf(attr2)>=0);
|
cardsRange = cardsRange.filter(c=>c.attrs.includes(attr2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//类型
|
//类型
|
||||||
if (types.length>0)
|
if (types.length>0)
|
||||||
{
|
{
|
||||||
cardsRange = cardsRange.filter(c=>types.some(t=>c.types.indexOf(t)>=0));
|
cardsRange = cardsRange.filter(c=>types.some(t=>c.types.includes(t)));
|
||||||
}
|
}
|
||||||
//觉醒
|
//觉醒
|
||||||
//等效觉醒时,事先去除大觉醒
|
//等效觉醒时,事先去除大觉醒
|
||||||
|
@ -373,8 +355,8 @@ function searchCards(cards,attr1,attr2,fixMainColor,types,awokens,sawokens,equal
|
||||||
cardAwakeningsArray.push(card.awakenings);
|
cardAwakeningsArray.push(card.awakenings);
|
||||||
}
|
}
|
||||||
|
|
||||||
return cardAwakeningsArray.some(cardAwakening=>{ //重复每种包含超觉醒的觉醒数组,只要有一组符合要求就行
|
return cardAwakeningsArray.some(cardAwakening=> //重复每种包含超觉醒的觉醒数组,只要有一组符合要求就行
|
||||||
return awokens.every(ak=>{ //判断需要搜索的觉醒是不是全都在觉醒数组里
|
awokens.every(ak=>{ //判断需要搜索的觉醒是不是全都在觉醒数组里
|
||||||
if (equalAk) //如果开启等效觉醒
|
if (equalAk) //如果开启等效觉醒
|
||||||
{
|
{
|
||||||
//搜索等效觉醒
|
//搜索等效觉醒
|
||||||
|
@ -387,19 +369,19 @@ function searchCards(cards,attr1,attr2,fixMainColor,types,awokens,sawokens,equal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return cardAwakening.filter(cak=>cak == ak.id).length >= ak.num;
|
return cardAwakening.filter(cak=>cak == ak.id).length >= ak.num;
|
||||||
});
|
})
|
||||||
});
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
//超觉醒
|
//超觉醒
|
||||||
if (sawokens.length>0 && !incSawoken)
|
if (sawokens.length>0 && !incSawoken)
|
||||||
{
|
{
|
||||||
cardsRange = cardsRange.filter(card=>{return sawokens.some(sak=>{
|
cardsRange = cardsRange.filter(card=> sawokens.some(sak=>{
|
||||||
const equivalentAwoken = equivalent_awoken.find(eak => eak.small === sak);
|
const equivalentAwoken = equivalent_awoken.find(eak => eak.small === sak);
|
||||||
return card.superAwakenings.indexOf(sak)>=0 ||
|
return card.superAwakenings.includes(sak) ||
|
||||||
equalAk && equivalentAwoken && card.superAwakenings.indexOf(equivalentAwoken.big)>=0; //如果开启等效觉醒
|
equalAk && equivalentAwoken && card.superAwakenings.includes(equivalentAwoken.big); //如果开启等效觉醒
|
||||||
});});
|
}) );
|
||||||
}
|
}
|
||||||
return cardsRange;
|
return cardsRange;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue