dev
This commit is contained in:
@@ -31,6 +31,7 @@ export interface ICharacterInfo {
|
||||
stones: IEquipment[]
|
||||
enchants: IEnchantingInfo[]
|
||||
emblems: IEnchantingInfo[]
|
||||
oaths: IEquipment[]
|
||||
weapons: string[]
|
||||
subweapons: string[]
|
||||
skills: ISkill[]
|
||||
@@ -73,6 +74,11 @@ export interface IEquipment {
|
||||
bufferDetail: string
|
||||
}
|
||||
|
||||
export interface IOathInfo extends IEquipment {
|
||||
position: string[]
|
||||
wearUrl: string[]
|
||||
}
|
||||
|
||||
export interface ISkill {
|
||||
icon: string
|
||||
name: string
|
||||
@@ -91,7 +97,7 @@ export interface ISkill {
|
||||
desc: string
|
||||
}[]
|
||||
uuid: string
|
||||
upType:'damage' |'heal'
|
||||
upType: 'damage' | 'heal'
|
||||
}
|
||||
|
||||
export interface ISuit {
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
{{ partName(part) }}
|
||||
</template>
|
||||
</div>
|
||||
<div v-if="detail?.[part]?.fusion" class="pos-absolute" :style="fusionStyle(part)">
|
||||
<EquipmentIcon :equipment="stones(detail[part].fusion)" />
|
||||
</div>
|
||||
<!-- <div v-if="detail?.[part]?.fusion" class="pos-absolute" :style="fusionStyle(part)">
|
||||
<EquipmentIcon :equipment="oaths(detail[part].fusion)" />
|
||||
</div> -->
|
||||
</template>
|
||||
<div
|
||||
v-if="props.withSubWeapon"
|
||||
@@ -69,7 +69,7 @@ const props = defineProps({
|
||||
avatar: {
|
||||
type: String,
|
||||
default: '',
|
||||
}
|
||||
},
|
||||
})
|
||||
const partModelValue = useVModel(props, 'part')
|
||||
const infoStore = useInfoStore()
|
||||
@@ -90,9 +90,9 @@ const equ = (id: string) => {
|
||||
return infoStore.equips.find((e) => e.id == id)
|
||||
}
|
||||
|
||||
const stones = (id: string) => {
|
||||
return infoStore.stones.find((e) => e.id == id)
|
||||
}
|
||||
// const oaths = (id: string) => {
|
||||
// return infoStore.oaths.find((e) => e.id == id)
|
||||
// }
|
||||
|
||||
const infoStyle = (part: string) => {
|
||||
let x = 10
|
||||
@@ -117,30 +117,30 @@ const infoStyle = (part: string) => {
|
||||
return style
|
||||
}
|
||||
|
||||
const fusionStyle = (part: string) => {
|
||||
let x = 0
|
||||
let y = 15
|
||||
let index = infoStore.parts.findIndex((p) => p == part)
|
||||
// const fusionStyle = (part: string) => {
|
||||
// let x = 0
|
||||
// let y = 15
|
||||
// let index = infoStore.parts.findIndex((p) => p == part)
|
||||
|
||||
if (index >= 5 && index <= 12) {
|
||||
x += 179
|
||||
index -= 5
|
||||
}
|
||||
// if (index >= 5 && index <= 12) {
|
||||
// x += 179
|
||||
// index -= 5
|
||||
// }
|
||||
|
||||
if (index == 13) {
|
||||
index = 5
|
||||
}
|
||||
// if (index == 13) {
|
||||
// index = 5
|
||||
// }
|
||||
|
||||
x += (index % 2) * 39
|
||||
y += Math.floor(index / 2) * 34
|
||||
// x += (index % 2) * 39
|
||||
// y += Math.floor(index / 2) * 34
|
||||
|
||||
return {
|
||||
left: `${x}px`,
|
||||
top: `${y}px`,
|
||||
zIndex: 7,
|
||||
transform: 'scale(0.6)',
|
||||
}
|
||||
}
|
||||
// return {
|
||||
// left: `${x}px`,
|
||||
// top: `${y}px`,
|
||||
// zIndex: 7,
|
||||
// transform: 'scale(0.6)',
|
||||
// }
|
||||
// }
|
||||
const choosePart = (part: string) => {
|
||||
partModelValue.value = part
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<Suit v-show="equTab === 0"></Suit>
|
||||
<Universal v-show="equTab === 1"></Universal>
|
||||
</calc-collapse>
|
||||
<calc-collapse title="融合石">
|
||||
<calc-collapse title="誓约">
|
||||
<calc-tabs v-model="stoneTab" class="!mb-2">
|
||||
<calc-tab :value="0">套装</calc-tab>
|
||||
<calc-tab :value="1">通宝</calc-tab>
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
<div class="w-auto text-18px flex items-center justify-center !font-normal">|</div>
|
||||
<div
|
||||
class="flex-1 text-15px flex items-center justify-center"
|
||||
@click="chooseCategory('stone')"
|
||||
:class="{ active: type === 'stone' }"
|
||||
@click="chooseCategory('oath')"
|
||||
:class="{ active: type === 'oath' }"
|
||||
>
|
||||
融合石
|
||||
誓约
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
@@ -126,11 +126,11 @@ import PartSelect from '@/components/dnf/Equipment/PartSelect/index.vue'
|
||||
import EquipmentRaritySelect from '@/components/dnf/Equipment/RaritySelect/index.vue'
|
||||
import { getImageURL } from '@/utils/images'
|
||||
import { rarityClass } from '@/utils'
|
||||
import type { IEquipment } from '@/api/info/type'
|
||||
import type { IEquipment, IOathInfo } from '@/api/info/type'
|
||||
import EquipmentIcon from '@/components/dnf/Equipment/Icon/index.vue'
|
||||
import Info from '@/components/dnf/Equipment/Info/index.vue'
|
||||
import SuitInfo from '@/components/dnf/Equipment/SuitInfo/index.vue'
|
||||
import { formatEqu, formatStone } from './formatData'
|
||||
import { formatEqu, formatOath } from './formatData'
|
||||
import options from './components/options.vue'
|
||||
|
||||
// const props = defineProps<{
|
||||
@@ -197,7 +197,7 @@ const curEquInfo = computed(() => {
|
||||
if (type.value == 'equ') {
|
||||
return infoStore.equips.find((a) => a.id == curEquId.value)
|
||||
} else {
|
||||
return infoStore.stones.find((a) => a.id == curEquId.value)
|
||||
return infoStore.oaths.find((a) => a.id == curEquId.value)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -215,7 +215,7 @@ const curSuitInfo = computed(() => {
|
||||
|
||||
const chooseCategory = (cat: string) => {
|
||||
type.value = cat
|
||||
if (type.value == 'stone' && curSuit.value == -1) {
|
||||
if (type.value == 'oath' && curSuit.value == -1) {
|
||||
curSuit.value = 16203
|
||||
}
|
||||
}
|
||||
@@ -240,14 +240,14 @@ const suitList = computed(() => {
|
||||
|
||||
const equs = computed(() => {
|
||||
// 筛选出装备
|
||||
const total = (type.value == 'equ' ? infoStore.equips : infoStore.stones).filter(
|
||||
const total = (type.value == 'equ' ? infoStore.equips : infoStore.oaths).filter(
|
||||
(a) =>
|
||||
(!curRarity.value || a.rarity === curRarity.value) &&
|
||||
(choose_part.value.length === 0 ||
|
||||
choose_part.value.includes(a.itemDetailType || a.itemType)) &&
|
||||
(a.suit.length == 0 ||
|
||||
(curSuit.value == -1 && a.suit.length > 1 && type.value == 'equ') ||
|
||||
(a.suit.length > 1 && type.value == 'stone') ||
|
||||
(a.suit.length > 1 && type.value == 'oath') ||
|
||||
(a.suit.includes(curSuit.value.toString()) && a.suit.length === 1)),
|
||||
)
|
||||
|
||||
@@ -258,7 +258,10 @@ const equs = computed(() => {
|
||||
suitList.value.find((a) => a.value == curSuit.value)?.name,
|
||||
)
|
||||
} else {
|
||||
return formatStone(total, suitList.value.find((a) => a.value == curSuit.value)?.name)
|
||||
return formatOath(
|
||||
total as unknown as IOathInfo[],
|
||||
suitList.value.find((a) => a.value == curSuit.value),
|
||||
)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -272,7 +275,7 @@ const isActive = computed(() => {
|
||||
return configStore.config.equips[item.itemDetailType].id == item.id
|
||||
}
|
||||
} else {
|
||||
return configStore.config.equips[item.itemDetailType].fusion == item.id
|
||||
// return configStore.config.equips[item.itemDetailType].fusion == item.id
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { IEquipment } from '@/api/info/type'
|
||||
import type { IEquipment, IOathInfo } from '@/api/info/type'
|
||||
|
||||
export const rowCount = 10
|
||||
|
||||
@@ -7,23 +7,25 @@ export const formatEqu = (total: IEquipment[], subweapons?: string[], curSuit?:
|
||||
const item_weapon = total.filter((a) => a.itemType == '武器') ?? []
|
||||
const weapons: (IEquipment | undefined)[] = []
|
||||
if (item_weapon.length > 0) {
|
||||
Array.from(new Set(item_weapon.map((item) => item.rarity))).filter(a=>!['稀有','神器'].includes(a)).forEach((rarity) => {
|
||||
const weapon = item_weapon
|
||||
.filter((item) => item.rarity === rarity)
|
||||
.sort((a, b) => {
|
||||
if (a.categorize == b.categorize) {
|
||||
return a.itemDetailType.localeCompare(b.itemDetailType)
|
||||
}
|
||||
return b.categorize.localeCompare(a.categorize)
|
||||
})
|
||||
weapons.push(
|
||||
...weapon.filter((a) => !['传世武器升级', '狄瑞吉传世武器'].includes(a.categorize)),
|
||||
)
|
||||
const remind = weapons.length % rowCount
|
||||
if (remind > 0) {
|
||||
weapons.push(...Array(rowCount - remind).fill(undefined))
|
||||
}
|
||||
})
|
||||
Array.from(new Set(item_weapon.map((item) => item.rarity)))
|
||||
.filter((a) => !['稀有', '神器'].includes(a))
|
||||
.forEach((rarity) => {
|
||||
const weapon = item_weapon
|
||||
.filter((item) => item.rarity === rarity)
|
||||
.sort((a, b) => {
|
||||
if (a.categorize == b.categorize) {
|
||||
return a.itemDetailType.localeCompare(b.itemDetailType)
|
||||
}
|
||||
return b.categorize.localeCompare(a.categorize)
|
||||
})
|
||||
weapons.push(
|
||||
...weapon.filter((a) => !['传世武器升级', '狄瑞吉传世武器'].includes(a.categorize)),
|
||||
)
|
||||
const remind = weapons.length % rowCount
|
||||
if (remind > 0) {
|
||||
weapons.push(...Array(rowCount - remind).fill(undefined))
|
||||
}
|
||||
})
|
||||
if (item_weapon.some((a) => a.categorize === '传世武器升级')) {
|
||||
const length = item_weapon.filter((a) => a.categorize === '传世武器升级').length
|
||||
weapons.push(...Array(length).fill(undefined))
|
||||
@@ -88,9 +90,13 @@ export const formatEqu = (total: IEquipment[], subweapons?: string[], curSuit?:
|
||||
(equip) => equip.categorize.includes('套装') || equip.categorize.includes('通宝'),
|
||||
)
|
||||
const suits: (IEquipment | undefined)[] = []
|
||||
const raritiyList = Array.from(new Set(item_suits.map((item) => item.rarity))).filter(a=>!['稀有','神器'].includes(a))
|
||||
const raritiyList = Array.from(new Set(item_suits.map((item) => item.rarity))).filter(
|
||||
(a) => !['稀有', '神器'].includes(a),
|
||||
)
|
||||
raritiyList.forEach((rarity) => {
|
||||
const armor = item_suits.filter((item) => item.rarity === rarity && item.itemType === '防具' && !item.name.includes("侵蚀"))
|
||||
const armor = item_suits.filter(
|
||||
(item) => item.rarity === rarity && item.itemType === '防具' && !item.name.includes('侵蚀'),
|
||||
)
|
||||
if (armor.length > 0) {
|
||||
suits.push(...armor, undefined)
|
||||
}
|
||||
@@ -119,7 +125,9 @@ export const formatEqu = (total: IEquipment[], subweapons?: string[], curSuit?:
|
||||
suits.push(...Array(rowCount - (suits.length % rowCount)).fill(undefined))
|
||||
}
|
||||
|
||||
const armorUpgrade = item_suits.filter((item) => item.rarity === rarity && item.itemType === '防具' && item.name.includes("侵蚀"))
|
||||
const armorUpgrade = item_suits.filter(
|
||||
(item) => item.rarity === rarity && item.itemType === '防具' && item.name.includes('侵蚀'),
|
||||
)
|
||||
if (armorUpgrade.length > 0) {
|
||||
suits.push(...armorUpgrade)
|
||||
}
|
||||
@@ -283,3 +291,32 @@ export const formatStone = (total: IEquipment[], curSuit?: string) => {
|
||||
// },
|
||||
]
|
||||
}
|
||||
|
||||
export const formatOath = (
|
||||
total: IOathInfo[],
|
||||
curSuit?: { name: string; value: number; imageUrl: string },
|
||||
) => {
|
||||
// oath
|
||||
const oath = total.filter((equip) => equip.itemDetailType == '誓约')
|
||||
oath.push(...Array(rowCount - (oath.length % rowCount)).fill(undefined))
|
||||
// primer
|
||||
const primer = []
|
||||
const primerItem = total.filter((equip) => equip.itemDetailType == '星蕴石')
|
||||
for (let i = 0; i < 11; i++) {
|
||||
const temp = primerItem.filter((a) => a.position.includes(i.toString()))
|
||||
primer.push(
|
||||
...temp,
|
||||
...Array(temp.length == 0 ? rowCount : rowCount - (temp.length % rowCount)).fill(undefined),
|
||||
)
|
||||
}
|
||||
return [
|
||||
{
|
||||
name: `${curSuit?.name} 誓约`,
|
||||
equs: oath,
|
||||
},
|
||||
{
|
||||
name: `${curSuit?.name} 星蕴石`,
|
||||
equs: primer,
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ export const useInfoStore = defineStore('infoStore', () => {
|
||||
|
||||
const emblems = computed(() => infos.value?.emblems ?? [])
|
||||
|
||||
const stones = computed(() => infos.value?.stones ?? [])
|
||||
// const stones = computed(() => infos.value?.stones ?? [])
|
||||
|
||||
const avatars = computed(() => infos.value?.avatar ?? {})
|
||||
|
||||
@@ -28,6 +28,8 @@ export const useInfoStore = defineStore('infoStore', () => {
|
||||
|
||||
const options = computed(() => infos.value?.options ?? [])
|
||||
|
||||
const oaths = computed(() => infos.value?.oaths ?? [])
|
||||
|
||||
const standardUUID = ref<string>()
|
||||
|
||||
const setStandard = (
|
||||
@@ -39,7 +41,9 @@ export const useInfoStore = defineStore('infoStore', () => {
|
||||
}[],
|
||||
) => {
|
||||
if (!result) {
|
||||
!!standardUUID.value && sessionStorage.removeItem(standardUUID.value)
|
||||
if (!!standardUUID.value) {
|
||||
sessionStorage.removeItem(standardUUID.value)
|
||||
}
|
||||
standardUUID.value = undefined
|
||||
} else {
|
||||
standardUUID.value = result.uuid
|
||||
@@ -106,13 +110,13 @@ export const useInfoStore = defineStore('infoStore', () => {
|
||||
enchants,
|
||||
emblems,
|
||||
parts,
|
||||
stones,
|
||||
oaths,
|
||||
avatarParts,
|
||||
avatars,
|
||||
jades,
|
||||
setStandard,
|
||||
standard,
|
||||
sundries,
|
||||
options
|
||||
options,
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user