添加觉醒绑定
This commit is contained in:
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 545 B |
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
@@ -14,10 +14,15 @@ export default defineComponent({
|
|||||||
type: Object as PropType<Record<string, { lv: number }>>,
|
type: Object as PropType<Record<string, { lv: number }>>,
|
||||||
default: () => ({}),
|
default: () => ({}),
|
||||||
},
|
},
|
||||||
|
bindAwake: {
|
||||||
|
type: Number,
|
||||||
|
default: ()=>50,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
setup(props) {
|
setup(props) {
|
||||||
const skills = computed(() => props.skills)
|
const skills = computed(() => props.skills)
|
||||||
const lvInfo = useVModel(props, 'lvInfo')
|
const lvInfo = useVModel(props, 'lvInfo')
|
||||||
|
const bindAwake = useVModel(props, 'bindAwake')
|
||||||
|
|
||||||
const getSkill = (lvStart: number, lvEnd: number, position: number) => {
|
const getSkill = (lvStart: number, lvEnd: number, position: number) => {
|
||||||
if (position >= 0)
|
if (position >= 0)
|
||||||
@@ -48,6 +53,13 @@ export default defineComponent({
|
|||||||
else activeSkill.value = skill.id
|
else activeSkill.value = skill.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const awakeSkill_1 = computed(() =>
|
||||||
|
skills.value.find((item) => item.learnLv == 50 && item.type == 'active'),
|
||||||
|
)
|
||||||
|
const awakeSkill_2 = computed(() =>
|
||||||
|
skills.value.find((item) => item.learnLv == 85 && item.type == 'active'),
|
||||||
|
)
|
||||||
|
|
||||||
const actionSkillLv = (skill: ISkill, operation: string) => {
|
const actionSkillLv = (skill: ISkill, operation: string) => {
|
||||||
if (operation == 'add') {
|
if (operation == 'add') {
|
||||||
lvInfo.value[skill.id.toString()] = {
|
lvInfo.value[skill.id.toString()] = {
|
||||||
@@ -71,6 +83,11 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const chooseBindAwake = (lv:number) => {
|
||||||
|
bindAwake.value = lv
|
||||||
|
console.log(bindAwake.value,lv)
|
||||||
|
}
|
||||||
|
|
||||||
const renderSkill = (skill: ISkill, index: number) => {
|
const renderSkill = (skill: ISkill, index: number) => {
|
||||||
const info = lvInfo.value?.[skill.id.toString()]
|
const info = lvInfo.value?.[skill.id.toString()]
|
||||||
let color = 'white'
|
let color = 'white'
|
||||||
@@ -81,7 +98,7 @@ export default defineComponent({
|
|||||||
<div class="relative w-35px h-55px">
|
<div class="relative w-35px h-55px">
|
||||||
{activeSkill.value == skill.id && renderSkillAction(skill)}
|
{activeSkill.value == skill.id && renderSkillAction(skill)}
|
||||||
<div
|
<div
|
||||||
class="w-34px absolute h-auto flex flex-col gap-2px py-2px items-center bg-#2c2d2c rounded-2px z-2 top-1px left-1px"
|
class={["w-36px absolute h-48px flex flex-col box-border items-center py-3px z-2",skill.learnLv == 100 ? '' : 'skill']}
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
chooseSkill(skill)
|
chooseSkill(skill)
|
||||||
@@ -94,16 +111,33 @@ export default defineComponent({
|
|||||||
key={index}
|
key={index}
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
class={['h-30px w-30px', skill.type === 'passive' ? 'passive' : '']}
|
class={['h-28px w-28px', skill.type === 'passive' ? 'passive' : '']}
|
||||||
src={getImageURL(skill.icon)}
|
src={getImageURL(skill.icon)}
|
||||||
></img>
|
></img>
|
||||||
<div
|
<div class="w-100% flex items-center justify-center" style={{ color }}>
|
||||||
class="w-30px mx-2px bg-black flex items-center justify-center rounded-2px"
|
|
||||||
style={{ color }}
|
|
||||||
>
|
|
||||||
{info?.lv ?? 0}
|
{info?.lv ?? 0}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{skill.learnLv == 100 && (
|
||||||
|
<>
|
||||||
|
<div class={`pos-absolute w-196px h-54px box-border translate-x--50% left-18px top--3px flex justify-between items-center py-2px px-3px awake_${bindAwake.value}`}>
|
||||||
|
<div class="w-36px flex flex-col box-border items-center py-2px z-2" onClick={()=>chooseBindAwake(50)}>
|
||||||
|
<img
|
||||||
|
class="h-28px w-28px mt-2px"
|
||||||
|
src={getImageURL(awakeSkill_1.value?.icon ?? '')}
|
||||||
|
></img>
|
||||||
|
<div class="w-100% mt-1px flex items-center justify-center text-#ffc701">1次</div>
|
||||||
|
</div>
|
||||||
|
<div class="w-36px flex flex-col box-border items-center py-2px z-2" onClick={()=>chooseBindAwake(85)}>
|
||||||
|
<img
|
||||||
|
class="h-28px w-28px mt-1px"
|
||||||
|
src={getImageURL(awakeSkill_2.value?.icon ?? '')}
|
||||||
|
></img>
|
||||||
|
<div class="w-100% mt-1px flex items-center justify-center text-#ffc701">2次</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
@@ -112,10 +146,8 @@ export default defineComponent({
|
|||||||
const renderSkillAction = (skill: ISkill) => (
|
const renderSkillAction = (skill: ISkill) => (
|
||||||
<>
|
<>
|
||||||
<>
|
<>
|
||||||
<div class="absolute">
|
<div class="absolute skill-active w-88px h-78px translate-x--50% left-16px top--1px">
|
||||||
<div class="w-36px h-55px bg-gradient-linear bg-gradient-[180deg,#f8e26c_0%,#f87c43_94.34%] z-1"></div>
|
<div class="flex justify-between px-5px relative top-55px">
|
||||||
<div class="bottom--5px relative z-5 transform -translate-x-1/4 border-1px border-solid border-black left--2">
|
|
||||||
<div class="flex gap-1 bg-gradient-linear bg-gradient-[180deg,#351d14_0%,#070507_100%] p-1 border-solid border-#9A6329 border-1px">
|
|
||||||
<img
|
<img
|
||||||
src={`${new URL('./img/min.svg', import.meta.url).href}`}
|
src={`${new URL('./img/min.svg', import.meta.url).href}`}
|
||||||
onClick={(e: Event) => {
|
onClick={(e: Event) => {
|
||||||
@@ -145,7 +177,6 @@ export default defineComponent({
|
|||||||
}}
|
}}
|
||||||
></img>
|
></img>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
</>
|
</>
|
||||||
@@ -167,20 +198,24 @@ export default defineComponent({
|
|||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{lvList.map((lv, index) => ((getSkill(lv, lvList[index + 1] ?? 150, -1) as ISkill[])?.length ?? 0) > 0 ?(
|
{lvList.map((lv, index) =>
|
||||||
<div class="skill-tree-line flex items-center gap-10px px-10px" key={index}>
|
((getSkill(lv, lvList[index + 1] ?? 150, -1) as ISkill[])?.length ?? 0) > 0 ? (
|
||||||
{lv == 1 || lv % 10 == 0 ? (
|
<div class="skill-tree-line flex items-center gap-10px px-10px" key={index}>
|
||||||
<div class="w-34px h-34px flex items-center justify-center text-white">{lv}</div>
|
{lv == 1 || lv % 10 == 0 ? (
|
||||||
) : (
|
<div class="w-34px h-34px flex items-center justify-center text-white">{lv}</div>
|
||||||
<div class="w-34px h-34px"></div>
|
) : (
|
||||||
)}
|
<div class="w-34px h-34px"></div>
|
||||||
{columns.map((column, i) => {
|
)}
|
||||||
const skill = getSkill(lv, lvList[index + 1] ?? 150, column) as ISkill
|
{columns.map((column, i) => {
|
||||||
return skill ? renderSkill(skill, index) : <div class="w-34px h-34px"></div>
|
const skill = getSkill(lv, lvList[index + 1] ?? 150, column) as ISkill
|
||||||
})}
|
return skill ? renderSkill(skill, index) : <div class="w-34px h-34px"></div>
|
||||||
<div class="w-20px h-34px" onClick={() => (activeSkill.value = -1)}></div>
|
})}
|
||||||
</div>
|
<div class="w-20px h-34px" onClick={() => (activeSkill.value = -1)}></div>
|
||||||
):(<></>))}
|
</div>
|
||||||
|
) : (
|
||||||
|
<></>
|
||||||
|
),
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -12,3 +12,23 @@
|
|||||||
.passive {
|
.passive {
|
||||||
filter: grayscale(100%) invert(3%) sepia(14%) saturate(874%) hue-rotate(65deg) brightness(105%) contrast(102%);
|
filter: grayscale(100%) invert(3%) sepia(14%) saturate(874%) hue-rotate(65deg) brightness(105%) contrast(102%);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.skill{
|
||||||
|
background-image: url('./img/skill.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skill-active{
|
||||||
|
background-image: url('./img/skillActive.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.awake_50{
|
||||||
|
background-image: url('./img/awake_50.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.awake_85{
|
||||||
|
background-image: url('./img/awake_85.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="h-90vh w-auto overflow-y-auto overflow-x-hidden">
|
<div class="h-90vh w-auto overflow-y-auto overflow-x-hidden">
|
||||||
<SkillTree :skills="infoStore.skills" :lvInfo="configStore.config?.skills"></SkillTree>
|
<SkillTree :skills="infoStore.skills" v-model:lvInfo="configStore.config.skills" v-model:bindAwake="configStore.config.bindAwake"></SkillTree>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ export interface IConfig {
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
sundry: Record<string, any>
|
sundry: Record<string, any>
|
||||||
|
bindAwake: number
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultEqusConfig = {
|
const defaultEqusConfig = {
|
||||||
@@ -82,6 +83,7 @@ export const useConfigStore = defineStore('configStore', () => {
|
|||||||
jades: {},
|
jades: {},
|
||||||
avatar: {},
|
avatar: {},
|
||||||
sundry: {},
|
sundry: {},
|
||||||
|
bindAwake: 50
|
||||||
})
|
})
|
||||||
|
|
||||||
const skillCountConfig = ref<IResultSkillCount[]>([])
|
const skillCountConfig = ref<IResultSkillCount[]>([])
|
||||||
@@ -107,12 +109,14 @@ export const useConfigStore = defineStore('configStore', () => {
|
|||||||
jades: {},
|
jades: {},
|
||||||
avatar: {},
|
avatar: {},
|
||||||
sundry: {},
|
sundry: {},
|
||||||
|
bindAwake: 50
|
||||||
}
|
}
|
||||||
if (!config.value?.equips) config.value.equips = {}
|
if (!config.value?.equips) config.value.equips = {}
|
||||||
if (!config.value?.skills) config.value.skills = {}
|
if (!config.value?.skills) config.value.skills = {}
|
||||||
if (!config.value?.jades) config.value.jades = {}
|
if (!config.value?.jades) config.value.jades = {}
|
||||||
if (!config.value?.avatar) config.value.avatar = {}
|
if (!config.value?.avatar) config.value.avatar = {}
|
||||||
if (!config.value?.sundry) config.value.sundry = {}
|
if (!config.value?.sundry) config.value.sundry = {}
|
||||||
|
if (!config.value?.bindAwake) config.value.bindAwake = 50
|
||||||
|
|
||||||
const part = [...infoStore.parts, '宠物', '副武器'].filter(
|
const part = [...infoStore.parts, '宠物', '副武器'].filter(
|
||||||
(a) => !config.value?.equips.hasOwnProperty(a),
|
(a) => !config.value?.equips.hasOwnProperty(a),
|
||||||
|
|||||||
Reference in New Issue
Block a user