Browse Source

增加拖拽复制功能

tags/v8.0
枫谷剑仙 6 years ago
parent
commit
ea942c19a3
11 changed files with 137 additions and 75 deletions
  1. +2
    -2
      help.md
  2. +6
    -9
      languages/en.css
  3. +6
    -9
      languages/ja.css
  4. +6
    -9
      languages/ko.css
  5. +6
    -9
      languages/zh-TW.css
  6. +6
    -9
      languages/zh.css
  7. +5
    -3
      multi.html
  8. +48
    -16
      script.js
  9. +5
    -3
      solo.html
  10. +42
    -3
      style.css
  11. +5
    -3
      triple.html

+ 2
- 2
help.md View File

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


+ 6
- 9
languages/en.css View File

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


+ 6
- 9
languages/ja.css View File

@@ -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(チーム覚醒とバッジ):";


+ 6
- 9
languages/ko.css View File

@@ -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(팀 각성 및 배지):";


+ 6
- 9
languages/zh-TW.css View File

@@ -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(隊伍覺醒和徽章):";


+ 6
- 9
languages/zh.css View File

@@ -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(队伍觉醒和徽章):";


+ 5
- 3
multi.html View File

@@ -29,12 +29,14 @@ var formation = new Formation(teamsCount,5);
<div>
<button class="btn-clear-data" onclick="clearData();"></button>
<button class="btn-capture" onclick="capture();"></button>
<button class="btn-show-mon-id" onclick="toggleShowMonId();"></button>
<button class="btn-show-mon-skill-cd" onclick="toggleShowMonSkillCd();"></button>
<a class="down-capture display-none" target="_blank"></a>
<button class="btn-solo-link" onclick="turnPage(1);"></button>
<button class="btn-triple-link" onclick="turnPage(3);"></button>
<button class="btn-swap-AB-team" onclick="swapABCteam();"></button>
<a class="down-capture display-none" target="_blank"></a>
<br>
<input type="checkbox" name="show-mon-id" class="config-checkbox-ipt" id="show-mon-id" onclick="toggleShowMonId();" checked><label class="config-checkbox-lbl show-mon-id-lbl" for="show-mon-id"><div class="config-checkbox-lbl-cicle"></div></label>
<input type="checkbox" name="btn-show-mon-skill-cd" class="config-checkbox-ipt" id="btn-show-mon-skill-cd" onclick="toggleShowMonSkillCd();"><label class="config-checkbox-lbl btn-show-mon-skill-cd-lbl" for="btn-show-mon-skill-cd"><div class="config-checkbox-lbl-cicle"></div></label>
<input type="checkbox" name="change-swap-to-copy" class="config-checkbox-ipt" id="change-swap-to-copy"><label class="config-checkbox-lbl" for="change-swap-to-copy"><div class="config-checkbox-lbl-cicle"></div></label>
</div>
<div class="status"><span class="icon"></span><span class="text"></span></div>
</div>


+ 48
- 16
script.js View File

@@ -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;ti<ti_len;ti++)
{
@@ -895,10 +920,10 @@ function initialize()
const tempMon = {
id:monid,
level:level
}
};
const needExp = calculateExp(tempMon);
monLvExp.innerHTML = needExp ? parseBigNumber(needExp[0]) + (level>99?` + ${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); //刷新全部
}
//改变一个怪物头像


+ 5
- 3
solo.html View File

@@ -29,11 +29,13 @@ var formation = new Formation(teamsCount,6);
<div>
<button class="btn-clear-data" onclick="clearData();"></button>
<button class="btn-capture" onclick="capture();"></button>
<button class="btn-show-mon-id" onclick="toggleShowMonId();"></button>
<button class="btn-show-mon-skill-cd" onclick="toggleShowMonSkillCd();"></button>
<a class="down-capture display-none" target="_blank"></a>
<button class="btn-multi-link" onclick="turnPage(2);"></button>
<button class="btn-triple-link" onclick="turnPage(3);"></button>
<a class="down-capture display-none" target="_blank"></a>
<br>
<input type="checkbox" name="show-mon-id" class="config-checkbox-ipt" id="show-mon-id" onclick="toggleShowMonId();" checked><label class="config-checkbox-lbl show-mon-id-lbl" for="show-mon-id"><div class="config-checkbox-lbl-cicle"></div></label>
<input type="checkbox" name="btn-show-mon-skill-cd" class="config-checkbox-ipt" id="btn-show-mon-skill-cd" onclick="toggleShowMonSkillCd();"><label class="config-checkbox-lbl btn-show-mon-skill-cd-lbl" for="btn-show-mon-skill-cd"><div class="config-checkbox-lbl-cicle"></div></label>
<input type="checkbox" name="change-swap-to-copy" class="config-checkbox-ipt" id="change-swap-to-copy"><label class="config-checkbox-lbl change-swap-to-copy-lbl" for="change-swap-to-copy"><div class="config-checkbox-lbl-cicle"></div></label>
</div>
<div class="status"><span class="icon"></span><span class="text"></span></div>
</div>


+ 42
- 3
style.css View File

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


+ 5
- 3
triple.html View File

@@ -41,12 +41,14 @@ var formation = new Formation(teamsCount,6);
<div>
<button class="btn-clear-data" onclick="clearData();"></button>
<button class="btn-capture" onclick="capture();"></button>
<button class="btn-show-mon-id" onclick="toggleShowMonId();"></button>
<button class="btn-show-mon-skill-cd" onclick="toggleShowMonSkillCd();"></button>
<a class="down-capture display-none" target="_blank"></a>
<button class="btn-solo-link" onclick="turnPage(1);"></button>
<button class="btn-multi-link" onclick="turnPage(2);"></button>
<button class="btn-swap-ABC-team" onclick="swapABCteam();"></button>
<a class="down-capture display-none" target="_blank"></a>
<br>
<input type="checkbox" name="show-mon-id" class="config-checkbox-ipt" id="show-mon-id" onclick="toggleShowMonId();" checked><label class="config-checkbox-lbl show-mon-id-lbl" for="show-mon-id"><div class="config-checkbox-lbl-cicle"></div></label>
<input type="checkbox" name="btn-show-mon-skill-cd" class="config-checkbox-ipt" id="btn-show-mon-skill-cd" onclick="toggleShowMonSkillCd();"><label class="config-checkbox-lbl btn-show-mon-skill-cd-lbl" for="btn-show-mon-skill-cd"><div class="config-checkbox-lbl-cicle"></div></label>
<input type="checkbox" name="change-swap-to-copy" class="config-checkbox-ipt" id="change-swap-to-copy"><label class="config-checkbox-lbl" for="change-swap-to-copy"><div class="config-checkbox-lbl-cicle"></div></label>
</div>
<div class="status"><span class="icon"></span><span class="text"></span></div>
</div>


Loading…
Cancel
Save