miao-plugin/apps/character/ProfileArtis.js

98 lines
2.2 KiB
JavaScript
Raw Normal View History

/*
* 角色圣遗物评分详情
*
* */
import lodash from 'lodash'
2022-08-18 10:13:42 +00:00
import { Profile, Common } from '../../components/index.js'
2022-10-06 22:20:46 +00:00
import { getTargetUid, profileHelp, autoGetProfile } from './ProfileCommon.js'
import { Artifact, Character } from '../../models/index.js'
/*
* 角色圣遗物面板
* */
export async function profileArtis (e) {
let { uid, avatar } = e
let { profile, char, err } = await autoGetProfile(e, uid, avatar, async () => {
await profileArtis(e)
})
if (err) {
return false
}
2022-08-18 10:13:42 +00:00
if (!profile.hasArtis()) {
e.reply('未能获得圣遗物详情,请重新获取面板信息后查看')
return true
}
2022-08-18 21:04:31 +00:00
let charCfg = profile.artis.getCharCfg()
2022-08-18 10:13:42 +00:00
let { artis, mark: totalMark, markClass: totalMarkClass, usefulMark } = profile.getArtisMark()
let { attrMap } = Artifact.getMeta()
// 渲染图像
return await Common.render('character/artis-mark', {
uid,
elem: char.elem,
splash: char.getImgs(profile.costume).splash,
data: profile,
costume: profile.costume ? '2' : '',
artis,
totalMark,
totalMarkClass,
usefulMark,
attrMap,
charCfg
}, { e, scale: 1.3 })
}
/*
* 圣遗物列表
* */
export async function profileArtisList (e) {
let uid = await getTargetUid(e)
if (!uid) {
return true
}
let artis = []
let profiles = Profile.getAll(uid) || {}
if (!profiles || profiles.length === 0) {
e.reply('暂无角色圣遗物详情')
return true
}
2022-08-18 10:13:42 +00:00
lodash.forEach(profiles || [], (profile) => {
let name = profile.name
let char = Character.get(name)
2022-08-18 10:13:42 +00:00
if (!profile.hasData || !profile.hasArtis()) {
return true
}
2022-08-18 10:13:42 +00:00
let profileArtis = profile.getArtisMark()
lodash.forEach(profileArtis.artis, (arti, idx) => {
arti.usefulMark = profileArtis.usefulMark
arti.avatar = name
arti.side = char.side
2022-08-18 10:13:42 +00:00
artis.push(arti)
})
})
if (artis.length === 0) {
e.reply('请先获取角色面板数据后再查看圣遗物列表...')
await profileHelp(e)
return true
}
artis = lodash.sortBy(artis, '_mark')
artis = artis.reverse()
artis = artis.slice(0, 28)
// 渲染图像
return await Common.render('character/artis-list', {
save_id: uid,
uid,
artis
}, { e, scale: 1.4 })
}