diff --git a/images/badge-bg.png b/images/badge-bg.png index bc370e05..0eecdaf8 100644 Binary files a/images/badge-bg.png and b/images/badge-bg.png differ diff --git a/images/project file/badge-bg.fw.png b/images/project file/badge-bg.fw.png index 78254206..61a2dd83 100644 Binary files a/images/project file/badge-bg.fw.png and b/images/project file/badge-bg.fw.png differ diff --git a/languages/en.css b/languages/en.css index 1118ce8a..1e294fb6 100644 --- a/languages/en.css +++ b/languages/en.css @@ -74,17 +74,17 @@ } .row-mon-ability .m-hp-li::before, -.dialog-dungeon-enchance label[for="dungeon-hp"]::before +#dialog-dungeon-enchance label[for="dungeon-hp"]::before { content: "HP:"; } .row-mon-ability .m-atk-li::before, -.dialog-dungeon-enchance label[for="dungeon-atk"]::before +#dialog-dungeon-enchance label[for="dungeon-atk"]::before { content: "ATK:"; } .row-mon-ability .m-rcv-li::before, -.dialog-dungeon-enchance label[for="dungeon-rcv"]::before +#dialog-dungeon-enchance label[for="dungeon-rcv"]::before { content: "RCV:"; } @@ -382,14 +382,14 @@ label[for="show-rich-text-tools"]::after{ .search-box .awoken-option::before{ content: "▼Awoken (AND)"; } -.search-box .rare-clear::before +.search-box .rare-clear::before, +#dialog-dungeon-enchance .dialog-clear::before { content: "Reset"; } .search-box .awoken-clear::before, .search-box .sawoken-clear::before, -.special-div .special-clear::before, -.dialog-dungeon-enchance .dialog-clear::before +.special-div .special-clear::before { content: "Clear"; } @@ -686,48 +686,48 @@ label[for="qr-data-type-paddb"]::before { content: "Dungeon Enchanced"; } -.dialog-dungeon-enchance .dialog-title::before +#dialog-dungeon-enchance .dialog-title::before { content: "Dungeon Enchancement Setting"; } -.dialog-dungeon-enchance .dialog-confirm::before +.dialog-confirm::before { content: "Confirm"; } -.dialog-dungeon-enchance .rare-list::before +#dialog-dungeon-enchance .rare-list::before { content: "Rarity:"; } -.dialog-dungeon-enchance .attr-list::before +#dialog-dungeon-enchance .attr-list::before { content: "Attr.:"; } -.dialog-dungeon-enchance .type-list::before +#dialog-dungeon-enchance .type-list::before { content: "Types:"; } -.dialog-dungeon-enchance .collab-list::before +#dialog-dungeon-enchance .collab-list::before { content: "Collab ID:"; } -.dialog-dungeon-enchance .gacha-list::before +#dialog-dungeon-enchance .gacha-list::before { content: "Egg Machine ID:"; } -.dialog-dungeon-enchance .benefit-list::before +#dialog-dungeon-enchance .benefit-list::before { content: "Yin-Yang Protection:"; } -.dialog-dungeon-enchance .current-stage-list::before +#dialog-dungeon-enchance .current-stage-list::before { content: "Current Stage:"; } -.dialog-dungeon-enchance .collab-list::after, -.dialog-dungeon-enchance .gacha-list::after +#dialog-dungeon-enchance .collab-list::after, +#dialog-dungeon-enchance .gacha-list::after { content: "(separate multiple IDs with \",\")"; } -.dialog-dungeon-enchance .stats-list::before +#dialog-dungeon-enchance .stats-list::before { content: "Enhancement Rate:"; } diff --git a/languages/ja.css b/languages/ja.css index 0957271c..843bd194 100644 --- a/languages/ja.css +++ b/languages/ja.css @@ -73,17 +73,17 @@ label[for="languages"]::after{ } .row-mon-ability .m-hp-li::before, -.dialog-dungeon-enchance label[for="dungeon-hp"]::before +#dialog-dungeon-enchance label[for="dungeon-hp"]::before { content: "HP:"; } .row-mon-ability .m-atk-li::before, -.dialog-dungeon-enchance label[for="dungeon-atk"]::before +#dialog-dungeon-enchance label[for="dungeon-atk"]::before { content: "攻撃:"; } .row-mon-ability .m-rcv-li::before, -.dialog-dungeon-enchance label[for="dungeon-rcv"]::before +#dialog-dungeon-enchance label[for="dungeon-rcv"]::before { content: "回復:"; } @@ -376,14 +376,14 @@ label[for="show-rich-text-tools"]::after{ .search-box .awoken-option::before{ content: "▼觉醒(AND)"; } -.search-box .rare-clear::before +.search-box .rare-clear::before, +#dialog-dungeon-enchance .dialog-clear::before { content: "リセット"; } .search-box .awoken-clear::before, .search-box .sawoken-clear::before, -.special-div .special-clear::before, -.dialog-dungeon-enchance .dialog-clear::before +.special-div .special-clear::before { content: "クリア"; } @@ -644,48 +644,48 @@ label[for="qr-data-type-paddb"]::before { content: "ダンジョン強化"; } -.dialog-dungeon-enchance .dialog-title::before +#dialog-dungeon-enchance .dialog-title::before { content: "ダンジョン強化倍率設定"; } -.dialog-dungeon-enchance .dialog-confirm::before +.dialog-confirm::before { content: "確認"; } -.dialog-dungeon-enchance .rare-list::before +#dialog-dungeon-enchance .rare-list::before { content: "有効な希少性:"; } -.dialog-dungeon-enchance .attr-list::before +#dialog-dungeon-enchance .attr-list::before { content: "有効な属性:"; } -.dialog-dungeon-enchance .type-list::before +#dialog-dungeon-enchance .type-list::before { content: "有効なタイプ:"; } -.dialog-dungeon-enchance .collab-list::before +#dialog-dungeon-enchance .collab-list::before { content: "有効コラボID:"; } -.dialog-dungeon-enchance .gacha-list::before +#dialog-dungeon-enchance .gacha-list::before { content: "有効ガチャID:"; } -.dialog-dungeon-enchance .benefit-list::before +#dialog-dungeon-enchance .benefit-list::before { content: "陰と陽の加護:"; } -.dialog-dungeon-enchance .current-stage-list::before +#dialog-dungeon-enchance .current-stage-list::before { content: "現在の層数:"; } -.dialog-dungeon-enchance .collab-list::after, -.dialog-dungeon-enchance .gacha-list::after +#dialog-dungeon-enchance .collab-list::after, +#dialog-dungeon-enchance .gacha-list::after { content: "(複数のIDは\",\"で区切ります)"; } -.dialog-dungeon-enchance .stats-list::before +#dialog-dungeon-enchance .stats-list::before { content: "強化倍率:"; } diff --git a/languages/ko.css b/languages/ko.css index 3d74dc65..aba7dac5 100644 --- a/languages/ko.css +++ b/languages/ko.css @@ -73,17 +73,17 @@ label[for="languages"]::after{ } .row-mon-ability .m-hp-li::before, -.dialog-dungeon-enchance label[for="dungeon-hp"]::before +#dialog-dungeon-enchance label[for="dungeon-hp"]::before { content: "HP:"; } .row-mon-ability .m-atk-li::before, -.dialog-dungeon-enchance label[for="dungeon-atk"]::before +#dialog-dungeon-enchance label[for="dungeon-atk"]::before { content: "공격:"; } .row-mon-ability .m-rcv-li::before, -.dialog-dungeon-enchance label[for="dungeon-rcv"]::before +#dialog-dungeon-enchance label[for="dungeon-rcv"]::before { content: "회복:"; } @@ -371,14 +371,14 @@ label[for="show-rich-text-tools"]::after{ .search-box .awoken-option::before{ content: "▼각성(AND)"; } -.search-box .rare-clear::before +.search-box .rare-clear::before, +#dialog-dungeon-enchance .dialog-clear::before { content: "재설정"; } .search-box .awoken-clear::before, .search-box .sawoken-clear::before, -.special-div .special-clear::before, -.dialog-dungeon-enchance .dialog-clear::before +.special-div .special-clear::before { content: "명확한"; } @@ -624,48 +624,48 @@ label[for="qr-data-type-paddb"]::before { content: "던전 강화"; } -.dialog-dungeon-enchance .dialog-title::before +#dialog-dungeon-enchance .dialog-title::before { content: "지하성 강화 배율 설정"; } -.dialog-dungeon-enchance .dialog-confirm::before +.dialog-confirm::before { content: "확인"; } -.dialog-dungeon-enchance .rare-list::before +#dialog-dungeon-enchance .rare-list::before { content: "유효한 희귀도:"; } -.dialog-dungeon-enchance .attr-list::before +#dialog-dungeon-enchance .attr-list::before { content: "유효한 속성:"; } -.dialog-dungeon-enchance .type-list::before +#dialog-dungeon-enchance .type-list::before { content: "유효한 형식:"; } -.dialog-dungeon-enchance .collab-list::before +#dialog-dungeon-enchance .collab-list::before { content: "유효한 콜라보 ID:"; } -.dialog-dungeon-enchance .gacha-list::before +#dialog-dungeon-enchance .gacha-list::before { content: "유효한 가챠 ID:"; } -.dialog-dungeon-enchance .benefit-list::before +#dialog-dungeon-enchance .benefit-list::before { content: "음과 양 보호:"; } -.dialog-dungeon-enchance .current-stage-list::before +#dialog-dungeon-enchance .current-stage-list::before { content: "현재 단계:"; } -.dialog-dungeon-enchance .collab-list::after, -.dialog-dungeon-enchance .gacha-list::after +#dialog-dungeon-enchance .collab-list::after, +#dialog-dungeon-enchance .gacha-list::after { content: "(여러 ID를 \",\"로 구분)"; } -.dialog-dungeon-enchance .stats-list::before +#dialog-dungeon-enchance .stats-list::before { content: "배율을 강화:"; } diff --git a/languages/zh-hans.css b/languages/zh-hans.css index 48bf9708..6f897eef 100644 --- a/languages/zh-hans.css +++ b/languages/zh-hans.css @@ -79,17 +79,17 @@ label[for="languages"]::after{ } .row-mon-ability .m-hp-li::before, -.dialog-dungeon-enchance label[for="dungeon-hp"]::before +#dialog-dungeon-enchance label[for="dungeon-hp"]::before { content: "HP:"; } .row-mon-ability .m-atk-li::before, -.dialog-dungeon-enchance label[for="dungeon-atk"]::before +#dialog-dungeon-enchance label[for="dungeon-atk"]::before { content: "攻撃:"; } .row-mon-ability .m-rcv-li::before, -.dialog-dungeon-enchance label[for="dungeon-rcv"]::before +#dialog-dungeon-enchance label[for="dungeon-rcv"]::before { content: "回復:"; } @@ -376,14 +376,14 @@ label[for="show-rich-text-tools"]::after{ .search-box .awoken-option::before{ content: "▼觉醒(AND)"; } -.search-box .rare-clear::before +.search-box .rare-clear::before, +#dialog-dungeon-enchance .dialog-clear::before { content: "重置"; } .search-box .awoken-clear::before, .search-box .sawoken-clear::before, -.special-div .special-clear::before, -.dialog-dungeon-enchance .dialog-clear::before +.special-div .special-clear::before { content: "清除"; } @@ -643,48 +643,48 @@ label[for="qr-data-type-paddb"]::before { content: "地下城强化"; } -.dialog-dungeon-enchance .dialog-title::before +#dialog-dungeon-enchance .dialog-title::before { content: "地下城強化倍率設定"; } -.dialog-dungeon-enchance .dialog-confirm::before +.dialog-confirm::before { content: "确认"; } -.dialog-dungeon-enchance .rare-list::before +#dialog-dungeon-enchance .rare-list::before { content: "生效稀有度:"; } -.dialog-dungeon-enchance .attr-list::before +#dialog-dungeon-enchance .attr-list::before { content: "生效属性:"; } -.dialog-dungeon-enchance .type-list::before +#dialog-dungeon-enchance .type-list::before { content: "生效類型:"; } -.dialog-dungeon-enchance .collab-list::before +#dialog-dungeon-enchance .collab-list::before { content: "生效合作ID:"; } -.dialog-dungeon-enchance .gacha-list::before +#dialog-dungeon-enchance .gacha-list::before { content: "生效抽蛋ID:"; } -.dialog-dungeon-enchance .benefit-list::before +#dialog-dungeon-enchance .benefit-list::before { content: "生效陰陽:"; } -.dialog-dungeon-enchance .current-stage-list::before +#dialog-dungeon-enchance .current-stage-list::before { content: "当前層数:"; } -.dialog-dungeon-enchance .collab-list::after, -.dialog-dungeon-enchance .gacha-list::after +#dialog-dungeon-enchance .collab-list::after, +#dialog-dungeon-enchance .gacha-list::after { content: "(使用“,”分隔多个ID)"; } -.dialog-dungeon-enchance .stats-list::before +#dialog-dungeon-enchance .stats-list::before { content: "強化倍率:"; } diff --git a/languages/zh-hant.css b/languages/zh-hant.css index 7e8cb9ce..950f900e 100644 --- a/languages/zh-hant.css +++ b/languages/zh-hant.css @@ -79,17 +79,17 @@ label[for="languages"]::after{ } .row-mon-ability .m-hp-li::before, -.dialog-dungeon-enchance label[for="dungeon-hp"]::before +#dialog-dungeon-enchance label[for="dungeon-hp"]::before { content: "HP:"; } .row-mon-ability .m-atk-li::before, -.dialog-dungeon-enchance label[for="dungeon-atk"]::before +#dialog-dungeon-enchance label[for="dungeon-atk"]::before { content: "攻撃:"; } .row-mon-ability .m-rcv-li::before, -.dialog-dungeon-enchance label[for="dungeon-rcv"]::before +#dialog-dungeon-enchance label[for="dungeon-rcv"]::before { content: "回復:"; } @@ -377,14 +377,14 @@ label[for="show-rich-text-tools"]::after{ .search-box .awoken-option::before{ content: "▼觉醒(AND)"; } -.search-box .rare-clear::before +.search-box .rare-clear::before, +#dialog-dungeon-enchance .dialog-clear::before { content: "重置"; } .search-box .awoken-clear::before, .search-box .sawoken-clear::before, -.special-div .special-clear::before, -.dialog-dungeon-enchance .dialog-clear::before +.special-div .special-clear::before { content: "清除"; } @@ -636,48 +636,48 @@ label[for="qr-data-type-paddb"]::before { content: "地下城强化"; } -.dialog-dungeon-enchance .dialog-title::before +#dialog-dungeon-enchance .dialog-title::before { content: "地下城強化倍率設定"; } -.dialog-dungeon-enchance .dialog-confirm::before +.dialog-confirm::before { content: "確認"; } -.dialog-dungeon-enchance .rare-list::before +#dialog-dungeon-enchance .rare-list::before { content: "生效稀有度:"; } -.dialog-dungeon-enchance .attr-list::before +#dialog-dungeon-enchance .attr-list::before { content: "生效属性:"; } -.dialog-dungeon-enchance .type-list::before +#dialog-dungeon-enchance .type-list::before { content: "生效類型:"; } -.dialog-dungeon-enchance .collab-list::before +#dialog-dungeon-enchance .collab-list::before { content: "生效合作ID:"; } -.dialog-dungeon-enchance .gacha-list::before +#dialog-dungeon-enchance .gacha-list::before { content: "生效抽蛋ID:"; } -.dialog-dungeon-enchance .benefit-list::before +#dialog-dungeon-enchance .benefit-list::before { content: "生效陰陽:"; } -.dialog-dungeon-enchance .current-stage-list::before +#dialog-dungeon-enchance .current-stage-list::before { content: "当前層数:"; } -.dialog-dungeon-enchance .collab-list::after, -.dialog-dungeon-enchance .gacha-list::after +#dialog-dungeon-enchance .collab-list::after, +#dialog-dungeon-enchance .gacha-list::after { content: "(使用“,”分隔多個ID)"; } -.dialog-dungeon-enchance .stats-list::before +#dialog-dungeon-enchance .stats-list::before { content: "強化倍率:"; } diff --git a/script.js b/script.js index 5e106a63..a7f7a594 100644 --- a/script.js +++ b/script.js @@ -4118,13 +4118,26 @@ function initialize() { //添加徽章 const badgeDialog = document.getElementById("badge-choose"); + const badgeDialogConfirm = badgeDialog.querySelector(".dialog-confirm"); const teamBadgeUl = badgeDialog.querySelector(".team-badges"); + const changeBadgeDialogConfirmValue = function(e){ + badgeDialogConfirm.value = this.value; + } + official_badge_sorting.forEach(bgId=>{ const li = document.createElement("li"); - const button = li.appendChild(document.createElement("button")); - button.className = "badge"; - button.value = bgId; - button.setAttribute("data-badge-icon", bgId); + const radio = li.appendChild(document.createElement("input")); + radio.type="radio"; + radio.className = "hide-radio"; + radio.value = bgId; + radio.onchange = changeBadgeDialogConfirmValue; + radio.name = "choose-team-badge"; + radio.id = `${radio.name}-${bgId}`; + + const label = li.appendChild(document.createElement("label")); + label.className = "badge"; + label.setAttribute("data-badge-icon", bgId); + label.setAttribute("for", radio.id); teamBadgeUl.appendChild(li); }); @@ -4139,11 +4152,14 @@ function initialize() { const team = formation.teams[teamIdx]; team[2] = parseInt(returnValue, 10); refreshAll(formation); + createNewUrl(); //badgeDialog.removeEventListener("close", returnFunc); }; teamBadge.onclick = function(){ _badgeThis = this; - //_badgeThis.value + const currentBadge = teamBadgeUl.querySelector(`#choose-team-badge-${_badgeThis.dataset.badgeIcon}`); + if (currentBadge) currentBadge.checked = true; + badgeDialog.addEventListener("close", returnFunc, {once: true}); badgeDialog.showModal(); }; @@ -4255,7 +4271,7 @@ function initialize() { }); //设置地下城倍率 - const dungeonEnchanceDialog = document.body.querySelector(".dialog-dungeon-enchance"); + const dungeonEnchanceDialog = document.getElementById("dialog-dungeon-enchance"); const dialogContent = dungeonEnchanceDialog.querySelector(".dialog-content"); const rareDoms = Array.from(dialogContent.querySelectorAll(".rare-list .rare-check")); const attrDoms = Array.from(dialogContent.querySelectorAll(".attr-list .attr-check")); @@ -4263,22 +4279,17 @@ function initialize() { const collabIdIpt = dialogContent.querySelector("#dungeon-collab-id"); const gachaIdIpt = dialogContent.querySelector("#dungeon-gacha-id"); const benefitDoms = Array.from(dialogContent.querySelectorAll(".benefit-list .benefit-check")); - const benefit0 = benefitDoms.find(dom=>parseInt(dom.value, 10) == 0); const currentStageIpt = dialogContent.querySelector("#current-stage"); - /*const benefitNot0 = benefitDoms.filter(dom=>dom != benefit0); - const notChecked = function(e){ - console.log(this.checked,e); - } - benefitNot0.forEach(dom=>dom.onclick=notChecked);*/ - + + //读取当前的地下城设定 dungeonEnchanceDialog.initialing = function(formation){ const dge = formation.dungeonEnchance; function runCheck(checkBox){ checkBox.checked = this.includes(parseInt(checkBox.value, 10)); } - rareDoms.forEach(runCheck,dge.rarities); - attrDoms.forEach(runCheck,dge.attrs); - typeDoms.forEach(runCheck,dge.types); + rareDoms.forEach(runCheck, dge.rarities); + attrDoms.forEach(runCheck, dge.attrs); + typeDoms.forEach(runCheck, dge.types); gachaIdIpt.value = dge.gachas.join(); collabIdIpt.value = dge.collabs.join(); @@ -4290,34 +4301,8 @@ function initialize() { const benefit = dge.benefit || 0; benefitDoms.find(dom=>parseInt(dom.value, 10) == benefit).checked = true; currentStageIpt.value = dge.stage || 1; - - this.classList.remove(className_displayNone); } - //初始化Dialog - dialogInitialing(dungeonEnchanceDialog); - const dungeonEnchanceDialogConfirm = dungeonEnchanceDialog.querySelector(".dialog-confirm"); - dungeonEnchanceDialogConfirm.onclick = function(){ - const rarities = returnCheckBoxsValues(rareDoms).map(Str2Int); - const attrs = returnCheckBoxsValues(attrDoms).map(Str2Int); - const types = returnCheckBoxsValues(typeDoms).map(Str2Int); - const benefit = Str2Int(returnRadiosValue(benefitDoms)); - - const dge = formation.dungeonEnchance; - dge.rarities = rarities; - dge.attrs = attrs; - dge.types = types; - dge.rate.hp = Number(dialogContent.querySelector("#dungeon-hp").value); - dge.rate.atk = Number(dialogContent.querySelector("#dungeon-atk").value); - dge.rate.rcv = Number(dialogContent.querySelector("#dungeon-rcv").value); - dge.collabs = collabIdIpt.value.split(',').map(str=>parseInt(str,10)).filter(Boolean); - dge.gachas = gachaIdIpt.value.split(',').map(str=>parseInt(str,10)).filter(Boolean); - dge.benefit = benefit; - dge.stage = parseInt(currentStageIpt.value, 10); - - dungeonEnchanceDialog.close(); - createNewUrl(); - refreshAll(formation); - }; + /* //直接通过 reset 浏览器默认功能重置了 const dungeonEnchanceDialogClear = dungeonEnchanceDialog.querySelector(".dialog-clear"); dungeonEnchanceDialogClear.onclick = function(){ function unchecked(checkBox) { @@ -4333,10 +4318,30 @@ function initialize() { dialogContent.querySelector("#dungeon-atk").value = 1; dialogContent.querySelector("#dungeon-rcv").value = 1; currentStageIpt.value = 1; - }; + };*/ const dungeonEnchanceDialogOpen = controlBox.querySelector("#btn-set-dungeon-enchance"); dungeonEnchanceDialogOpen.onclick = function(){ - dungeonEnchanceDialog.show(formation); + dungeonEnchanceDialog.initialing(formation); + dungeonEnchanceDialog.showModal(); + }; + dungeonEnchanceDialog.onclose = function(event) { + const returnValue = event.target.returnValue; + if (returnValue === "cancel") return; + + const dge = formation.dungeonEnchance; + dge.rarities = returnCheckBoxsValues(rareDoms).map(Str2Int); + dge.attrs = returnCheckBoxsValues(attrDoms).map(Str2Int); + dge.types = returnCheckBoxsValues(typeDoms).map(Str2Int); + dge.rate.hp = returnCheckBoxsValues(typeDoms).map(Str2Int)(dialogContent.querySelector("#dungeon-hp").value); + dge.rate.atk = Number(dialogContent.querySelector("#dungeon-atk").value); + dge.rate.rcv = Number(dialogContent.querySelector("#dungeon-rcv").value); + dge.collabs = collabIdIpt.value.split(',').map(str=>parseInt(str,10)).filter(Boolean); + dge.gachas = gachaIdIpt.value.split(',').map(str=>parseInt(str,10)).filter(Boolean); + dge.benefit = Str2Int(returnRadiosValue(benefitDoms)); + dge.stage = parseInt(currentStageIpt.value, 10); + + refreshAll(formation); + createNewUrl(); }; //编辑框 @@ -6543,18 +6548,7 @@ function refreshAll(formationData) { const teamBox = teamBigBox.querySelector(".team-box"); const teamData = formationData.teams[teamNum]; const badgeBox = teamBigBox.querySelector(".team-badge"); - if (badgeBox) { - - const badge = badgeBox.querySelector(`#team-${teamNum+1}-badge-${teamData[2] || 0}`); - if (badge) - { - //为了解决火狐在代码片段里无法正确修改checked的问题,所以事先把所有的都切换到false - const badges = Array.from(badgeBox.querySelectorAll(`.badge-radio`)); - badges.forEach(badge=>badge.checked = false); - badge.checked = true; - } - - } + badgeBox.setAttribute("data-badge-icon", teamData[2] ?? 0); const membersDom = teamBox.querySelector(".team-members"); const latentsDom = teamBox.querySelector(".team-latents"); diff --git a/solo.html b/solo.html index a21a6c0c..1b08e1d8 100644 --- a/solo.html +++ b/solo.html @@ -1250,9 +1250,9 @@ const teamsCount = 1; -