diff --git a/CHANGELOG.md b/CHANGELOG.md index 0397741c..0b65c81a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ * 测试分支,暂未正式公开 * 重写底层面板、角色数据获取与保存逻辑 -* 初步增加`#角色列表功能`,尚未完善 +* 初步增加`#角色`功能,查询并展示Mys角色信息,尚未完善 # 2.2.1 ~ 2.2.2 diff --git a/apps/character/AvatarCard.js b/apps/character/AvatarCard.js index a5b1d5ff..44d687af 100644 --- a/apps/character/AvatarCard.js +++ b/apps/character/AvatarCard.js @@ -18,7 +18,7 @@ export async function renderAvatar (e, avatar, renderType = 'card') { avatar = { id: char.id, name: char.name, detail: false } } else { let player = Player.create(e) - await player.refreshMys() + await player.refreshMysAvatar() await player.refreshTalent(char.id) avatar = player.getAvatar(char.id) if (!avatar) { diff --git a/apps/character/AvatarWife.js b/apps/character/AvatarWife.js index a3e13aae..704e8eec 100644 --- a/apps/character/AvatarWife.js +++ b/apps/character/AvatarWife.js @@ -164,7 +164,7 @@ export async function pokeWife (e, components) { } async function getAvatarList (player, type, mys) { - await player.refreshMys() + await player.refreshMysAvatar() let list = [] player.forEachAvatar((avatar) => { if (type !== false) { diff --git a/apps/profile/ProfileStat.js b/apps/profile/ProfileStat.js index 7f37abfb..44e29d65 100644 --- a/apps/profile/ProfileStat.js +++ b/apps/profile/ProfileStat.js @@ -1,6 +1,5 @@ -import lodash from 'lodash' -import { Cfg, Common, Data } from '../../components/index.js' -import { MysApi, ProfileRank, Player } from '../../models/index.js' +import { Cfg, Common } from '../../components/index.js' +import { MysApi, Player } from '../../models/index.js' export async function profileStat (e) { let isMatch = /^#(面板|喵喵|角色|武器|天赋|技能|圣遗物)练度统计?$/.test(e.original_msg || e.msg || '') @@ -24,6 +23,8 @@ export async function profileStat (e) { let player = Player.create(e) + await player.refreshMysInfo() + let avatarRet = await player.refreshAndGetAvatarData({ rank: true, retType: 'array', @@ -35,10 +36,11 @@ export async function profileStat (e) { return await Common.render(isAvatarList ? 'character/avatar-list' : 'character/profile-stat', { save_id: uid, uid, + info: player.info || {}, isStat: !isAvatarList, talentLvMap: '0,1,1,1,2,2,3,3,3,4,5'.split(','), avatars: avatarRet, isSelf: e.isSelf, talentNotice - }, { e, scale: isAvatarList ? 2.2 : 1.8 }) + }, { e, scale: 1.4 }) } diff --git a/apps/stat.js b/apps/stat.js index 42342033..ab35de28 100644 --- a/apps/stat.js +++ b/apps/stat.js @@ -196,7 +196,7 @@ async function abyssTeam (e) { return true } let player = Player.create(e) - await player.refreshMys() + await player.refreshMysAvatar() await player.refreshTalent() let abyssData = await HutaoApi.getAbyssTeam() @@ -465,7 +465,7 @@ async function uploadData (e) { } } if (ds.percent) { - pct(ds.percent, char.name) + pct(ds.percent, char.sName) pct(ds.percentTotal, '总记录') } else { msg.push({ @@ -476,6 +476,18 @@ async function uploadData (e) { } addMsg('最强一击', ret.data?.damage || abyssData?.stat?.dmg || {}) addMsg('最高承伤', ret.data?.takeDamage || abyssData?.stat.takeDmg || {}) + let abyssStat = abyssData?.stat || {} + lodash.forEach({ defeat: '最多击破', e: '元素战技', q: '元素爆发' }, (title, key) => { + if (abyssStat[key]) { + stat.push({ + title, + id: abyssStat[key]?.id || 0, + value: `${abyssStat[key]?.value}次` + }) + } else { + stat.push({}) + } + }) await player.refreshTalent(avatarIds) let avatarData = player.getAvatarData(avatarIds) return await Common.render('stat/abyss-summary', { @@ -485,7 +497,7 @@ async function uploadData (e) { save_id: uid, totalCount: overview?.collectedPlayerCount || 0, uid - }, { e, scale: 1.8 }) + }, { e, scale: 1.2 }) } else { e.reply('暂未获得本期深渊挑战数据...') return true diff --git a/models/Player.js b/models/Player.js index 62085707..f8a7e96d 100644 --- a/models/Player.js +++ b/models/Player.js @@ -57,7 +57,7 @@ export default class Player extends Base { * 保存json文件 */ save () { - let ret = Data.getData(this, 'uid,name,level,word,face,card,sign,_mys,_profile') + let ret = Data.getData(this, 'uid,name,level,word,face,card,sign,info,_info,_mys,_profile') ret.avatars = {} lodash.forEach(this._avatars, (ds) => { ret.avatars[ds.id] = ds.toJSON() @@ -75,14 +75,16 @@ export default class Player extends Base { */ setBasicData (ds) { this.name = ds.name || this.name || '' - this.level = ds.level || this.level || 1 - this.word = ds.word || this.word || 1 + this.level = ds.level || this.level || '' + this.word = ds.word || this.word || '' this.face = ds.face || this.face || '' this.card = ds.card || this.card || '' this.sign = ds.sign || this.sign || '' + this.info = ds.info || this.info || false this._avatars = this._avatars || {} this._profile = ds._profile || this._profile this._mys = ds._mys || this._mys + this._info = ds._info || this._info } // 设置角色列表 @@ -165,8 +167,12 @@ export default class Player extends Base { } // 更新米游社数据 - async refreshMys (force = false) { - return MysAvatar.refreshMys(this, force) + async refreshMysAvatar (force = false) { + return MysAvatar.refreshMysAvatar(this, force) + } + + async refreshMysInfo (force = false) { + return await MysAvatar.refreshMysInfo(this, force) } // 通过已有的Mys CharData更新 @@ -187,7 +193,7 @@ export default class Player extends Base { async refreshAndGetAvatarData (cfg) { // 更新角色信息 - await this.refreshMys(cfg.force) + await this.refreshMysAvatar(cfg.force) // 更新天赋信息 if (cfg.refreshTalent !== false) { diff --git a/models/player-lib/MysAvatar.js b/models/player-lib/MysAvatar.js index fb7f2854..f5c0564f 100644 --- a/models/player-lib/MysAvatar.js +++ b/models/player-lib/MysAvatar.js @@ -9,7 +9,7 @@ const MysAvatar = { * @param force * @returns {Promise} */ - async refreshMys (player, force = false) { + async refreshMysAvatar (player, force = false) { let mys = player?.e?._mys if (!mys) { return false @@ -25,6 +25,27 @@ const MysAvatar = { MysAvatar.setMysCharData(player, charData) }, + /** + * 更新米游社统计信息 + * @param player + * @param force + * @returns {Promise} + */ + async refreshMysInfo (player, force = false) { + let mys = player?.e?._mys + if (!mys) { + return false + } // 不必要更新 + if (player._info && (new Date() * 1 - player._info < 10 * 60 * 1000) && !force) { + return false + } + let infoData = await mys.getIndex() + if (!infoData) { + return false + } + MysAvatar.setMysInfo(player, infoData) + }, + /** * 根据已有Mys CharData更新player * @param player @@ -39,7 +60,7 @@ const MysAvatar = { lodash.forEach(charData.avatars, (ds) => { let avatar = Data.getData(ds, 'id,level,cons:actived_constellation_num,fetter') avatar.elem = ds.element.toLowerCase() - // 处理实装数据 + // 处理时装数据 let costume = (ds?.costumes || [])[0] if (costume && costume.id) { avatar.costume = costume.id @@ -63,6 +84,45 @@ const MysAvatar = { player.save() }, + setMysInfo (player, infoData) { + let role = infoData.role + // 设置角色信息 + let homeLevel = ((infoData?.homes || [])[0])?.level + player.setBasicData({ + level: role.level, + name: role.nickname + }) + // 设置角色数据 + lodash.forEach(infoData.avatars, (ds) => { + let avatar = Data.getData(ds, 'id,level,cons:actived_constellation_num,fetter') + avatar.elem = ds.element.toLowerCase() + player.setAvatar(avatar, 'mys') + }) + let stats = {} + lodash.forEach(infoData.stats, (num, key) => { + key = key.replace('_number', '') + if (key !== 'spiral_abyss') { + stats[lodash.camelCase(key)] = num + } + }) + + let exploration = {} + lodash.forEach(infoData.world_explorations, (ds) => { + let { name } = ds + if (name === '层岩巨渊') { + return true + } + exploration[name === '层岩巨渊·地下矿区' ? '层岩巨渊' : name] = ds.exploration_percentage + }) + player.info = { + homeLevel, + stats, + exploration + } + player._info = new Date() * 1 + player.save() + }, + /** * 获取当前角色需要更新天赋的角色ID * @param player diff --git a/resources/character/avatar-list.css b/resources/character/avatar-list.css index 4cb70760..e198381e 100644 --- a/resources/character/avatar-list.css +++ b/resources/character/avatar-list.css @@ -1,15 +1,44 @@ .container { - width: 525px; + width: 740px; background-size: cover; } .head-box { margin-top: 0; } -#profile-stat { +#avatar-list { width: calc(100% + 30px); margin: 0 -15px -5px; overflow: hidden; } +.exploration { + display: flex; + flex-wrap: wrap; + padding: 6px; +} +.exploration .item { + width: 95px; + height: 106.4px; + background: url('./imgs/exploration.webp') no-repeat; + background-size: auto 100%; + border-radius: 4px; + margin: 4px; + text-align: center; + color: #fff; +} +.exploration .item strong { + font-size: 18px; + display: block; + height: 22px; + line-height: 22px; + text-shadow: 0 0 1px #000, 1px 1px 3px rgba(0, 0, 0, 0.5); +} +.exploration .item span { + margin-top: 60px; + font-size: 12px; + height: 18px; + line-height: 18px; + display: block; +} .cont-title { padding: 8px 15px; } diff --git a/resources/character/avatar-list.html b/resources/character/avatar-list.html index 05697425..f76b846c 100644 --- a/resources/character/avatar-list.html +++ b/resources/character/avatar-list.html @@ -8,10 +8,21 @@ {{block 'main'}}
-
#角色列表
-
UID:{{uid}} 共{{avatars.length }}名角色
+
#角色
-
+
+ {{if info && info.exploration}} + {{set citys = ['蒙德','龙脊雪山','璃月','层岩巨渊','稻妻','渊下宫','须弥'] }} +
+ {{each citys city idx}} +
+ {{city}} + {{ (info.exploration[city]||0)/10 || '0'}}% + +
+ {{/each}} +
+ {{/if}}
角色列表
diff --git a/resources/character/avatar-list.less b/resources/character/avatar-list.less index a7660a2e..6d56efe1 100644 --- a/resources/character/avatar-list.less +++ b/resources/character/avatar-list.less @@ -1,6 +1,6 @@ .container { - width: 525px; + width: 740px; background-size: cover; } @@ -8,12 +8,47 @@ margin-top: 0; } -#profile-stat { +#avatar-list { width: calc(100% + 30px); margin: 0 -15px -5px; overflow: hidden; } +.exploration { + display: flex; + flex-wrap: wrap; + padding: 6px; + + .item { + width: 95px; + height: 95*1.12px; + background: url('./imgs/exploration.webp') no-repeat; + background-size: auto 100%; + border-radius: 4px; + margin: 4px; + text-align: center; + color: #fff; + + strong { + font-size: 18px; + display: block; + height: 22px; + line-height: 22px; + text-shadow: 0 0 1px #000, 1px 1px 3px rgba(0, 0, 0, .5); + } + + span { + margin-top: 60px; + font-size: 12px; + height: 18px; + line-height: 18px; + display: block; + } + } + + +} + .cont-title { padding: 8px 15px; } diff --git a/resources/character/imgs/exploration.webp b/resources/character/imgs/exploration.webp new file mode 100644 index 00000000..636bb17c Binary files /dev/null and b/resources/character/imgs/exploration.webp differ diff --git a/resources/common/tpl.css b/resources/common/tpl.css index cc57feb0..76d07c16 100644 --- a/resources/common/tpl.css +++ b/resources/common/tpl.css @@ -140,21 +140,21 @@ .avatar-card { margin: 3px; box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.8); - font-size: 13px; - border-radius: 7px; + font-size: 19.5px; + border-radius: 10.5px; } .avatar-card .card { - border-radius: 7px; - box-shadow: 0 2px 6px 0 rgba(132, 93, 90, 0.3); + border-radius: 10.5px; + box-shadow: 0 2px 9px 0 rgba(132, 93, 90, 0.3); position: relative; overflow: hidden; background: #e7e5d9; - width: 70px; + width: 105px; } .avatar-card .avatar-face { - width: 70px; - height: 70px; - border-radius: 7px 7px 15px 0; + width: 105px; + height: 105px; + border-radius: 10.5px 10.5px 22.5px 0; background-size: 100% 100%; background-repeat: no-repeat; position: relative; @@ -180,18 +180,18 @@ top: 0; } .avatar-card .avatar-talent { - height: 21px; + height: 30px; padding: 3px 5px 2px; - font-size: 12px; + font-size: 18px; width: 100%; color: #222; text-align: center; display: flex; } .avatar-card .avatar-talent .talent-item { - width: 20px; - height: 16px; - line-height: 17px; + width: 30px; + height: 24px; + line-height: 25.5px; margin: 0 2px; text-align: center; display: block; @@ -211,7 +211,7 @@ box-shadow: 0 0 2px 0 #000; } .avatar-card .avatar-talent.no-talent { - font-size: 12px; + font-size: 18px; color: rgba(100, 100, 100, 0.5); text-align: center; padding: 3px 0 2px; @@ -230,10 +230,10 @@ color: #333; } .avatar-card .avatar-name strong { - font-size: 14px; + font-size: 30px; display: block; - height: 23px; - line-height: 20px; + height: 34.5px; + line-height: 30px; } .avatar-card .avatar-name .cons { position: initial; @@ -245,13 +245,13 @@ display: none; } .avatar-card.card-wide .card { - width: 146px; + width: 219px; display: flex; } .avatar-card.card-wide .avatar-face { - height: 126px; + height: 189px; width: 76px; - border-radius: 7px 0 0 7px; + border-radius: 10.5px 0 0 10.5px; } .avatar-card.card-wide .img { background-size: 100% auto; @@ -260,7 +260,7 @@ margin-top: -9px; } .avatar-card.card-wide .avatar-info { - width: 70px; + width: 105px; } .avatar-card.card-wide .line { display: block; @@ -271,55 +271,55 @@ transform: scale(0.8); } .avatar-card.wide2 .card { - width: 298px; + width: 447px; } .avatar-card.wide2 .avatar-face { - width: 146px; + width: 219px; } .avatar-card.wide2 .avatar-face .img { - margin-top: -50px; - height: 176px; + margin-top: -75px; + height: 264px; } .avatar-card.wide2 .avatar-info { - width: 146px; - padding-left: 5px; + width: 219px; + padding-left: 7.5px; } -.avatar-detail { +.avatar-card .avatar-detail { display: flex; padding: 0 1px 2px; } -.avatar-detail .item { - width: 31px; - height: 31px; +.avatar-card .avatar-detail .item { + width: 46.5px; + height: 46.5px; border-radius: 4px; margin: 1px; } -.avatar-weapon .icon { +.avatar-card .avatar-weapon .icon { border-radius: 4px; } -.avatar-weapon .cons { +.avatar-card .avatar-weapon .cons { top: initial; bottom: 0; padding: 1px 3px; border-radius: 3px 0 0 0; } -.avatar-artis { +.avatar-card .avatar-artis { position: relative; } -.avatar-artis .artis { +.avatar-card .avatar-artis .artis { background: rgba(0, 0, 0, 0.5); } -.avatar-artis.artis2 .img { +.avatar-card .avatar-artis.artis2 .img { position: absolute; transform: scale(0.7); width: 92%; height: 92%; margin: 4%; } -.avatar-artis.artis2 .img:first-child { +.avatar-card .avatar-artis.artis2 .img:first-child { transform-origin: left top; } -.avatar-artis.artis2 .img:last-child { +.avatar-card .avatar-artis.artis2 .img:last-child { transform-origin: right bottom; } .item-list { diff --git a/resources/common/tpl/avatar-card.less b/resources/common/tpl/avatar-card.less index 0603a0e6..ef85c33a 100644 --- a/resources/common/tpl/avatar-card.less +++ b/resources/common/tpl/avatar-card.less @@ -1,23 +1,27 @@ + .avatar-card { + @px: 1.5px; + + margin: 3px; box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.8); - font-size: 13px; - border-radius: 7px; + font-size: @px*13; + border-radius: @px*7; .card { - border-radius: 7px; - box-shadow: 0 2px 6px 0 rgb(132 93 90 / 30%); + border-radius: @px*7; + box-shadow: 0 2px @px*6 0 rgb(132 93 90 / 30%); position: relative; overflow: hidden; background: #e7e5d9; - width: 70px; + width: @px*70; } .avatar-face { - width: 70px; - height: 70px; - border-radius: 7px 7px 15px 0; + width: @px*70; + height: @px*70; + border-radius: @px*7 @px*7 @px*15 0; background-size: 100% 100%; background-repeat: no-repeat; position: relative; @@ -27,7 +31,6 @@ background-position: center bottom; } - .avatar-level { position: absolute; bottom: 0; @@ -38,10 +41,8 @@ color: #fff; } - } - .cons { border-radius: 0 0 0 5px; padding: 2px 5px; @@ -51,18 +52,18 @@ } .avatar-talent { - height: 21px; + height: @px*20; padding: 3px 5px 2px; - font-size: 12px; + font-size: @px*12; width: 100%; color: #222; text-align: center; display: flex; .talent-item { - width: 20px; - height: 16px; - line-height: 17px; + width: @px*20; + height: @px*16; + line-height: @px*17; margin: 0 2px; text-align: center; display: block; @@ -85,7 +86,7 @@ } &.no-talent { - font-size: 12px; + font-size: @px*12; color: rgba(100, 100, 100, .5); text-align: center; padding: 3px 0 2px; @@ -109,10 +110,10 @@ color: #333; strong { - font-size: 14px; + font-size: @px*20px; display: block; - height: 23px; - line-height: 20px; + height: @px*23; + line-height: @px*20; } .cons { @@ -129,14 +130,14 @@ } .card { - width: 146px; + width: @px*146; display: flex; } .avatar-face { - height: 126px; + height: @px * 126; width: 76px; - border-radius: 7px 0 0 7px; + border-radius: @px*7 0 0 @px*7; } .img { @@ -147,7 +148,7 @@ } .avatar-info { - width: 70px; + width: @px*70; } .line { @@ -162,77 +163,77 @@ &.wide2 { .card { - width: 298px; + width: @px*298; } .avatar-face { - width: 146px; + width: @px*146; .img { - margin-top: -50px; - height: 176px; + margin-top: @px*-50; + height: @px*176; } } .avatar-info { - width: 146px; - padding-left: 5px; + width: @px*146; + padding-left: @px*5; } } -} -.avatar-detail { - display: flex; - padding: 0 1px 2px; + .avatar-detail { + display: flex; + padding: 0 1px 2px; - .item { - width: 31px; - height: 31px; - border-radius: 4px; - margin: 1px; - } -} - -.avatar-weapon { - .icon { - border-radius: 4px; - } - - .cons { - top: initial; - bottom: 0; - padding: 1px 3px; - border-radius: 3px 0 0 0; - } -} - -.avatar-artis { - position: relative; - - .artis { - background: rgba(0, 0, 0, 0.5) - } - - &.artis2 { - .img { - position: absolute; - transform: scale(.7); - width: 92%; - height: 92%; - margin: 4%; - - &:first-child { - transform-origin: left top; - } - - &:last-child { - transform-origin: right bottom; - } + .item { + width: @px*31; + height: @px*31; + border-radius: 4px; + margin: 1px; } } + .avatar-weapon { + .icon { + border-radius: 4px; + } + .cons { + top: initial; + bottom: 0; + padding: 1px 3px; + border-radius: 3px 0 0 0; + } + } + + .avatar-artis { + position: relative; + + .artis { + background: rgba(0, 0, 0, 0.5) + } + + &.artis2 { + .img { + position: absolute; + transform: scale(.7); + width: 92%; + height: 92%; + margin: 4%; + + &:first-child { + transform-origin: left top; + } + + &:last-child { + transform-origin: right bottom; + } + } + } + + + } } \ No newline at end of file diff --git a/resources/stat/abyss-summary.css b/resources/stat/abyss-summary.css index eec567c8..7ca2663a 100644 --- a/resources/stat/abyss-summary.css +++ b/resources/stat/abyss-summary.css @@ -6,28 +6,41 @@ } body, .container { - width: 690px; + width: 970px; } .container { padding: 5px 0 10px 5px; } .head-box { - margin-top: 0; - padding-top: 0; + display: flex; + width: 100%; +} +.head-box .title { + font-size: 45px; + padding-bottom: 10px; + width: 70%; } .head-box .title span { - font-size: 20px; - margin-left: 5px; + font-size: 30px; + margin-left: 10px; + color: #d3bc8e; +} +.head-box .uid { + text-align: right; + width: 30%; + padding-top: 25px; + padding-right: 10px; + font-size: 25px; } .abyss-stat-cont { display: flex; - padding: 25px 5px 5px; + padding: 5px; } .abyss-stat { display: flex; } .abyss-stat .cont { - margin: 5px; + margin: 5px 10px 5px 5px; } .abyss-stat strong { text-shadow: 0 0 3px #000; @@ -58,14 +71,14 @@ body, padding: 5px 10px; width: 100%; text-shadow: 0 0 1px #000; - font-size: 12px; + font-size: 14px; } .abyss-stat .stat-msg .msg { display: block; - line-height: 22px; + line-height: 25px; } .abyss-stat .stat-msg .msg strong { - font-size: 16px; + font-size: 20px; padding: 0 2px; font-weight: normal; color: #d3bc8e; @@ -156,34 +169,37 @@ body, .abyss-level .info { margin-bottom: 5px; display: flex; + padding-left: 8px; } .abyss-level .title { + font-size: 16px; white-space: nowrap; font-weight: bold; } .abyss-level .star { - height: 15px; + height: 18px; display: inline-block; background: url(./imgs/star.png); - background-size: 15px 15px; + background-size: 18px 18px; margin-left: 5px; } .abyss-level .star.star1 { - width: 15px; - margin-right: 30px; + width: 18px; + margin-right: 36px; } .abyss-level .star.star2 { - width: 30px; - margin-right: 15px; + width: 36px; + margin-right: 18px; } .abyss-level .star.star3 { - width: 45px; + width: 54px; margin-right: 0; } .abyss-level .time { text-align: right; width: 60%; color: #aaa; + font-size: 14px; } .abyss-level .avatars { display: flex; @@ -194,7 +210,7 @@ body, position: relative; } .abyss-level .avatars .avatar-list.up { - padding-right: 10px; + padding-right: 15px; } .abyss-level .avatars .avatar-list.up:after { content: ""; @@ -203,23 +219,26 @@ body, width: 1px; height: 16px; background: rgba(255, 255, 255, 0.3); - right: 5px; + right: 8px; top: 50%; margin-top: -8px; } .abyss-level .avatars .avatar-icon { - width: 23px; - height: 23px; + width: 33px; + height: 33px; border-radius: 50%; - margin-right: 1px; + margin-right: 2px; } .abyss-level .avatars .avatar-icon .img { background-size: auto 100%; background-position: center; - width: 20px; - height: 20px; + width: 29px; + height: 29px; margin: 2px; } +.abyss-notice .cont-body { + font-size: 16px; +} .avatar-banner.avatar-枫原万叶, .img.wide.avatar-枫原万叶 { background-position: 0 -13%; diff --git a/resources/stat/abyss-summary.html b/resources/stat/abyss-summary.html index a8a6f976..8e21ddc9 100644 --- a/resources/stat/abyss-summary.html +++ b/resources/stat/abyss-summary.html @@ -8,31 +8,14 @@ {{block 'main'}} {{ set upDown = {up:'上半', down:'下半'} }} +
+
#上传深渊{{abyss.schedule}} · {{abyss.total}}次战斗
+
UID:{{uid}}
+
-
-
-
#上传深渊{{abyss.schedule}}
-
UID:{{uid}} · {{abyss.total}}次战斗
-
-
- {{set st = abyss?.stat || {} }} - {{set dataMap = {defeat:"最多击破",e:"元素战技",q:"元素爆发"} }} - {{each dataMap title key}} -
-
- {{title}} - {{st[key]?.value || 0}} -
- {{if st[key]}} - <% include(_tpl_path+'/avatar-card.html', [avatars[st[key]?.id],{_res_path}]) %> - {{/if}} -
- {{/each}} -
-
{{each stat ds}} {{set avatar = avatars[ds.id]}} @@ -44,6 +27,8 @@
+ + {{if ds.msg}}
{{each ds.msg msg}} {{if msg.txt}} @@ -54,6 +39,7 @@ {{/each}}
{{/if}} + {{/if}}
{{/each}}
diff --git a/resources/stat/abyss-summary.less b/resources/stat/abyss-summary.less index 1ab8725f..67f31342 100644 --- a/resources/stat/abyss-summary.less +++ b/resources/stat/abyss-summary.less @@ -1,7 +1,8 @@ @import "../common/base.less"; +@scale: 1.4; body, .container { - width: 690px; + width: 970px; } .container { @@ -9,27 +10,40 @@ body, .container { } .head-box { - margin-top: 0; - padding-top: 0; + display: flex; + width: 100%; .title { + font-size: 45px; + padding-bottom: 10px; + width: 70%; + span { - font-size: 20px; - margin-left: 5px; + font-size: 30px; + margin-left: 10px; + color: #d3bc8e; } } + + .uid { + text-align: right; + width: 30%; + padding-top: 25px; + padding-right: 10px; + font-size: 25px; + } } .abyss-stat-cont { display: flex; - padding: 25px 5px 5px; + padding: 5px; } .abyss-stat { display: flex; .cont { - margin: 5px; + margin: 5px 10px 5px 5px; } strong { @@ -65,14 +79,14 @@ body, .container { padding: 5px 10px; width: 100%; text-shadow: 0 0 1px #000; - font-size: 12px; + font-size: 14px; .msg { display: block; - line-height: 22px; + line-height: 25px; strong { - font-size: 16px; + font-size: 20px; padding: 0 2px; font-weight: normal; color: #d3bc8e; @@ -188,32 +202,36 @@ body, .container { .info { margin-bottom: 5px; display: flex; + padding-left: 8px; } .title { + font-size: 16px; white-space: nowrap; font-weight: bold; } .star { - height: 15px; + @size: 18px; + + height: @size; display: inline-block; background: url(./imgs/star.png); - background-size: 15px 15px; + background-size: @size @size; margin-left: 5px; &.star1 { - width: 15px; - margin-right: 30px; + width: @size; + margin-right: @size * 2; } &.star2 { - width: 30px; - margin-right: 15px; + width: @size * 2; + margin-right: @size; } &.star3 { - width: 45px; + width: @size * 3; margin-right: 0; } } @@ -222,6 +240,7 @@ body, .container { text-align: right; width: 60%; color: #aaa; + font-size: 14px; } .avatars { @@ -233,7 +252,7 @@ body, .container { position: relative; &.up { - padding-right: 10px; + padding-right: 15px; } &.up:after { @@ -243,29 +262,35 @@ body, .container { width: 1px; height: 16px; background: rgba(255, 255, 255, .3); - right: 5px; + right: 8px; top: 50%; margin-top: -8px; } } .avatar-icon { - width: 23px; - height: 23px; + width: 33px; + height: 33px; border-radius: 50%; - margin-right: 1px; + margin-right: 2px; .img { background-size: auto 100%; background-position: center; - width: 20px; - height: 20px; + width: 29px; + height: 29px; margin: 2px; } } } } +.abyss-notice { + .cont-body { + font-size: 16px; + } +} + .avatar-banner, .img.wide { &.avatar-枫原万叶 { background-position: 0 -13%;