miao-plugin/models/Weapon.js

86 lines
1.7 KiB
JavaScript

import Base from './Base.js'
import { Data } from '../components/index.js'
import { weaponData, weaponAbbr, weaponAlias, weaponType, weaponSet } from '../resources/meta/weapon/index.js'
import lodash from 'lodash'
class Weapon extends Base {
constructor (name) {
super(name)
let meta = weaponData[name]
if (!meta) {
return false
}
let cache = this._getCache(`weapon:${name}`)
if (cache) {
return cache
}
this.name = meta.name
this.meta = meta
this.type = meta.type
this.star = meta.star
return this._cache()
}
get abbr () {
return weaponAbbr[this.name] || this.name
}
get title () {
return this.name
}
get img () {
return `meta/weapon/${this.type}/${this.name}/icon.webp`
}
get icon () {
return this.img
}
get detail () {
return this.getDetail()
}
get maxLv () {
return this.star <= 2 ? 70 : 90
}
get maxAffix () {
let datas = this.detail?.affixData?.datas || {}
return (datas['0'] && datas['0'][4]) ? 5 : 1
}
getDetail () {
if (this._detail) {
return this._detail
}
const path = 'resources/meta/weapon'
try {
this._detail = Data.readJSON(`${path}/${this.type}/${this.name}/data.json`)
} catch (e) {
console.log(e)
}
return this._detail
}
static isWeaponSet (name) {
return weaponSet.includes(name)
}
static get (name, type = '') {
name = lodash.trim(name)
if (weaponAlias[name]) {
return new Weapon(weaponAlias[name])
}
if (type) {
let name2 = name + (weaponType[type] || type)
if (weaponAlias[name2]) {
return new Weapon(weaponAlias[name2])
}
}
return false
}
}
export default Weapon