一个全随机的刷装备小游戏
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.
 
 
 
 
 

58 lines
1.5 KiB

<template>
<Tooltip :infos="[t('backpack')]" width="8rem">
<img class="menu-img" :src="menu_icons.backpack" @click="showMenu">
</Tooltip>
<Dialog :title="t('backpack')" v-model="show" top="4rem" left='8%' @close="state.curMenu = null">
<Player />
<Grid @openEquipMenu="openEquipMenu" />
</Dialog>
<EquipMenu ref="equipMenu" @closePack="show = false" />
</template>
<script lang="ts" setup>
import { useStore } from "vuex";
import { computed, onBeforeUnmount, onMounted, ref } from "vue";
import { useI18n } from "vue3-i18n";
import { Tooltip, Dialog } from "@/components"
import { menu_icons } from "@/config";
import Grid from './grid.vue';
import EquipMenu from './equip-menu.vue';
import Player from './player.vue';
const { t } = useI18n();
const { state, commit, dispatch } = useStore();
const emit = defineEmits(['openMenu'])
const show = computed(() => {
return state.curMenu == 'backpack';
});
const equipMenu = ref();
const openEquipMenu = (idx, event) => {
event.preventDefault();
commit('close_equip_tip');
equipMenu.value?.open(idx, event)
}
const showMenu = () => {
state.curMenu = show.value ? null : 'backpack';
}
const keydown = (e) => {
if (e.keyCode == 66 && !e.ctrlKey) {
showMenu();
}
}
onMounted(() => {
showMenu();
document.addEventListener('keydown', keydown);
});
onBeforeUnmount(() => {
document.removeEventListener('keydown', keydown);
})
</script>
<style lang="scss" scoped></style>