From 7405d6c94d7adfc29755d402d1c41fa45119f0bb Mon Sep 17 00:00:00 2001 From: Tipx-L <138244655+Tipx-L@users.noreply.github.com> Date: Mon, 25 Sep 2023 06:17:44 -0700 Subject: [PATCH] Add the ability to show code identifiers. --- game/game.js | 251 ++++++++++++++++++++++++-------------- layout/default/layout.css | 143 ++++++++++++---------- layout/default/menu.css | 15 ++- 3 files changed, 252 insertions(+), 157 deletions(-) diff --git a/game/game.js b/game/game.js index fae6e7f07..a9cad5272 100644 --- a/game/game.js +++ b/game/game.js @@ -1347,18 +1347,15 @@ style1:'样式一', style2:'样式二', }, - visualMenu:function(node,link){ + visualMenu:(node,link)=>{ node.className='button character'; node.style.width='200px'; - node.style.height=node.offsetWidth*1080/2400+'px'; + node.style.height=`${node.offsetWidth*1080/2400}px`; node.style.display='flex'; - node.style['flex-direction']='column'; - node.style['align-items']='center'; + node.style.flexDirection='column'; + node.style.alignItems='center'; node.style.backgroundSize='100% 100%'; - node.setBackgroundImage('image/splash/'+link+'.jpg'); - }, - onclick:function(item){ - game.saveConfig('splash_style',item); + node.setBackgroundImage(`image/splash/${link}.jpg`); } }, // fewplayer:{ @@ -3968,16 +3965,82 @@ unfrequent:true, }, show_characternamepinyin:{ - name:'显示武将名拼音等信息', - intro:'在武将资料卡显示武将名及其拼音、性别、势力、体力等信息', + name:'显示武将名注解', + intro:'在武将资料卡显示武将名及其注解、性别、势力、体力等信息', init:true, unfrequent:true, + item:{ + false:'不显示', + true:'显示拼音', + showCodeIdentifier:'显示代码ID' + }, + visualMenu:(node,link,name)=>{ + node.classList.add('button','character'); + const style=node.style; + style.alignItems='center'; + style.animation='background-position-left-center-right-center-left-center 15s ease infinite'; + style.background='linear-gradient(-45deg, #EE7752, #E73C7E, #23A6D5, #23D5AB)'; + style.backgroundSize='400% 400%'; + style.display='flex'; + style.height='60px'; + style.justifyContent='center'; + style.width='150px'; + const firstChild=node.firstChild; + firstChild.removeAttribute('class'); + if(link=='false') return; + const ruby=document.createElement('ruby'); + ruby.textContent=name; + const leftParenthesisRP=document.createElement('rp'); + leftParenthesisRP.textContent='('; + ruby.appendChild(leftParenthesisRP); + const rt=document.createElement('rt'); + rt.style.fontSize='smaller'; + rt.textContent=link=='showCodeIdentifier'?link:get.pinyin(name).join(' '); + ruby.appendChild(rt); + const rightParenthesisRP=document.createElement('rp'); + rightParenthesisRP.textContent=')'; + ruby.appendChild(rightParenthesisRP); + firstChild.innerHTML=ruby.outerHTML; + } }, show_skillnamepinyin:{ - name:'显示技能名拼音', - intro:'在武将资料卡显示技能名拼音', + name:'显示技能名注解', + intro:'在武将资料卡显示技能名注解', init:true, unfrequent:true, + item:{ + false:'不显示', + true:'显示拼音', + showCodeIdentifier:'显示代码ID' + }, + visualMenu:(node,link,name)=>{ + node.classList.add('button','character'); + const style=node.style; + style.alignItems='center'; + style.animation='background-position-left-center-right-center-left-center 15s ease infinite'; + style.background='linear-gradient(-45deg, #EE7752, #E73C7E, #23A6D5, #23D5AB)'; + style.backgroundSize='400% 400%'; + style.display='flex'; + style.height='60px'; + style.justifyContent='center'; + style.width='150px'; + const firstChild=node.firstChild; + firstChild.removeAttribute('class'); + if(link=='false') return; + const ruby=document.createElement('ruby'); + ruby.textContent=name; + const leftParenthesisRP=document.createElement('rp'); + leftParenthesisRP.textContent='('; + ruby.appendChild(leftParenthesisRP); + const rt=document.createElement('rt'); + rt.style.fontSize='smaller'; + rt.textContent=link=='showCodeIdentifier'?link:get.pinyin(name).join(' '); + ruby.appendChild(rt); + const rightParenthesisRP=document.createElement('rp'); + rightParenthesisRP.textContent=')'; + ruby.appendChild(rightParenthesisRP); + firstChild.innerHTML=ruby.outerHTML; + } } } }, @@ -8645,20 +8708,21 @@ } } const loadPack=()=>{ - if (Array.isArray(lib.onprepare)&&lib.onprepare.length){ + const isArray=Array.isArray; + if (isArray(lib.onprepare)&&lib.onprepare.length){ _status.onprepare=Object.freeze(lib.onprepare.map(fn=>{ if(typeof fn!="function") return; return (gnc.is.generatorFunc(fn)?gnc.of(fn):fn)(); })); } let toLoad=lib.config.all.cards.length+lib.config.all.characters.length+1; - if(_status.jsExt) toLoad+=_status.jsExt.reduce((previousValue,currentValue)=>{ - const arrayLengths=Object.values(currentValue).reduce((previousElement,currentElement)=>{ - if(Array.isArray(currentElement)) previousElement.push(currentElement.length); - return previousElement; + if(_status.javaScriptExtensions) toLoad+=_status.javaScriptExtensions.reduce((constructingToLoad,javaScriptExtension)=>{ + const lengths=Object.values(javaScriptExtension).reduce((constructingLengths,value)=>{ + if(isArray(value)) constructingLengths.push(value.length); + return constructingLengths; },[]); - if(!arrayLengths.length) return previousValue+1; - return previousValue+Math.min(...arrayLengths); + if(!lengths.length) return constructingToLoad+1; + return constructingToLoad+Math.min(...lengths); },0); const packLoaded=gnc.of(function*(){ toLoad--; @@ -8688,33 +8752,45 @@ lib.init.js(`${lib.assetURL}card`,lib.config.all.cards,packLoaded,packLoaded); lib.init.js(`${lib.assetURL}character`,lib.config.all.characters,packLoaded,packLoaded); lib.init.js(`${lib.assetURL}character`,'rank',packLoaded,packLoaded); - if(!_status.jsExt) return; - const loadJSExt=(jsExt,pathArray,fileArray,onloadArray,onerrorArray,index)=>{ - if(!pathArray&&!fileArray&&!onloadArray&&!onerrorArray){ - lib.init.js(jsExt.path,jsExt.file,()=>{ - if(typeof jsExt.onload=='function') jsExt.onload(); + if(!_status.javaScriptExtensions) return; + const loadJavaScriptExtension=(javaScriptExtension,pathArray,fileArray,onLoadArray,onErrorArray,index)=>{ + if(!pathArray&&!fileArray&&!onLoadArray&&!onErrorArray){ + lib.init.js(javaScriptExtension.path,javaScriptExtension.file,()=>{ + if(typeof javaScriptExtension.onload=='function') javaScriptExtension.onload(); packLoaded(); },()=>{ - if(typeof jsExt.onerror=='function') jsExt.onerror(); + if(typeof javaScriptExtension.onerror=='function') javaScriptExtension.onerror(); packLoaded(); }); return; } if(typeof index!='number') index=0; - if(pathArray&&index>=jsExt.path.length||fileArray&&index>=jsExt.file.length||onloadArray&&index>=jsExt.onload.length||onerrorArray&&index>=jsExt.onerror.length) return; - const path=pathArray?jsExt.path[index]:jsExt.path,file=fileArray?jsExt.file[index]:jsExt.file,onload=onloadArray?jsExt.onload[index]:jsExt.onload,onerror=onerrorArray?jsExt.onerror[index]:jsExt.onerror,jsExtOnLoad=()=>{ - if(typeof onload=='function') onload(); - loadJSExt(jsExt,pathArray,fileArray,onloadArray,onerrorArray,index+1); + if(pathArray&&index>=javaScriptExtension.path.length) return; + if(fileArray&&index>=javaScriptExtension.file.length) return; + if(onLoadArray&&index>=javaScriptExtension.onload.length) return; + if(onErrorArray&&index>=javaScriptExtension.onerror.length) return; + const path=pathArray?javaScriptExtension.path[index]:javaScriptExtension.path; + const file=fileArray?javaScriptExtension.file[index]:javaScriptExtension.file; + const onLoad=onLoadArray?javaScriptExtension.onload[index]:javaScriptExtension.onload; + const onError=onErrorArray?javaScriptExtension.onerror[index]:javaScriptExtension.onerror; + const javaScriptExtensionOnLoad=()=>{ + if(typeof onLoad=='function') onLoad(); + loadJavaScriptExtension(javaScriptExtension,pathArray,fileArray,onLoadArray,onErrorArray,index+1); packLoaded(); },jsExtOnError=()=>{ - if(typeof onerror=='function') onerror(); - loadJSExt(jsExt,pathArray,fileArray,onloadArray,onerrorArray,index+1); + if(typeof onError=='function') onError(); + loadJavaScriptExtension(javaScriptExtension,pathArray,fileArray,onLoadArray,onErrorArray,index+1); packLoaded(); }; - lib.init.js(path,file,jsExtOnLoad,jsExtOnError); + lib.init.js(path,file,javaScriptExtensionOnLoad,jsExtOnError); }; - _status.jsExt.forEach(value=>loadJSExt(value,Array.isArray(value.path),Array.isArray(value.file),Array.isArray(value.onload),Array.isArray(value.onerror))); - // if(lib.device!='ios'&&lib.config.enable_pressure) lib.init.js(lib.assetURL+'game','pressure'); + _status.javaScriptExtensions.forEach(javaScriptExtension=>{ + const pathArray=isArray(javaScriptExtension.path); + const fileArray=isArray(javaScriptExtension.file); + const onLoadArray=isArray(javaScriptExtension.onLoad); + const onErrorArray=isArray(javaScriptExtension.onError); + loadJavaScriptExtension(javaScriptExtension,pathArray,fileArray,onLoadArray,onErrorArray); + }); }; var layout=lib.config.layout; @@ -10326,48 +10402,45 @@ //在扩展的precontent中调用,用于加载扩展必需的JS文件。 //If any of the parameters is an Array, corresponding files will be loaded in order //如果任意参数为数组,则按顺序加载加载相应的文件 - jsForExtension:(path,file,onload,onerror)=>{ - if(!_status.jsExt) _status.jsExt=[]; - _status.jsExt.add({ + jsForExtension:(path,file,onLoad,onError)=>{ + if(!_status.javaScriptExtensions) _status.javaScriptExtensions=[]; + _status.javaScriptExtensions.push({ path:path, file:file, - onload:onload, - onerror:onerror + onLoad:onLoad, + onError:onError }); }, - js:(path,file,onload,onerror)=>{ + js:(path,file,onLoad,onError)=>{ if(path[path.length-1]=='/') path=path.slice(0,path.length-1); if(path==`${lib.assetURL}mode`&&lib.config.all.stockmode.indexOf(file)==-1){ - lib.genAwait(lib.init[`setMode_${file}`]()).then(onload); + lib.genAwait(lib.init[`setMode_${file}`]()).then(onLoad); return; } if(Array.isArray(file)){ - file.forEach(value=>lib.init.js(path,value,onload,onerror)); + file.forEach(value=>lib.init.js(path,value,onLoad,onError)); return; } let scriptSource=file?`${path}/${file}.js`:path; if(path.indexOf('http')==0) scriptSource+=`?rand=${get.id()}`; else if(lib.config.fuck_sojson&&scriptSource.includes('extension')!=-1&&scriptSource.indexOf(lib.assetURL)==0){ - const path_to_read=scriptSource.slice(lib.assetURL.length); - const alertMsg=`检测到您安装了使用免费版sojson进行加密的扩展。请谨慎使用这些扩展,避免游戏数据遭到破坏。\n扩展文件:${path_to_read}`; - if(typeof game.readFileAsText=='function'){ - game.readFileAsText(path_to_read,result=>{ - if(result.includes('sojson')||result.includes('jsjiami')||result.includes('var _0x')) alert(alertMsg); - },()=>void 0); - }else if(location.origin!='file://'){ - lib.init.reqSync(path_to_read,function(){ - var result = this.responseText; - if(result.includes('sojson')||result.includes('jsjiami')||result.includes('var _0x')) alert(alertMsg); - },e=>{}); - } + const pathToRead=scriptSource.slice(lib.assetURL.length); + const alertMessage=`检测到您安装了使用免费版sojson进行加密的扩展。请谨慎使用这些扩展,避免游戏数据遭到破坏。\n扩展文件:${pathToRead}`; + if(typeof game.readFileAsText=='function') game.readFileAsText(pathToRead,result=>{ + if(result.includes('sojson')||result.includes('jsjiami')||result.includes('var _0x')) alert(alertMessage); + },()=>void 0); + else if(location.origin!='file://') lib.init.reqSync(pathToRead,function(){ + const result = this.responseText; + if(result.includes('sojson')||result.includes('jsjiami')||result.includes('var _0x')) alert(alertMessage); + },()=>void 0); } const script=document.createElement('script'); (scriptSource.indexOf('db:')==0?game.getDB('file',scriptSource.slice(3)).then(get.objectURL):new Promise(resolve=>resolve(scriptSource))).then(resolvedScriptSource=>{ script.src=resolvedScriptSource; if(path.indexOf('http')==0) script.addEventListener('load',()=>script.remove()); document.head.appendChild(script); - if(typeof onload=='function') script.addEventListener('load',onload); - if(typeof onerror=='function') script.addEventListener('error',onerror); + if(typeof onLoad=='function') script.addEventListener('load',onLoad); + if(typeof onError=='function') script.addEventListener('error',onError); }); return script; }, @@ -10375,51 +10448,48 @@ * 同步lib.init.js * @returns { void } */ - jsSync:(path,file,onload,onerror)=>{ + jsSync:(path,file,onLoad,onError)=>{ if(lib.assetURL.length==0&&location.origin=='file://'&&typeof game.readFile=='undefined'){ const e=new Error('浏览器file协议下无法使用此api,请在http/https协议下使用此api'); - if(typeof onerror=='function') onerror(e); + if(typeof onError=='function') onError(e); else throw e; return; } if(path[path.length-1]=='/') path=path.slice(0,path.length-1); if(path==`${lib.assetURL}mode`&&lib.config.all.stockmode.indexOf(file)==-1){ - lib.genAwait(lib.init[`setMode_${file}`]()).then(onload); + lib.genAwait(lib.init[`setMode_${file}`]()).then(onLoad); return; } if(Array.isArray(file)){ - return file.forEach(value=>lib.init.js(path,value,onload,onerror)); + return file.forEach(value=>lib.init.js(path,value,onLoad,onError)); } - let script_src; - if(!file) script_src=path; - else script_src=`${path}/${file}.js`; - if(path.indexOf('http')==0) script_src+=`?rand=${get.id()}`; - const xhr=new XMLHttpRequest(); + let scriptSource; + if(!file) scriptSource=path; + else scriptSource=`${path}/${file}.js`; + if(path.indexOf('http')==0) scriptSource+=`?rand=${get.id()}`; + const xmlHttpRequest=new XMLHttpRequest(); let data; - xhr.addEventListener("load",()=>{ - data=xhr.responseText; + xmlHttpRequest.addEventListener("load",()=>{ + data=xmlHttpRequest.responseText; if(!data) { - if(typeof onerror=='function') onerror(new Error(script_src + '加载失败!')); + if(typeof onError=='function') onError(new Error(`${scriptSource}加载失败!`)); return; } - if(lib.config.fuck_sojson&&script_src.includes('extension')!=-1&&script_src.indexOf(lib.assetURL)==0){ - const path_to_read=script_src.slice(lib.assetURL.length); - if(data.includes('sojson')||data.includes('jsjiami')||data.includes('var _0x')) alert(`检测到您安装了使用免费版sojson进行加密的扩展。请谨慎使用这些扩展,避免游戏数据遭到破坏。\n扩展文件:${path_to_read}`); + if(lib.config.fuck_sojson&&scriptSource.includes('extension')!=-1&&scriptSource.indexOf(lib.assetURL)==0){ + const pathToRead=scriptSource.slice(lib.assetURL.length); + if(data.includes('sojson')||data.includes('jsjiami')||data.includes('var _0x')) alert(`检测到您安装了使用免费版sojson进行加密的扩展。请谨慎使用这些扩展,避免游戏数据遭到破坏。\n扩展文件:${pathToRead}`); } try{ window.eval(data); - if(typeof onload=='function'){ - onload(); - } - }catch(error){ - if(typeof onerror=='function'){ - onerror(error); - } + if(typeof onLoad=='function') onLoad(); + } + catch(error){ + if(typeof onError=='function') onError(error); } }); - if(typeof onerror=='function') xhr.addEventListener("error",onerror); - xhr.open("GET",script_src,false); - xhr.send(); + if(typeof onError=='function') xmlHttpRequest.addEventListener("error",onError); + xmlHttpRequest.open("GET",scriptSource,false); + xmlHttpRequest.send(); }, req:(str,onload,onerror,master)=>{ let sScriptURL; @@ -53571,8 +53641,8 @@ else if(lib.config.favouriteCharacter.contains(name)){ fav.classList.add('active'); } - const introduction=ui.create.div('.characterintro',uiintro); - if(lib.config.show_characternamepinyin){ + const introduction=ui.create.div('.characterintro',uiintro),showCharacterNamePinyin=lib.config.show_characternamepinyin; + if(showCharacterNamePinyin){ const characterIntroTable=ui.create.div('.character-intro-table',introduction),span=document.createElement('span'); span.style.fontWeight='bold'; const nameInfo=get.character(name),exInfo=nameInfo[4],characterName=exInfo&&exInfo.includes('ruby')?lib.translate[name]:get.rawName(name); @@ -53583,7 +53653,7 @@ leftParenthesisRP.textContent='('; ruby.appendChild(leftParenthesisRP); const rt=document.createElement('rt'); - rt.innerHTML=lib.translate[`${name}_rt`]||get.pinyin(characterName).join(' '); + rt.innerHTML=showCharacterNamePinyin=='showCodeIdentifier'?name:lib.translate[`${name}_rt`]||get.pinyin(characterName).join(' '); ruby.appendChild(rt); const rightParenthesisRP=document.createElement('rp'); rightParenthesisRP.textContent=')'; @@ -53644,12 +53714,12 @@ hpDiv.dataset.condition=infoHP<4?'mid':'high'; ui.create.div(hpDiv); const hpTextDiv=ui.create.div('.text',hpDiv),infoMaxHP=get.infoMaxHp(nameInfoHP); - hpTextDiv.innerHTML=infoHP==infoMaxHP?infoHP:`${infoHP}/${infoMaxHP}`; + hpTextDiv.innerHTML=infoHP==infoMaxHP?`×${infoHP}`:`×${infoHP}/${infoMaxHP}`; const infoShield=get.infoHujia(nameInfoHP); if(infoShield){ ui.create.div('.shield',hpDiv); const shieldTextDiv=ui.create.div('.text',hpDiv); - shieldTextDiv.innerHTML=infoShield; + shieldTextDiv.innerHTML=`×${infoShield}`; } introduction.appendChild(document.createElement('hr')); } @@ -53681,14 +53751,15 @@ skillNameSpanStyle.fontWeight='bold'; const link=this.link,skillName=get.translation(link); skillNameSpan.innerHTML=skillName; - if(lib.config.show_skillnamepinyin&&skillName!='阵亡'){ + const showSkillNamePinyin=lib.config.show_skillnamepinyin; + if(showSkillNamePinyin&&skillName!='阵亡'){ const ruby=document.createElement('ruby'); ruby.appendChild(skillNameSpan); const leftParenthesisRP=document.createElement('rp'); leftParenthesisRP.textContent='('; ruby.appendChild(leftParenthesisRP); const rt=document.createElement('rt'); - rt.innerHTML=lib.translate[`${link}_rt`]||get.pinyin(skillName).join(' '); + rt.innerHTML=showSkillNamePinyin=='showCodeIdentifier'?link:lib.translate[`${link}_rt`]||get.pinyin(skillName).join(' '); ruby.appendChild(rt); const rightParenthesisRP=document.createElement('rp'); rightParenthesisRP.textContent=')'; @@ -53717,14 +53788,14 @@ derivationNameSpanStyle.fontWeight='bold'; const derivationName=get.translation(derivation); derivationNameSpan.innerHTML=derivationName; - if(lib.config.show_skillnamepinyin&&derivationName.length<=5&&derivation.indexOf('_faq')==-1){ + if(showSkillNamePinyin&&derivationName.length<=5&&derivation.indexOf('_faq')==-1){ const ruby=document.createElement('ruby'); ruby.appendChild(derivationNameSpan); const leftParenthesisRP=document.createElement('rp'); leftParenthesisRP.textContent='('; ruby.appendChild(leftParenthesisRP); const rt=document.createElement('rt'); - rt.innerHTML=lib.translate[`${derivation}_rt`]||get.pinyin(derivationName).join(' '); + rt.innerHTML=showSkillNamePinyin=='showCodeIdentifier'?derivation:lib.translate[`${derivation}_rt`]||get.pinyin(derivationName).join(' '); ruby.appendChild(rt); const rightParenthesisRP=document.createElement('rp'); rightParenthesisRP.textContent=')'; diff --git a/layout/default/layout.css b/layout/default/layout.css index a00ad7616..bbc324e8f 100644 --- a/layout/default/layout.css +++ b/layout/default/layout.css @@ -1616,12 +1616,12 @@ div:not(.handcards)>.card>.info>span, } .mark-container.marks>div>.markcount.menubutton { font-size: 12px; - width: 16px; - height: 16px; - line-height: 18px; - position: absolute; - left: 36px; - top: 34px; + width: 16px; + height: 16px; + line-height: 18px; + position: absolute; + left: 36px; + top: 34px; border-radius: 100%; } .mark-container.marks>.card.fullskin>.image{ @@ -1630,11 +1630,11 @@ div:not(.handcards)>.card>.info>span, } .mark-container.marks>.card.fullskin>.info{ transform: scale(0.6) !important; - transform-origin: top right; - left: auto !important; - right: 3px !important; - display: block; - top: 2px; + transform-origin: top right; + left: auto !important; + right: 3px !important; + display: block; + top: 2px; } .mark-container.marks>.card.fullskin>.name{ transform: scale(0.5) !important; @@ -1645,7 +1645,7 @@ div:not(.handcards)>.card>.info>span, } .mark-container.marks>.card.fullskin>.name.long{ transform: scale(0.48) !important; - top: 1px !important; + top: 1px !important; } .button.card>.background { @@ -2017,7 +2017,7 @@ div:not(.handcards)>.card>.info>span, .button.newstyle>.name.long{ top: 6px; transform: scale(0.93); - transform-origin: top left; + transform-origin: top left; } .button.newstyle>.hp, .button.newstyle>.hp.text{ @@ -2046,7 +2046,7 @@ div:not(.handcards)>.card>.info>span, text-align: right; width: auto; height: auto; - transform: none !important; + transform: none !important; text-shadow: black 0 0 2px, black 0 0 3px; } @@ -2268,7 +2268,7 @@ div:not(.handcards)>.card>.info>span, } .player>.turned>div{ top: calc(50% - 50px); - left: calc(50% - 25px); + left: calc(50% - 25px); white-space: nowrap; writing-mode: vertical-rl; -webkit-writing-mode: vertical-rl; @@ -2503,9 +2503,9 @@ div:not(.handcards)>.card>.info>span, } #arena.oldlayout .player>.framebg{ transform: rotate(90deg) translateY(-240px); - width: 120px; - height: 240px; - transform-origin: top left; + width: 120px; + height: 240px; + transform-origin: top left; } #window #arena.mobile:not(.chess) .player[data-position='0']>.framebg{ /*display: none;*/ @@ -2605,12 +2605,12 @@ div:not(.handcards)>.card>.info>span, left: -20%; top: -20%;*/ background-size: 120%; - background-position: -4px -4px; - background-repeat: no-repeat; + background-position: -4px -4px; + background-repeat: no-repeat; } #arena:not(.chess) .player[data-position='0']>.equips>div>.image{ - background-size: 115%; + background-size: 115%; } /*.equips>div:hover>.info{display: inline-block; animation:equip_hover 1s; @@ -4316,9 +4316,9 @@ div[data-decoration="bronze"]::after{ } .card.fullskin.gold>.name { color: white; - text-shadow: black 0 0 1px, rgba(0,0,0,0.5) 0 0 1px; + text-shadow: black 0 0 1px, rgba(0,0,0,0.5) 0 0 1px; background: rgba(234, 158, 0, 0.6); - border: 1px solid rgb(134, 87, 1); + border: 1px solid rgb(134, 87, 1); box-shadow: rgba(255, 149, 0, 0.4) 0 0 10px inset; } .card.fullskin.gold>.name2 { @@ -4428,9 +4428,9 @@ div[data-decoration="bronze"]::after{ background-color: red; } /* #arena>.skillbar.full { */ - /*transform: scale(1.1);*/ - /*box-shadow: rgba(0, 0, 0, 0.1) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px; - -webkit-animation:skillbarglow 3s infinite;*/ + /*transform: scale(1.1);*/ + /*box-shadow: rgba(0, 0, 0, 0.1) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px; + -webkit-animation:skillbarglow 3s infinite;*/ /* } */ #arena>.skillbar>.skillbartext { font-family: 'xinwei'; @@ -4755,9 +4755,9 @@ div[data-decoration="bronze"]::after{ } .dice{ position: absolute; - width: 200px; - height: 200px; - transform-style: preserve-3d; + width: 200px; + height: 200px; + transform-style: preserve-3d; left: calc(50% - 100px); top: calc(50% - 100px); transition: transform 2s ease; @@ -4800,92 +4800,92 @@ div[data-decoration="bronze"]::after{ } .dice>div{ position: absolute; - width: 200px; - height: 200px; - background: #fff; - box-shadow:inset 0 0 40px #ccc; - border-radius: 40px; + width: 200px; + height: 200px; + background: #fff; + box-shadow:inset 0 0 40px #ccc; + border-radius: 40px; } .dice .cover, .dice .inner { - background: #e0e0e0; - box-shadow: none; + background: #e0e0e0; + box-shadow: none; } .dice .cover { - border-radius: 0; - transform: translateZ(0px); + border-radius: 0; + transform: translateZ(0px); } .dice .cover.x { - transform: rotateY(90deg); + transform: rotateY(90deg); } .dice .cover.z { - transform: rotateX(90deg); + transform: rotateX(90deg); } .dice .front { - transform: translateZ(100px); + transform: translateZ(100px); } .dice .front.inner { - transform: translateZ(98px); + transform: translateZ(98px); } .dice .back { - transform: rotateX(-180deg) translateZ(100px); + transform: rotateX(-180deg) translateZ(100px); } .dice .back.inner { - transform: rotateX(-180deg) translateZ(98px); + transform: rotateX(-180deg) translateZ(98px); } .dice .right { - transform: rotateY(90deg) translateZ(100px); + transform: rotateY(90deg) translateZ(100px); } .dice .right.inner { - transform: rotateY(90deg) translateZ(98px); + transform: rotateY(90deg) translateZ(98px); } .dice .left { - transform: rotateY(-90deg) translateZ(100px); + transform: rotateY(-90deg) translateZ(100px); } .dice .left.inner { - transform: rotateY(-90deg) translateZ(98px); + transform: rotateY(-90deg) translateZ(98px); } .dice .top { - transform: rotateX(90deg) translateZ(100px); + transform: rotateX(90deg) translateZ(100px); } .dice .top.inner { - transform: rotateX(90deg) translateZ(98px); + transform: rotateX(90deg) translateZ(98px); } .dice .bottom { - transform: rotateX(-90deg) translateZ(100px); + transform: rotateX(-90deg) translateZ(100px); } .dice .bottom.inner { - transform: rotateX(-90deg) translateZ(98px); + transform: rotateX(-90deg) translateZ(98px); } .dice .dot { - position:absolute; - width:46px; - height:46px; - border-radius:23px; - background:#444; - box-shadow:inset 5px 0 10px #000; + position:absolute; + width:46px; + height:46px; + border-radius:23px; + background:#444; + box-shadow:inset 5px 0 10px #000; } .dice .dot.center { - margin:77px 0 0 77px; + margin:77px 0 0 77px; } .dice .dot.dtop { - margin-top:20px; + margin-top:20px; } .dice .dot.dleft { - margin-left:134px; + margin-left:134px; } .dice .dot.dright { - margin-left:20px; + margin-left:20px; } .dice .dot.dbottom { - margin-top:134px; + margin-top:134px; } .dice .dot.center.dleft { - margin:77px 0 0 20px; + margin:77px 0 0 20px; } .dice .dot.center.dright { - margin:77px 0 0 134px; + margin:77px 0 0 134px; } #window.dicepaused>#arena, @@ -5463,6 +5463,19 @@ div[data-decoration="bronze"]::after{ transform: perspective(1000px) rotateY(360deg); } } +@keyframes background-position-left-center-right-center-left-center { + 0% { + background-position: left center; + } + + 50% { + background-position: right center; + } + + 100% { + background-position: left center; + } +} /*--------其它--------*/ ::-webkit-scrollbar { display: none; diff --git a/layout/default/menu.css b/layout/default/menu.css index e38f38f63..7aeb6078e 100644 --- a/layout/default/menu.css +++ b/layout/default/menu.css @@ -314,23 +314,34 @@ } .menubg.charactercard .characterintro .character-intro-table { - align-items: flex-end; + align-items: center; display: flex; flex-wrap: wrap; - justify-content: space-between; + padding-left: 0.5em; + padding-right: 0.5em; white-space: nowrap; } @supports (row-gap: 0.5em) { .menubg.charactercard .characterintro .character-intro-table { + column-gap: 1em; row-gap: 0.5em; } } @supports not (row-gap: 0.5em) { .menubg.charactercard .characterintro .character-intro-table>:last-child { + margin-bottom: 0.5em; margin-top: 0.5em; } + + .menubg.charactercard .characterintro .character-intro-table>:not(:first-child) { + margin-left: 0.5em; + } + + .menubg.charactercard .characterintro .character-intro-table>:not(:last-child) { + margin-right: 0.5em; + } } .menubg.charactercard .characterintro .hp {