You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.8 KiB
92 lines
2.8 KiB
<template> |
|
<Dialog :show-header="false" v-model="show" :left="left" :top="top" padding="0" :z="10"> |
|
<PopoverMenu :items="[ |
|
{ label: t('use'), onClick: useEquip }, |
|
{ label: t('strengthen'), onClick: strengthenEquip }, |
|
{ label: t('reforge'), onClick: strengthenEquip }, |
|
{ label: t('inherited.0'), onClick: inheritedEquip }, |
|
{ label: state.grid[index]?.locked ? t('unlock') : t('lock'), onClick: lockEquip }, |
|
{ label: t('sell'), onClick: sellEquip }, |
|
]" /> |
|
</Dialog> |
|
|
|
<Dialog :title="t('strengthen') + t('equip')" v-model="showStrengthen" top="5rem" left="2rem" padding="0" :z="11" |
|
:obscured="true" @close="strengthen?.stopAuto()"> |
|
<Strengthen ref="strengthen" :equip="state.grid[index]" /> |
|
</Dialog> |
|
|
|
<Dialog :title="t('equip') + t('inherited.0')" v-model="showInherited" :top="state.mobile ? '5rem' : '10rem'" |
|
left="2rem" padding="0" :z="11" :obscured="true"> |
|
<Inherited :target="equip" :source="curEquip" /> |
|
</Dialog> |
|
|
|
</template> |
|
|
|
<script lang="ts" setup> |
|
import { useStore } from "vuex"; |
|
import { onBeforeUnmount, onMounted, ref, computed } from "vue"; |
|
import { useI18n } from "vue3-i18n"; |
|
import { Dialog, PopoverMenu } from "@/components" |
|
import Strengthen from "./strengthen.vue"; |
|
import { usePopoverMenu } from "@/tool"; |
|
import Inherited from "./inherited.vue"; |
|
|
|
|
|
const { t } = useI18n(); |
|
const { state, commit, dispatch } = useStore(); |
|
const showStrengthen = ref(false); |
|
const showInherited = ref(false); |
|
const { show, top, left, index, open, close } = usePopoverMenu(); |
|
const emit = defineEmits(['closePack']) |
|
const equip = computed(() => { |
|
return state.grid[index.value]; |
|
}) |
|
const curEquip = computed(() => { |
|
if (!equip.value) { |
|
return null; |
|
} |
|
return state.playerAttribute[equip.value.type]; |
|
}) |
|
const strengthen = ref(); |
|
|
|
defineExpose({ open }) |
|
|
|
const useEquip = () => { |
|
dispatch("useEquip", index.value); |
|
close(); |
|
} |
|
const strengthenEquip = () => { |
|
emit('closePack'); |
|
showStrengthen.value = true; |
|
close(); |
|
} |
|
const lockEquip = () => { |
|
state.grid[index.value].locked = !state.grid[index.value].locked; |
|
close(); |
|
} |
|
const sellEquip = () => { |
|
dispatch('sell_equip', index.value); |
|
close(); |
|
} |
|
const inheritedEquip = () => { |
|
if (!curEquip.value) { |
|
commit("set_sys_info", { msg: t('cannotInherited.0'), type: "warning", }); |
|
return; |
|
} |
|
if (curEquip.value.strengthenLv <= equip.value.strengthenLv) { |
|
commit("set_sys_info", { msg: t('cannotInherited.1'), type: "warning", }); |
|
return; |
|
} |
|
emit('closePack'); |
|
showInherited.value = true; |
|
close(); |
|
} |
|
|
|
onMounted(() => { |
|
document.addEventListener('click', close) |
|
}); |
|
onBeforeUnmount(() => { |
|
document.removeEventListener('keydown', close) |
|
}) |
|
</script> |
|
<style lang="scss" scoped></style> |