| @@ -7,3 +7,4 @@ | |||
| /monsters-info/official-API/*-mdatadl.json | |||
| /monsters-info/official-API/*-shop_item.json | |||
| /sound/voice/variables.txt | |||
| /fonts/.font-spider | |||
| @@ -100,4 +100,6 @@ Please refer to existing files. | |||
| # 使用开源软件 | Open source software used | |||
| * [pad-rikuu](//github.com/kiootic/pad-rikuu) //Parse data | |||
| * [html2canvas](//github.com/niklasvh/html2canvas) //Capture Image | |||
| * [aaa](//github.com/jy4340132/aaa) //Play voice(ADPCM wav) | |||
| * [aaa](//github.com/jy4340132/aaa) //Play voice(ADPCM wav) | |||
| * [Zpix (最像素)](//github.com/SolidZORO/zpix-pixel-font) //Pixel Font | |||
| * [font-spider](//github.com/aui/font-spider) //Compression Font file | |||
| @@ -0,0 +1,2 @@ | |||
| :: font-spider : https://github.com/aui/font-spider | |||
| cmd /K font-spider font-spider.html | |||
| @@ -0,0 +1,35 @@ | |||
| <!doctype html> | |||
| <html> | |||
| <head> | |||
| <meta charset="utf-8"> | |||
| <style type="text/css"> | |||
| /*声明 WebFont*/ | |||
| @font-face { | |||
| font-family: 'source'; | |||
| src: url(zpix.eot); | |||
| src: | |||
| url(zpix.eot?#font-spider) format('embedded-opentype'), | |||
| url(zpix.woff2) format('woff2'), | |||
| url(zpix.woff) format('woff'), | |||
| url(zpix.ttf) format('truetype'), | |||
| url(zpix.svg) format('svg'); | |||
| font-weight: normal; | |||
| font-style: normal; | |||
| } | |||
| /*使用指定字体*/ | |||
| body { | |||
| font-family: 'source'; | |||
| font-weight: bold; | |||
| } | |||
| </style> | |||
| </head> | |||
| <body> | |||
| 像素进化 | |||
| 像素進化 | |||
| Pixel Evo | |||
| ドット進化 | |||
| 도트 진화 | |||
| </body> | |||
| </html> | |||
| @@ -9,8 +9,8 @@ Use back to undo the last edit. | |||
| * 拖拽怪物头像即可快速交换位置或复制怪物,也支持手机触屏。 | |||
| Drag monster avatars to quickly swap positions or copy monster, also supports mobile touch screen. | |||
|  | |||
| * 可以在编辑界面的怪物ID输入**怪物名称**或**标签**来搜索怪物。 | |||
| You can search for monsters by entering the **Monster Name** or **Tags** in the monster ID of the editing interface. | |||
| * 可以在编辑界面的怪物ID输入**怪物名称**或**标签**来搜索怪物。(键入回车以执行) | |||
| You can search for monsters by entering the **Monster Name** or **Tags** in the monster ID of the editing interface.(Type Enter to execute) | |||
|  | |||
| 点击**系列ID**或**标签**,可搜索该系列 | |||
| Clisk the **Series ID** or **Tags** to search for series. | |||
| @@ -370,11 +370,87 @@ | |||
| { | |||
| content: "Search By Tags"; | |||
| } | |||
| .dialog-close::before | |||
| .dialog-close::before, | |||
| .mask-close::before | |||
| { | |||
| content: "Close"; | |||
| } | |||
| .dialog .dialog-content .additional-string::before | |||
| { | |||
| content: "Other Languages"; | |||
| } | |||
| .open-evolutionary-tree::before | |||
| { | |||
| content: "⛓️Evo Search"; | |||
| } | |||
| .base .evo-type::before, | |||
| .base .evo-type::after | |||
| { | |||
| content: "Base"; | |||
| } | |||
| .evolution .evo-type::before, | |||
| .evolution .evo-type::after | |||
| { | |||
| content: "Evolution"; | |||
| } | |||
| .ult-evo .evo-type::before, | |||
| .ult-evo .evo-type::after | |||
| { | |||
| content: "Ult Evo"; | |||
| } | |||
| .reincarnation .evo-type::before, | |||
| .reincarnation .evo-type::after | |||
| { | |||
| content: "Reincarnation"; | |||
| } | |||
| .pixel-evo .evo-type::before, | |||
| .pixel-evo .evo-type::after | |||
| { | |||
| content: "Pixel Evo"; | |||
| } | |||
| .assist-evo .evo-type::before, | |||
| .assist-evo .evo-type::after | |||
| { | |||
| content: "Assist Evo"; | |||
| } | |||
| .super-reincarnation .evo-type::before, | |||
| .super-reincarnation .evo-type::after | |||
| { | |||
| content: "Super Reincarnation"; | |||
| } | |||
| .super-ult-evo .evo-type::before, | |||
| .super-ult-evo .evo-type::after | |||
| { | |||
| content: "Super Ult Evo"; | |||
| } | |||
| .evolution .evo-type | |||
| { | |||
| transform: scaleX(0.90); | |||
| margin: calc(-100px * (1 - 0.90) / 2); | |||
| } | |||
| .pixel-evo .evo-type | |||
| { | |||
| transform: scaleX(0.95); | |||
| margin: calc(-100px * (1 - 0.95) / 2); | |||
| } | |||
| .super-ult-evo .evo-type | |||
| { | |||
| transform: scaleX(0.65); | |||
| margin: calc(-100px * (1 - 0.63) / 2); | |||
| } | |||
| .reincarnation .evo-type | |||
| { | |||
| transform: scaleX(0.60); | |||
| margin: calc(-100px * (1 - 0.55) / 2); | |||
| } | |||
| .assist-evo .evo-type | |||
| { | |||
| transform: scaleX(0.85); | |||
| margin: calc(-100px * (1 - 0.85) / 2); | |||
| } | |||
| .super-reincarnation .evo-type | |||
| { | |||
| transform: scaleX(0.43); | |||
| margin: calc(-100px * 1 / 2); | |||
| } | |||
| @@ -362,11 +362,66 @@ | |||
| { | |||
| content: "タグで検索"; | |||
| } | |||
| .dialog-close::before | |||
| .dialog-close::before, | |||
| .mask-close::before | |||
| { | |||
| content: "閉じる"; | |||
| } | |||
| .dialog .dialog-content .additional-string::before | |||
| { | |||
| content: "他の言語"; | |||
| } | |||
| .open-evolutionary-tree::before | |||
| { | |||
| content: "⛓️進化サーチ"; | |||
| } | |||
| .base .evo-type::before, | |||
| .base .evo-type::after | |||
| { | |||
| content: "ベース"; | |||
| } | |||
| .evolution .evo-type::before, | |||
| .evolution .evo-type::after | |||
| { | |||
| content: "進化"; | |||
| } | |||
| .ult-evo .evo-type::before, | |||
| .ult-evo .evo-type::after | |||
| { | |||
| content: "究極進化"; | |||
| } | |||
| .reincarnation .evo-type::before, | |||
| .reincarnation .evo-type::after | |||
| { | |||
| content: "転生進化"; | |||
| } | |||
| .pixel-evo .evo-type::before, | |||
| .pixel-evo .evo-type::after | |||
| { | |||
| content: "ドット進化"; | |||
| } | |||
| .assist-evo .evo-type::before, | |||
| .assist-evo .evo-type::after | |||
| { | |||
| content: "アシスト進化"; | |||
| } | |||
| .super-reincarnation .evo-type::before, | |||
| .super-reincarnation .evo-type::after | |||
| { | |||
| content: "超転生進化"; | |||
| } | |||
| .super-ult-evo .evo-type::before, | |||
| .super-ult-evo .evo-type::after | |||
| { | |||
| content: "超究極進化"; | |||
| } | |||
| .pixel-evo .evo-type | |||
| { | |||
| transform: scaleX(0.90); | |||
| margin: calc(-100px * (1 - 0.90) / 2); | |||
| } | |||
| .assist-evo .evo-type | |||
| { | |||
| transform: scaleX(0.80); | |||
| margin: calc(-100px * (1 - 0.80) / 2); | |||
| } | |||
| @@ -359,11 +359,60 @@ | |||
| { | |||
| content: "태그로 검색"; | |||
| } | |||
| .dialog-close::before | |||
| .dialog-close::before, | |||
| .mask-close::before | |||
| { | |||
| content: "가까이"; | |||
| } | |||
| .dialog .dialog-content .additional-string::before | |||
| { | |||
| content: "다른 언어"; | |||
| } | |||
| .open-evolutionary-tree::before | |||
| { | |||
| content: "⛓️진화 계통"; | |||
| } | |||
| .base .evo-type::before, | |||
| .base .evo-type::after | |||
| { | |||
| content: "베이스"; | |||
| } | |||
| .evolution .evo-type::before, | |||
| .evolution .evo-type::after | |||
| { | |||
| content: "진 화"; | |||
| } | |||
| .ult-evo .evo-type::before, | |||
| .ult-evo .evo-type::after | |||
| { | |||
| content: "궁극진화"; | |||
| } | |||
| .reincarnation .evo-type::before, | |||
| .reincarnation .evo-type::after | |||
| { | |||
| content: "환생 진와"; | |||
| } | |||
| .pixel-evo .evo-type::before, | |||
| .pixel-evo .evo-type::after | |||
| { | |||
| content: "도트 진화"; | |||
| } | |||
| .assist-evo .evo-type::before, | |||
| .assist-evo .evo-type::after | |||
| { | |||
| content: "어시스트 진화"; | |||
| } | |||
| .super-reincarnation .evo-type::before, | |||
| .super-reincarnation .evo-type::after | |||
| { | |||
| content: "초 환색진화"; | |||
| } | |||
| .super-ult-evo .evo-type::before, | |||
| .super-ult-evo .evo-type::after | |||
| { | |||
| content: "초 궁극진화"; | |||
| } | |||
| .evo-type | |||
| { | |||
| font-weight: bold; | |||
| } | |||
| @@ -1,7 +1,8 @@ | |||
| @charset "utf-8"; | |||
| @import "zh.css"; | |||
| .edit-box .monsterinfo-box .monster-name, | |||
| .edit-box .skill-box .skill-datail | |||
| .edit-box .skill-box .skill-datail, | |||
| .evo-panel-right .monster-name | |||
| { | |||
| font-family: "Microsoft Yahei","Source Han Sans",Arial, Helvetica, sans-serif; | |||
| font-weight: bold; | |||
| @@ -365,11 +365,56 @@ | |||
| { | |||
| content: "以標簽搜索"; | |||
| } | |||
| .dialog-close::before | |||
| .dialog-close::before, | |||
| .mask-close::before | |||
| { | |||
| content: "關閉"; | |||
| } | |||
| .dialog .dialog-content .additional-string::before | |||
| { | |||
| content: "其他語言"; | |||
| } | |||
| .open-evolutionary-tree::before | |||
| { | |||
| content: "⛓️進化鏈"; | |||
| } | |||
| .base .evo-type::before, | |||
| .base .evo-type::after | |||
| { | |||
| content: "基礎"; | |||
| } | |||
| .evolution .evo-type::before, | |||
| .evolution .evo-type::after | |||
| { | |||
| content: "進化"; | |||
| } | |||
| .ult-evo .evo-type::before, | |||
| .ult-evo .evo-type::after | |||
| { | |||
| content: "究極進化"; | |||
| } | |||
| .reincarnation .evo-type::before, | |||
| .reincarnation .evo-type::after | |||
| { | |||
| content: "轉生進化"; | |||
| } | |||
| .pixel-evo .evo-type::before, | |||
| .pixel-evo .evo-type::after | |||
| { | |||
| content: "像素進化"; | |||
| } | |||
| .assist-evo .evo-type::before, | |||
| .assist-evo .evo-type::after | |||
| { | |||
| content: "輔助進化"; | |||
| } | |||
| .super-reincarnation .evo-type::before, | |||
| .super-reincarnation .evo-type::after | |||
| { | |||
| content: "超轉生進化"; | |||
| } | |||
| .super-ult-evo .evo-type::before, | |||
| .super-ult-evo .evo-type::after | |||
| { | |||
| content: "超究極進化"; | |||
| } | |||
| @@ -365,11 +365,56 @@ | |||
| { | |||
| content: "以標簽搜索"; | |||
| } | |||
| .dialog-close::before | |||
| .dialog-close::before, | |||
| .mask-close::before | |||
| { | |||
| content: "关闭"; | |||
| } | |||
| .dialog .dialog-content .additional-string::before | |||
| { | |||
| content: "其他語言"; | |||
| } | |||
| .open-evolutionary-tree::before | |||
| { | |||
| content: "⛓️进化链"; | |||
| } | |||
| .base .evo-type::before, | |||
| .base .evo-type::after | |||
| { | |||
| content: "基礎"; | |||
| } | |||
| .evolution .evo-type::before, | |||
| .evolution .evo-type::after | |||
| { | |||
| content: "進化"; | |||
| } | |||
| .ult-evo .evo-type::before, | |||
| .ult-evo .evo-type::after | |||
| { | |||
| content: "究極進化"; | |||
| } | |||
| .reincarnation .evo-type::before, | |||
| .reincarnation .evo-type::after | |||
| { | |||
| content: "轉生進化"; | |||
| } | |||
| .pixel-evo .evo-type::before, | |||
| .pixel-evo .evo-type::after | |||
| { | |||
| content: "像素進化"; | |||
| } | |||
| .assist-evo .evo-type::before, | |||
| .assist-evo .evo-type::after | |||
| { | |||
| content: "輔助進化"; | |||
| } | |||
| .super-reincarnation .evo-type::before, | |||
| .super-reincarnation .evo-type::after | |||
| { | |||
| content: "超轉生進化"; | |||
| } | |||
| .super-ult-evo .evo-type::before, | |||
| .super-ult-evo .evo-type::after | |||
| { | |||
| content: "超究極進化"; | |||
| } | |||
| @@ -721,7 +721,7 @@ var formation = new Formation(teamsCount,5); | |||
| <div class="setting-row row-mon-id"> | |||
| <button class="open-evolutionary-tree"></button> | |||
| <button class="open-search"></button><!--搜索怪物按钮--> | |||
| <input type="search" class="m-id" list="monsters-name-list"/><button class="search-by-string"></button> | |||
| <input type="search" class="m-id" list="monsters-name-list"/> | |||
| <datalist id="monsters-name-list"></datalist> | |||
| <ul class="evo-card-list"></ul> | |||
| </div> | |||
| @@ -871,11 +871,11 @@ var formation = new Formation(teamsCount,5); | |||
| <div class="dialog dialog-search-string display-none"> | |||
| <div class="dialog-title"></div> | |||
| <div class="dialog-content"></div> | |||
| <div class="dialog-control"><button class="dialog-close"></button></div> | |||
| <div class="dialog-control"><button class="dialog-close brown-button"></button></div> | |||
| </div> | |||
| <div class="mask mask-evolutionary-tree display-none"> | |||
| <button class="mask-close brown-button"></button> | |||
| <div class="mask-content"></div> | |||
| <button class="mask-close"></button> | |||
| </div> | |||
| </div> | |||
| <div class="button-box"> | |||
| @@ -396,7 +396,7 @@ function calculateAbility_max(id,solo, teamsCount) | |||
| //搜索卡片用 | |||
| function searchCards(cards,attr1,attr2,fixMainColor,types,typeAndOr,rares,awokens,sawokens,equalAk,incSawoken) | |||
| { | |||
| let cardsRange = cards.concat(); //这里需要复制一份原来的数组,不然若无筛选,后面的排序会改变初始Cards | |||
| let cardsRange = cards.slice(1); //这里需要复制一份原来的数组,不然若无筛选,后面的排序会改变初始Cards | |||
| //属性 | |||
| if (attr1 != null && attr1 === attr2 || //主副属性一致并不为空 | |||
| (attr1 === 6 && attr2 === -1)) //主副属性都为“无” | |||
| @@ -121,6 +121,7 @@ DBOpenRequest.onupgradeneeded = function(event) { | |||
| } | |||
| }*/ | |||
| //队员基本的留空 | |||
| var Member = function() { | |||
| this.id = 0; | |||
| @@ -307,6 +308,97 @@ Formation.prototype.loadObj = function(f) { | |||
| if (f.b) | |||
| this.teams[0][2] = f.b; //原来模式的徽章 | |||
| }; | |||
| //进化树 | |||
| class EvoTree | |||
| { | |||
| constructor(mid, parent = null) | |||
| { | |||
| const _this = this; | |||
| if (parent == null) | |||
| { | |||
| mid = Cards[mid].evoRootId; | |||
| } | |||
| const card = Cards[mid]; | |||
| this.id = mid; | |||
| this.card = card; | |||
| if (parent == null) | |||
| { | |||
| this.evoType = "Base"; | |||
| }else | |||
| { | |||
| if (card.evoMaterials.includes(3826)) //像素进化 | |||
| { | |||
| this.evoType = "Pixel Evo"; | |||
| }else if (card.awakenings.includes(49)) //武器 | |||
| { | |||
| this.evoType = "Assist Evo"; | |||
| }else if (card.isUltEvo) //究进 | |||
| { | |||
| if (parent.card.isUltEvo) //超究进 | |||
| { | |||
| this.evoType = "Super Ult Evo"; | |||
| }else | |||
| { | |||
| this.evoType = "Ult Evo"; | |||
| } | |||
| }else | |||
| { | |||
| if (parent.card.isUltEvo) //转生 | |||
| { | |||
| this.evoType = "Reincarnation"; | |||
| }else if(parent.evoType == "Reincarnation") | |||
| { | |||
| this.evoType = "Super Reincarnation"; | |||
| }else | |||
| { | |||
| this.evoType = "Evolution"; | |||
| } | |||
| } | |||
| } | |||
| this.children = Cards.filter(scard=>scard.evoBaseId == mid && scard.id != mid).map(scard=>new EvoTree(scard.id,_this)); | |||
| }; | |||
| toListNode() | |||
| { | |||
| const createCardHead = editBox.createCardHead; | |||
| const tBox = document.createElement("div"); | |||
| tBox.className = "evo-box"; | |||
| const evoPanel = tBox.appendChild(document.createElement("div")); | |||
| evoPanel.className = "evo-panel " + this.evoType.toLowerCase().replace(/\s/g,"-"); | |||
| const evotPanel_L = evoPanel.appendChild(document.createElement("div")); | |||
| evotPanel_L.className = "evo-panel-left"; | |||
| const evotPanel_R = evoPanel.appendChild(document.createElement("div")); | |||
| evotPanel_R.className = "evo-panel-right"; | |||
| const evoTypeDiv = evotPanel_L.appendChild(document.createElement("div")); | |||
| evoTypeDiv.className = "evo-type-div"; | |||
| const evoType = evoTypeDiv.appendChild(document.createElement("span")); | |||
| evoType.className = "evo-type"; | |||
| const monHead = evotPanel_L.appendChild(createCardHead(this.id)); | |||
| monHead.className = "monster-head"; | |||
| const monName = evotPanel_R.appendChild(document.createElement("div")); | |||
| monName.className = "monster-name"; | |||
| monName.textContent = returnMonsterNameArr(this.card, currentLanguage.searchlist, currentDataSource.code)[0]; | |||
| const evotMaterials = evotPanel_R.appendChild(document.createElement("ul")); | |||
| evotMaterials.className = "evo-materials"; | |||
| this.card.evoMaterials.forEach(mid=>{ | |||
| //const li = evotMaterials.appendChild(document.createElement("li")); | |||
| evotMaterials.appendChild(createCardHead(mid)); | |||
| }); | |||
| const evoSubEvo = tBox.appendChild(document.createElement("ul")); | |||
| evoSubEvo.className = "evo-subevo"; | |||
| this.children.forEach(subEvo=>{ | |||
| const li = evoSubEvo.appendChild(document.createElement("li")); | |||
| li.appendChild(subEvo.toListNode()); | |||
| }); | |||
| return tBox; | |||
| }; | |||
| } | |||
| //切换通用的切换className显示的函数 | |||
| function toggleDomClassName(checkBox, className, checkedAdd = true, dom = document.body) { | |||
| if (!checkBox) return; | |||
| @@ -1156,6 +1248,29 @@ function initialize() { | |||
| return cli; | |||
| }; | |||
| //显示进化树 | |||
| const evolutionaryTreeMask = settingBox.querySelector(".mask-evolutionary-tree"); | |||
| evolutionaryTreeMask.show = function(monid) | |||
| { | |||
| const maskContent = this.querySelector(".mask-content"); | |||
| const fragment = document.createDocumentFragment(); | |||
| const evoTree = new EvoTree(monid); | |||
| fragment.appendChild(evoTree.toListNode()); | |||
| maskContent.innerHTML = ""; | |||
| maskContent.appendChild(fragment); | |||
| this.classList.remove(className_displayNone); | |||
| } | |||
| evolutionaryTreeMask.close = function() | |||
| { | |||
| this.classList.add(className_displayNone); | |||
| } | |||
| const evolutionaryTreeMask_Close = evolutionaryTreeMask.querySelector(".mask-close"); | |||
| evolutionaryTreeMask_Close.onclick = function(){evolutionaryTreeMask.close();}; | |||
| const openEvolutionaryTree = settingBox.querySelector(".row-mon-id .open-evolutionary-tree"); | |||
| openEvolutionaryTree.onclick = function() {evolutionaryTreeMask.show(editBox.mid)}; | |||
| const searchOpen = settingBox.querySelector(".row-mon-id .open-search"); | |||
| searchOpen.onclick = function() { | |||
| s_includeSuperAwoken.onchange(); | |||
| @@ -1525,7 +1640,6 @@ function initialize() { | |||
| //id搜索 | |||
| const monstersID = settingBox.querySelector(".row-mon-id .m-id"); | |||
| const btnSearchByString = settingBox.querySelector(".row-mon-id .search-by-string"); | |||
| monstersID.onchange = function(e) | |||
| { | |||
| if (/^\d+$/.test(this.value)) { | |||
| @@ -1559,18 +1673,16 @@ function initialize() { | |||
| } | |||
| monstersID.oninput = monstersID.onchange; | |||
| monstersID.onkeydown = function(e) { | |||
| //如果键入回车,则执行字符串搜索 | |||
| if (e.key == "Enter") | |||
| { | |||
| if (!/^\d+$/.test(this.value) && this.value.length > 0) //如果不是数字,且字符串长度大于0,则进行字符串搜索 | |||
| { | |||
| btnSearchByString.onclick(); | |||
| searchByString(monstersID.value); | |||
| } | |||
| } | |||
| } | |||
| //字符串搜索 | |||
| btnSearchByString.onclick = function() { | |||
| searchByString(monstersID.value); | |||
| }; | |||
| //觉醒 | |||
| const monEditAwokensRow = settingBox.querySelector(".row-mon-awoken"); | |||
| const awokenCountLabel = monEditAwokensRow.querySelector(".awoken-count"); | |||
| @@ -2371,7 +2483,7 @@ function editBoxChangeMonId(id) { | |||
| } | |||
| const evoCardUl = settingBox.querySelector(".row-mon-id .evo-card-list"); | |||
| evoCardUl.style.display = "none"; | |||
| evoCardUl.classList.add(className_displayNone); | |||
| evoCardUl.innerHTML = ""; //据说直接清空HTML性能更好 | |||
| const evoLinkCardsIdArray = Cards.filter(m=>m.evoRootId == card.evoRootId).map(m=>m.id); //筛选出相同进化链的 | |||
| @@ -2388,7 +2500,7 @@ function editBoxChangeMonId(id) { | |||
| fragment.appendChild(cli); | |||
| }); | |||
| evoCardUl.appendChild(fragment); | |||
| evoCardUl.style.display = "block"; | |||
| evoCardUl.classList.remove(className_displayNone); | |||
| openEvolutionaryTree.classList.remove(className_displayNone); | |||
| }else | |||
| { | |||
| @@ -671,7 +671,7 @@ var formation = new Formation(teamsCount,6); | |||
| <div class="setting-row row-mon-id"> | |||
| <button class="open-evolutionary-tree"></button> | |||
| <button class="open-search"></button><!--搜索怪物按钮--> | |||
| <input type="search" class="m-id" list="monsters-name-list"/><button class="search-by-string"></button> | |||
| <input type="search" class="m-id" list="monsters-name-list"/> | |||
| <datalist id="monsters-name-list"></datalist> | |||
| <ul class="evo-card-list"></ul> | |||
| </div> | |||
| @@ -821,11 +821,11 @@ var formation = new Formation(teamsCount,6); | |||
| <div class="dialog dialog-search-string display-none"> | |||
| <div class="dialog-title"></div> | |||
| <div class="dialog-content"></div> | |||
| <div class="dialog-control"><button class="dialog-close"></button></div> | |||
| <div class="dialog-control"><button class="dialog-close brown-button"></button></div> | |||
| </div> | |||
| <div class="mask mask-evolutionary-tree display-none"> | |||
| <button class="mask-close brown-button"></button> | |||
| <div class="mask-content"></div> | |||
| <button class="mask-close"></button> | |||
| </div> | |||
| </div> | |||
| <div class="button-box"> | |||
| @@ -9,6 +9,17 @@ | |||
| url("fonts/FOT-KurokaneStd-EB.eot") format('embedded-opentype'), | |||
| url("fonts/FOT-KurokaneStd-EB.svg") format('svg'); | |||
| } | |||
| @font-face { | |||
| font-family: 'zpix'; | |||
| src: | |||
| url("fonts/zpix.woff2") format('woff2'), | |||
| url("fonts/zpix.woff") format('woff'), | |||
| url("fonts/zpix.ttf") format('truetype'), | |||
| url("fonts/zpix.eot?#font-spider") format('embedded-opentype'), | |||
| url("fonts/zpix.svg") format('svg'); | |||
| font-weight: normal; | |||
| font-style: normal; | |||
| } | |||
| @keyframes loading-animate{ | |||
| from { | |||
| transform: rotate(0deg); | |||
| @@ -764,7 +775,6 @@ ul{ | |||
| color: white; | |||
| text-shadow: black 2px 2px 0; | |||
| min-height: 100px; | |||
| margin: 5px 0; | |||
| background-image: linear-gradient(#798421,#394914); | |||
| border-top: #B1BB39 solid 4px; | |||
| border-bottom: #72941D ridge 7px; | |||
| @@ -773,7 +783,7 @@ ul{ | |||
| } | |||
| .edit-box .search-box, | |||
| .edit-box .setting-box{ | |||
| padding: 0 10px; | |||
| padding: 10px; | |||
| position: relative; | |||
| } | |||
| /*.edit-box .setting-box .row-mon-id::before{ | |||
| @@ -783,18 +793,8 @@ ul{ | |||
| box-sizing: border-box; | |||
| font-size: 25px; | |||
| height: 40px; | |||
| width: calc(100% - 50px); | |||
| } | |||
| .edit-box .setting-box .row-mon-id .search-by-string{ | |||
| box-sizing: border-box; | |||
| font-size: 25px; | |||
| height: 40px; | |||
| width: 45px; | |||
| margin-left: 5px; | |||
| padding: 0; | |||
| } | |||
| .edit-box .setting-box .row-mon-id .search-by-string::before{ | |||
| content: "🔍"; | |||
| width: 100%; | |||
| display: block; | |||
| } | |||
| .edit-box .setting-box .row-mon-id .unable-monster{ | |||
| pointer-events: none; | |||
| @@ -827,7 +827,8 @@ ul{ | |||
| } | |||
| .edit-box .setting-box .row-mon-id .evo-card-list .monster, | |||
| .edit-box .search-box .search-mon-list .monster, | |||
| .detail-mon .monster | |||
| .detail-mon .monster, | |||
| .mask-evolutionary-tree .evo-panel-left>.monster-head>.monster | |||
| { | |||
| float: none; | |||
| transform: scale(0.75); | |||
| @@ -1883,7 +1884,6 @@ ul{ | |||
| .edit-box .button-box{ | |||
| border-top: black solid 3px; | |||
| background-color: rgba(0,0,0,0.5); | |||
| margin-top: 10px; | |||
| padding: 5px; | |||
| height: 50px; | |||
| } | |||
| @@ -2115,15 +2115,6 @@ ul{ | |||
| text-align: center; | |||
| margin-bottom: 5px; | |||
| } | |||
| .dialog button | |||
| { | |||
| cursor: pointer; | |||
| transition: transform 0.1s; | |||
| } | |||
| .dialog button:active | |||
| { | |||
| transform: scale(1.1); | |||
| } | |||
| .dialog .dialog-content .additional-string | |||
| { | |||
| border-top: 2px solid white; | |||
| @@ -2138,14 +2129,20 @@ ul{ | |||
| text-align: center; | |||
| margin-top:10px; | |||
| } | |||
| .dialog .dialog-control button | |||
| .brown-button | |||
| { | |||
| background-image: linear-gradient(to bottom,#C38E5F,#2F2008); | |||
| border: none; | |||
| border-radius: 5px; | |||
| padding: 2px; | |||
| cursor: pointer; | |||
| transition: transform 0.1s; | |||
| } | |||
| .brown-button:active | |||
| { | |||
| transform: scale(1.1); | |||
| } | |||
| .dialog .dialog-control button::before | |||
| .brown-button::before | |||
| { | |||
| display: inline-block; | |||
| box-sizing: border-box; | |||
| @@ -2203,10 +2200,337 @@ ul{ | |||
| box-sizing: border-box; | |||
| width: calc(100% - 50px * 1); | |||
| } | |||
| .open-evolutionary-tree | |||
| /*.open-evolutionary-tree::before | |||
| { | |||
| content: "⛓️进化链"; | |||
| }*/ | |||
| .mask-evolutionary-tree | |||
| { | |||
| position: absolute; | |||
| width: 100%; | |||
| left: 0; | |||
| top: 0; | |||
| background-color: rgba(0,0,0,0.8); | |||
| } | |||
| .open-evolutionary-tree::before | |||
| .mask-content | |||
| { | |||
| content: "⛓️进化链"; | |||
| text-align: center; | |||
| } | |||
| .evo-box | |||
| { | |||
| display: inline-block; | |||
| text-align: left; | |||
| } | |||
| .evo-panel, | |||
| .evo-panel-left, | |||
| .evo-panel-right | |||
| { | |||
| display: inline-block; | |||
| } | |||
| .mask-evolutionary-tree .evo-panel-left>.monster-head | |||
| { | |||
| display: inline-block; | |||
| } | |||
| .evo-materials>li | |||
| { | |||
| display: inline-block; | |||
| } | |||
| .mask-evolutionary-tree .evo-materials .monster | |||
| { | |||
| transform: scale(0.60); | |||
| margin: calc(-100px * (1 - 0.60) / 2); | |||
| } | |||
| .mask-evolutionary-tree .evo-panel-left>.monster-head>.monster .id | |||
| { | |||
| bottom: 5px; | |||
| font-size: 20px; | |||
| } | |||
| .mask-evolutionary-tree .evo-materials .monster .id | |||
| { | |||
| bottom: 5px; | |||
| font-size: 22px; | |||
| } | |||
| .evo-panel | |||
| { | |||
| border:black 2px solid; | |||
| border-radius: 7px; | |||
| } | |||
| .evo-panel-left, | |||
| .evo-panel-right | |||
| { | |||
| border:#D19635 2px solid; | |||
| border-radius: 4px; | |||
| height: 100px; | |||
| vertical-align: top; | |||
| } | |||
| .evo-panel-left | |||
| { | |||
| border-top-right-radius: unset; | |||
| border-bottom-right-radius: unset; | |||
| border-right: none; | |||
| background-image: linear-gradient(#A16928, #5F3D16); | |||
| padding: 0 2px; | |||
| text-align: center; | |||
| } | |||
| .evo-panel-right | |||
| { | |||
| border-top-left-radius: unset; | |||
| border-bottom-left-radius: unset; | |||
| border-left: none; | |||
| background-image: url(images/slate.svg); | |||
| } | |||
| .evo-panel-right .monster-name | |||
| { | |||
| font-family: var(--game-font-family); | |||
| font-size: 15px; | |||
| line-height: 15px; | |||
| background: #42341F; | |||
| border: 2px inset #F4F18E; | |||
| border-radius: 5px; | |||
| margin: 4px; | |||
| padding: 5px; | |||
| } | |||
| .evo-materials | |||
| { | |||
| margin: 0 4px; | |||
| } | |||
| .evo-materials .null .monster | |||
| { | |||
| opacity: 0.5; | |||
| } | |||
| .evo-materials>li | |||
| { | |||
| margin: 1px; | |||
| } | |||
| .evo-subevo | |||
| { | |||
| padding-left: 35px; | |||
| padding-top: 5px; | |||
| } | |||
| .evo-subevo>li | |||
| { | |||
| position:relative; | |||
| } | |||
| .evo-subevo>li::before | |||
| { | |||
| content:' '; | |||
| position:absolute; | |||
| top:0; | |||
| left:-20px; | |||
| width:15px; | |||
| height:100%; | |||
| border-left:3px solid #E88230; | |||
| } | |||
| .evo-subevo>li::after | |||
| { | |||
| content:' '; | |||
| position:absolute; | |||
| top:43px; | |||
| left:-10px; | |||
| width:0; | |||
| height:0; | |||
| border-top: 8px solid transparent; | |||
| border-left: 10px solid #FFEE71; | |||
| border-bottom: 8px solid transparent; | |||
| } | |||
| .evo-subevo>li:last-child::before | |||
| { | |||
| border-bottom: 3px solid #F3B750; | |||
| border-bottom-left-radius: 8px; | |||
| height:50px; | |||
| } | |||
| .evo-subevo>li:last-child>.evo-box::before | |||
| { | |||
| display: none; | |||
| } | |||
| .evo-subevo>li>.evo-box::before | |||
| { | |||
| content:' '; | |||
| position:absolute; | |||
| top:50px; | |||
| left:-20px; | |||
| width:18px; | |||
| border:none; | |||
| border-top:3px solid #E88230; | |||
| } | |||
| .evo-panel-left .evo-type | |||
| { | |||
| font-family: var(--game-font-family); | |||
| font-size: 15px; | |||
| line-height: 15px; | |||
| display: inline-block; | |||
| position: relative; | |||
| } | |||
| .evo-panel-left .evo-type::before, | |||
| .evo-panel-left .evo-type::after | |||
| { | |||
| } | |||
| .evo-panel-left .evo-type::after | |||
| { | |||
| -webkit-background-clip: text; | |||
| background-clip: text; | |||
| color: transparent; | |||
| font-family: var(--game-font-family); | |||
| font-size: 15px; | |||
| line-height: 15px; | |||
| position: absolute; | |||
| left: 0; | |||
| } | |||
| .evo-panel-left .evo-type::before | |||
| { | |||
| /*text-shadow: black 1px 1px 0,black -1px 1px 0,black 1px -1px 0,black -1px -1px 0;*/ | |||
| -webkit-text-stroke: 3px black; | |||
| text-stroke: 3px black; | |||
| } | |||
| /*.base .evo-type::before, | |||
| .base .evo-type::after | |||
| { | |||
| content: "基礎"; | |||
| } | |||
| .evolution .evo-type::before, | |||
| .evolution .evo-type::after | |||
| { | |||
| content: "進化"; | |||
| } | |||
| .ult-evo .evo-type::before, | |||
| .ult-evo .evo-type::after | |||
| { | |||
| content: "究極進化"; | |||
| } | |||
| .reincarnation .evo-type::before, | |||
| .reincarnation .evo-type::after | |||
| { | |||
| content: "轉生進化"; | |||
| } | |||
| .pixel-evo .evo-type::before, | |||
| .pixel-evo .evo-type::after | |||
| { | |||
| content: "像素進化"; | |||
| font-family: "zpix"; | |||
| font-weight: bold; | |||
| } | |||
| .assist-evo .evo-type::before, | |||
| .assist-evo .evo-type::after | |||
| { | |||
| content: "輔助進化"; | |||
| } | |||
| .super-reincarnation .evo-type::before, | |||
| .super-reincarnation .evo-type::after | |||
| { | |||
| content: "超轉生進化"; | |||
| } | |||
| .super-ult-evo .evo-type::before, | |||
| .super-ult-evo .evo-type::after | |||
| { | |||
| content: "超究極進化"; | |||
| }*/ | |||
| .pixel-evo .evo-type::before, | |||
| .pixel-evo .evo-type::after | |||
| { | |||
| font-family: "zpix"; | |||
| font-weight: bold; | |||
| } | |||
| .base .evo-type::after | |||
| { /*基礎*/ | |||
| background-image: linear-gradient(#FFFFBB, #FFFF88); | |||
| } | |||
| .base | |||
| { | |||
| background-color: #DCB476; | |||
| } | |||
| .base .evo-panel-right | |||
| { | |||
| border-color: #FDC686; | |||
| } | |||
| .evolution .evo-type::after | |||
| { /*進化*/ | |||
| background-image: linear-gradient(#CCFF33, #88EE22); | |||
| } | |||
| .evolution | |||
| { | |||
| background-color: #C49669; | |||
| } | |||
| .evolution .evo-panel-right | |||
| { | |||
| border-color: #DEAA76; | |||
| } | |||
| .ult-evo .evo-type::after | |||
| { /*究極進化*/ | |||
| background-image: linear-gradient(#FFFFAA 20%,#BB8800, #FFFFAA 80%); | |||
| } | |||
| .ult-evo | |||
| { | |||
| background-color: #DDD844; | |||
| } | |||
| .ult-evo .evo-panel-right | |||
| { | |||
| border-color: #FEF84F; | |||
| } | |||
| .reincarnation .evo-type::after | |||
| { /*轉生進化*/ | |||
| background-image: linear-gradient(#00CCCC, #EEFFFF 50%,#AA8800 51%,#FFFFAA); | |||
| } | |||
| .reincarnation | |||
| { | |||
| background-color: #579889; | |||
| } | |||
| .reincarnation .evo-panel-right | |||
| { | |||
| border-color: #78B89A; | |||
| } | |||
| .pixel-evo .evo-type::after | |||
| { /*像素進化*/ | |||
| background-image: linear-gradient(#FFDD77 33%, #EEBB33 34%, #EEBB33 66%, #BB7700 67%); | |||
| } | |||
| .pixel-evo | |||
| { | |||
| background-color: #B1AB94; | |||
| } | |||
| .pixel-evo .evo-panel-right | |||
| { | |||
| border-color: #CBC4AA; | |||
| } | |||
| .assist-evo .evo-type::after | |||
| { /*輔助進化*/ | |||
| background-image: linear-gradient(#AAFF66, #557700); | |||
| } | |||
| .assist-evo | |||
| { | |||
| background-color: #607F38; | |||
| } | |||
| .assist-evo .evo-panel-right | |||
| { | |||
| border-color: #6F9241; | |||
| } | |||
| .super-reincarnation .evo-type::after | |||
| { /*超轉生進化*/ | |||
| background-image: linear-gradient(#EE7700 ,#FFFF88 40%, #1155AA); | |||
| } | |||
| .super-reincarnation | |||
| { | |||
| background-color: #C15644; | |||
| } | |||
| .super-reincarnation .evo-panel-right | |||
| { | |||
| border-color: #DE634F; | |||
| } | |||
| .super-ult-evo .evo-type::after | |||
| { /*超究極進化*/ | |||
| background-image: linear-gradient(#553300,#FFCC00 45%, #FFFF99 55%, #771100); | |||
| } | |||
| .super-ult-evo | |||
| { | |||
| background-image: linear-gradient(#C1D515,#DD7003); | |||
| } | |||
| .super-ult-evo .evo-panel-right | |||
| { | |||
| border-color: #DBE721; | |||
| } | |||
| @@ -1366,7 +1366,7 @@ var formation = new Formation(teamsCount,6); | |||
| <div class="setting-row row-mon-id"> | |||
| <button class="open-evolutionary-tree"></button> | |||
| <button class="open-search"></button><!--搜索怪物按钮--> | |||
| <input type="search" class="m-id" list="monsters-name-list"/><button class="search-by-string"></button> | |||
| <input type="search" class="m-id" list="monsters-name-list"/> | |||
| <datalist id="monsters-name-list"></datalist> | |||
| <ul class="evo-card-list"></ul> | |||
| </div> | |||
| @@ -1516,11 +1516,11 @@ var formation = new Formation(teamsCount,6); | |||
| <div class="dialog dialog-search-string display-none"> | |||
| <div class="dialog-title"></div> | |||
| <div class="dialog-content"></div> | |||
| <div class="dialog-control"><button class="dialog-close"></button></div> | |||
| <div class="dialog-control"><button class="dialog-close brown-button"></button></div> | |||
| </div> | |||
| <div class="mask mask-evolutionary-tree display-none"> | |||
| <button class="mask-close brown-button"></button> | |||
| <div class="mask-content"></div> | |||
| <button class="mask-close"></button> | |||
| </div> | |||
| </div> | |||
| <div class="button-box"> | |||