diff --git a/help.md b/help.md index e91f648c..baa21eec 100644 --- a/help.md +++ b/help.md @@ -6,8 +6,8 @@ Copy the URL directly to share the Formation, or add a Bookmark to archives. You * 使用后退即可撤销上一次修改。 Use back to undo the last edit. ![撤銷修改](document/tips-undo.png) -* 拖拽怪物头像即可快速切换位置,也支持手机触屏。 -Drag monster avatars to quickly switch positions, also supports mobile touch screen. +* 拖拽怪物头像即可快速交换位置或复制怪物,也支持手机触屏。 +Drag monster avatars to quickly swap positions or copy monster, also supports mobile touch screen. ![切换位置](document/tips-interchangeCard.png) * 可以在编辑界面的怪物ID输入怪物名称来搜索怪物。 You can search for monsters by entering the monster name in the monster ID of the editing interface. diff --git a/languages/en.css b/languages/en.css index d04dc838..a7839645 100644 --- a/languages/en.css +++ b/languages/en.css @@ -211,17 +211,14 @@ .control-box .btn-swap-ABC-team::before{ content: "🔄Rotating ABC Team"; } -.control-box .btn-show-mon-id::before{ - content: "⬜Hide monster ID"; +.control-box .show-mon-id-lbl::after{ + content:"🆔Show monster ID"; } -.not-show-mon-id .control-box .btn-show-mon-id::before{ - content: "🆔Show monster ID"; +.control-box .btn-show-mon-skill-cd-lbl::after{ + content:"❄️Show full skill's cooldown"; } -.show-mon-skill-cd .control-box .btn-show-mon-skill-cd::before{ - content: "⬜Hide full skill's cooldown"; -} -.control-box .btn-show-mon-skill-cd::before{ - content: "❄️Show full skill's cooldown"; +.control-box .change-swap-to-copy-lbl::after{ + content:"Change \"Swap\" to \"Copy\" when dragging"; } .team-total-info .tIf-total-hp::before{ content: "Team HP(Team Awoken & Badge): "; diff --git a/languages/ja.css b/languages/ja.css index d121e3a0..e3bf83f9 100644 --- a/languages/ja.css +++ b/languages/ja.css @@ -204,17 +204,14 @@ .control-box .btn-swap-AB-team::before{ content: "🔄ローテーションABチーム"; } -.control-box .btn-show-mon-id::before{ - content: "⬜隠しモンスターID"; +.control-box .show-mon-id-lbl::after{ + content:"🆔モンスターIDを表示"; } -.not-show-mon-id .control-box .btn-show-mon-id::before{ - content: "🆔モンスターIDを表示"; +.control-box .btn-show-mon-skill-cd-lbl::after{ + content:"❄️フル スキル クールを表示"; } -.show-mon-skill-cd .control-box .btn-show-mon-skill-cd::before{ - content: "⬜フル スキル クールを非表示"; -} -.control-box .btn-show-mon-skill-cd::before{ - content: "❄️フル スキル クールを表示"; +.control-box .change-swap-to-copy-lbl::after{ + content:"ドラッグ時に「スワップ」を「コピー」に変更"; } .team-total-info .tIf-total-hp::before{ content: "チームHP(チーム覚醒とバッジ):"; diff --git a/languages/ko.css b/languages/ko.css index ff56eedc..73abe832 100644 --- a/languages/ko.css +++ b/languages/ko.css @@ -204,17 +204,14 @@ .control-box .btn-swap-AB-team::before{ content: "🔄로테이션 AB 팀"; } -.control-box .btn-show-mon-id::before{ - content: "⬜몬스터 ID 숨기기"; +.control-box .show-mon-id-lbl::after{ + content:"🆔몬스터 ID 표시"; } -.not-show-mon-id .control-box .btn-show-mon-id::before{ - content: "🆔⬜몬스터 ID 표시"; +.control-box .btn-show-mon-skill-cd-lbl::after{ + content:"❄️전체 스킬 쿨을 표시"; } -.show-mon-skill-cd .control-box .btn-show-mon-skill-cd::before{ - content: "⬜전체 스킬 쿨을 숨기기"; -} -.control-box .btn-show-mon-skill-cd::before{ - content: "❄️전체 스킬 쿨을 표시"; +.control-box .change-swap-to-copy-lbl::after{ + content:"드래그할 때 \"바꾸기\"를 \"복사\"로 변경"; } .team-total-info .tIf-total-hp::before{ content: "팀 HP(팀 각성 및 배지):"; diff --git a/languages/zh-TW.css b/languages/zh-TW.css index 6b35df33..dc848bd5 100644 --- a/languages/zh-TW.css +++ b/languages/zh-TW.css @@ -210,17 +210,14 @@ .control-box .btn-swap-ABC-team::before{ content: "🔄輪換AB隊"; } -.control-box .btn-show-mon-id::before{ - content: "⬜隱藏怪物ID"; +.control-box .show-mon-id-lbl::after{ + content:"🆔顯示怪物ID"; } -.not-show-mon-id .control-box .btn-show-mon-id::before{ - content: "🆔顯示怪物ID"; +.control-box .btn-show-mon-skill-cd-lbl::after{ + content:"❄️顯示已滿技能冷卻"; } -.show-mon-skill-cd .control-box .btn-show-mon-skill-cd::before{ - content: "⬜隱藏已滿技能冷卻"; -} -.control-box .btn-show-mon-skill-cd::before{ - content: "❄️顯示已滿技能冷卻"; +.control-box .change-swap-to-copy-lbl::after{ + content:"拖拽時使用“複製”而不是“替換”"; } .team-total-info .tIf-total-hp::before{ content: "隊伍HP(隊伍覺醒和徽章):"; diff --git a/languages/zh.css b/languages/zh.css index fb96310d..82983942 100644 --- a/languages/zh.css +++ b/languages/zh.css @@ -210,17 +210,14 @@ .control-box .btn-swap-ABC-team::before{ content: "🔄轮换ABC队"; } -.control-box .btn-show-mon-id::before{ - content: "⬜隐藏怪物ID"; +.control-box .show-mon-id-lbl::after{ + content:"🆔显示怪物ID"; } -.not-show-mon-id .control-box .btn-show-mon-id::before{ - content: "🆔显示怪物ID"; +.control-box .btn-show-mon-skill-cd-lbl::after{ + content:"❄️显示已满技能冷却"; } -.show-mon-skill-cd .control-box .btn-show-mon-skill-cd::before{ - content: "⬜隐藏已满技能冷却"; -} -.control-box .btn-show-mon-skill-cd::before{ - content: "❄️显示已满技能冷却"; +.control-box .change-swap-to-copy-lbl::after{ + content:"拖拽时使用“复制”而不是“替换”"; } .team-total-info .tIf-total-hp::before{ content: "队伍HP(队伍觉醒和徽章):"; diff --git a/multi.html b/multi.html index f462aed7..93cc363b 100644 --- a/multi.html +++ b/multi.html @@ -29,12 +29,14 @@ var formation = new Formation(teamsCount,5);
- - + - +
+ + +
diff --git a/script.js b/script.js index 4e903686..a20f3c0b 100644 --- a/script.js +++ b/script.js @@ -19,6 +19,7 @@ var currentLanguage; //当前语言 var currentDataSource; //当前数据 var interchangeSvg; //储存划线的SVG var interchangePath; //储存划线的线 +var changeSwapToCopy; //储存交换“复制”和“替换” var controlBox; //储存整个controlBox var statusLine; //储存状态栏 var formationBox; //储存整个formationBox @@ -84,6 +85,13 @@ Member.prototype.loadObj = function(m,dataVersion){ this.sawoken = dataVersion>1 ? m[5] : m.sawoken; this.skilllevel = m[6] || null; }; +Member.prototype.loadFromMember = function(m){ + if (m == undefined) //如果没有提供数据,直接返回默认 + { + return; + } + this.id = m.id; +}; //只用来防坐的任何队员 var MemberDelay = function(){ this.id=-1; @@ -108,6 +116,7 @@ MemberAssist.prototype.loadFromMember = function(m){ if (m.level != undefined) this.level = m.level; if (m.awoken != undefined) this.awoken = m.awoken; if (m.plus != undefined && m.plus instanceof Array && m.plus.length>=3 && (m.plus[0]+m.plus[1]+m.plus[2])>0) this.plus = m.plus; + if (m.skilllevel != undefined) this.skilllevel = m.skilllevel; }; //正式队伍 var MemberTeam = function(){ @@ -130,6 +139,7 @@ MemberTeam.prototype.loadFromMember = function(m){ if (m.latent != undefined && m.latent instanceof Array && m.latent.length>=1) this.latent = m.latent; if (m.sawoken != undefined) this.sawoken = m.sawoken; if (m.ability != undefined && m.ability instanceof Array && m.plus.length>=3) this.ability = m.ability; + if (m.skilllevel != undefined) this.skilllevel = m.skilllevel; }; var Formation = function(teamCount,memberCount){ @@ -193,12 +203,24 @@ function getMaxLatentCount(id) //切换怪物ID显示 function toggleShowMonId() { - document.body.classList.toggle('not-show-mon-id'); + if (controlBox.querySelector("#show-mon-id").checked) + { + document.body.classList.remove("not-show-mon-id"); + }else + { + document.body.classList.add("not-show-mon-id"); + } } //切换怪物技能CD显示 function toggleShowMonSkillCd() { - document.body.classList.toggle('show-mon-skill-cd'); + if (controlBox.querySelector("#btn-show-mon-skill-cd").checked) + { + document.body.classList.add("show-mon-skill-cd"); + }else + { + document.body.classList.remove("show-mon-skill-cd"); + } } //清除数据 function clearData() @@ -273,13 +295,16 @@ window.onload = function() controlBox = document.body.querySelector(".control-box"); statusLine = controlBox.querySelector(".status"); //显示当前状态的 const helpLink = controlBox.querySelector(".help-link"); + changeSwapToCopy = controlBox.querySelector("#change-swap-to-copy"); + interchangeSVG = document.body.querySelector("#interchange-line"); + interchangePath = interchangeSVG.querySelector("g line"); + toggleShowMonId(); + toggleShowMonSkillCd(); formationBox = document.body.querySelector(".formation-box"); editBox = document.body.querySelector(".edit-box"); - interchangeSVG = document.body.querySelector("#interchange-line"); - interchangePath = interchangeSVG.querySelector("g line"); if (location.hostname.indexOf("gitee")>=0) { @@ -418,7 +443,6 @@ function reloadFormationData() } if (formationData) { - //formation = idata; formation.loadObj(formationData); refreshAll(formation); } @@ -440,7 +464,8 @@ function creatNewUrl(arg){ 'd=' + encodeURIComponent(JSON.stringify(outObj)); if (!arg.notPushState) history.pushState(null, null, newUrl); - return newUrl; + if (arg.returnObj) return outObj; + else return newUrl; } } //截图 @@ -528,11 +553,11 @@ function initialize() txtTitleDisplay.onclick = function(){ titleBox.classList.add("edit"); txtTitle.focus(); - } + }; txtDetailDisplay.onclick = function(){ detailBox.classList.add("edit"); txtDetail.focus(); - } + }; for (let ti=0,ti_len=formationBox.querySelectorAll(".team-bigbox").length;ti99?` + ${parseBigNumber(needExp[1])}` : "") : ""; - }; + } editBox.reCalculateExp = reCalculateExp; //加蛋 const monEditAddHpLi = settingBox.querySelector(".row-mon-plus .m-plus-hp-li"); @@ -1016,13 +1041,13 @@ function initialize() plus:plus, awoken:awoken, latent:latent - } + }; const abilitys = calculateAbility(tempMon, null, true) || [0,0,0]; monEditHpValue.innerHTML = abilitys[0]; monEditAtkValue.innerHTML = abilitys[1]; monEditRcvValue.innerHTML = abilitys[2]; - }; + } editBox.reCalculateAbility = reCalculateAbility; const btnCancel = editBox.querySelector(".button-cancel"); @@ -1317,22 +1342,29 @@ function interchangeCard(formArr,toArr) return new Member(); }else { - let newMember = isAssist ? new MemberTeam() : new MemberAssist(); + const newMember = isAssist ? new MemberTeam() : new MemberAssist(); newMember.loadFromMember(member); return newMember; } } + const isCopy = changeSwapToCopy.checked; let from = formation.teams[formArr[0]][formArr[1]][formArr[2]]; let to = formation.teams[toArr[0]][toArr[1]][toArr[2]]; if(formArr[1] != toArr[1]) //从武器拖到非武器才改变类型 { from = changeType(from,formArr[1]); - to = changeType(to,toArr[1]); + if (!isCopy) to = ichangeType(to,toArr[1]); + }else if (isCopy) + { + const newFrom = new from.constructor(); + newFrom.loadFromMember(from); + from = newFrom; } formation.teams[toArr[0]][toArr[1]][toArr[2]] = from; - formation.teams[formArr[0]][formArr[1]][formArr[2]] = to; + if (!isCopy) formation.teams[formArr[0]][formArr[1]][formArr[2]] = to; - creatNewUrl(); //刷新URL + const formationData = creatNewUrl({returnObj:true}); //刷新URL + formation.loadObj(formationData); refreshAll(formation); //刷新全部 } //改变一个怪物头像 diff --git a/solo.html b/solo.html index bc7c9e26..fc0fadbe 100644 --- a/solo.html +++ b/solo.html @@ -29,11 +29,13 @@ var formation = new Formation(teamsCount,6);
- - + - +
+ + +
diff --git a/style.css b/style.css index 77d775ca..e6011f9e 100644 --- a/style.css +++ b/style.css @@ -87,6 +87,45 @@ body{ { display: none; } + +.config-checkbox-ipt{ + display:none; +} +.config-checkbox-lbl .config-checkbox-lbl-cicle{ + width: 28px; + height: 12px; + display: inline-block; + position: relative; + background-color: #8884; + border-radius: 16px; + margin-right: 5px; +} +.config-checkbox-lbl .config-checkbox-lbl-cicle::before{ + content:""; + width: 20px; + height: 20px; + position: absolute; + transition: .2s ease-out; + background-color: #c6c6c6; + box-shadow: 0 2px 4px 0 #0003; + border-radius: 50%; + left: -4px; + top: -4px; +} +.config-checkbox-ipt:checked+.config-checkbox-lbl .config-checkbox-lbl-cicle { + background: rgba(0,160,216,0.8); +} +.config-checkbox-ipt:checked+.config-checkbox-lbl .config-checkbox-lbl-cicle::before { + background: #00A0D8; + box-shadow: 0 2px 4px 0 rgba(0,160,216,0.4); + left: calc(100% - 16px); +} +.config-checkbox-lbl{ + cursor: pointer; + line-height: 25px; + margin-right: 20px; +} + .status{ line-height: 16px; } @@ -908,9 +947,9 @@ ul{ line-height: 22px; } -.edit-box .setting-box .row-mon-level::before{ - /*content: "▼怪物等级";*/ -} +/*.edit-box .setting-box .row-mon-level::before{ + content: "▼怪物等级"; +}*/ .edit-box .setting-box .m-level{ font-size: 25px; height: 40px; diff --git a/triple.html b/triple.html index 9d0d4854..1803b096 100644 --- a/triple.html +++ b/triple.html @@ -41,12 +41,14 @@ var formation = new Formation(teamsCount,6);
- - + - +
+ + +