17 changed files with 185 additions and 18 deletions
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
export const title = '系统设置'; |
||||
export const action = ['保存设置', '取消']; |
||||
export const music = ['背景音乐', '完全关闭', '最小音量', '正常音量']; |
||||
export const battle = ['战斗日志', '显示', '隐藏']; |
@ -0,0 +1,134 @@
@@ -0,0 +1,134 @@
|
||||
<template> |
||||
<Tooltip :infos="[t('title')]" width="10rem"> |
||||
<img class="menu-img" :src="menu_icons.settings" @click="showMenu"> |
||||
</Tooltip> |
||||
|
||||
<Dialog :title="t('title')" v-model="show" top="4rem" :left="state.mobile ? '4%' : '8%'" padding="0.7rem" :z="49" |
||||
@close="state.curMenu = null"> |
||||
<div class="setting"> |
||||
<div class="item"> |
||||
<div class="label">{{ t('music.0') }}:</div> |
||||
<div class="options"> |
||||
<input type="radio" id="none" :value="0" v-model="settings.music"> {{ t('music.1') }} |
||||
<input type="radio" id="min" :value="0.01" v-model="settings.music"> {{ t('music.2') }} |
||||
<input type="radio" id="normal" :value="0.2" v-model="settings.music"> {{ t('music.3') }} |
||||
</div> |
||||
</div> |
||||
<div class="item"> |
||||
<div class="label">{{ t('battle.0') }}:</div> |
||||
<div class="options"> |
||||
<input type="radio" :value="1" v-model="settings.battle"> {{ t('battle.1') }} |
||||
<input type="radio" :value="0" v-model="settings.battle"> {{ t('battle.2') }} |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="footer"> |
||||
<button class="button" @click="saveSettings">{{ t('action.0') }}</button> |
||||
<button class="button" @click="showMenu">{{ t('action.1') }}</button> |
||||
</div> |
||||
</Dialog> |
||||
|
||||
</template> |
||||
|
||||
<script lang="ts" setup> |
||||
import { useStore } from "vuex"; |
||||
import { computed, onBeforeUnmount, onMounted, reactive, ref } from "vue"; |
||||
import { Tooltip, Dialog } from "@/components" |
||||
import { menu_icons } from "@/config"; |
||||
import { createt } from "@/config/i18n"; |
||||
import { store_name_config, key_name_config, getFromStore, insertToStore } from "@/tool"; |
||||
|
||||
const t = createt('setting.'); |
||||
const { state, commit, dispatch } = useStore(); |
||||
const show = computed(() => { |
||||
return state.curMenu == 'setting'; |
||||
}); |
||||
const settings = ref({ |
||||
type: 'setting', |
||||
music: 0.01, |
||||
battle: 1 |
||||
}) |
||||
|
||||
const saveSettings = () => { |
||||
insertToStore(store_name_config, settings.value); |
||||
set(); |
||||
showMenu(); |
||||
} |
||||
|
||||
const set = () => { |
||||
dispatch('set_music_volume', settings.value.music); |
||||
state.battleLog = settings.value.battle; |
||||
} |
||||
|
||||
const readSetting = () => { |
||||
getFromStore(store_name_config, settings.value.type).then((rsp: any) => { |
||||
if (rsp) { |
||||
settings.value = rsp |
||||
set(); |
||||
}; |
||||
}); |
||||
} |
||||
|
||||
const showMenu = () => { |
||||
state.curMenu = show.value ? null : 'setting'; |
||||
} |
||||
|
||||
const keydown = (e) => { |
||||
if (state.curMenu != null) { |
||||
return; |
||||
} |
||||
if (e.keyCode == 27 && !e.ctrlKey) { |
||||
setTimeout(() => { |
||||
showMenu(); |
||||
}, 50); |
||||
} |
||||
} |
||||
|
||||
onMounted(() => { |
||||
document.addEventListener('keydown', keydown, true) |
||||
readSetting(); |
||||
}); |
||||
onBeforeUnmount(() => { |
||||
document.removeEventListener('keydown', keydown) |
||||
}) |
||||
|
||||
</script> |
||||
<style lang="scss" scoped> |
||||
.setting { |
||||
width: 32rem; |
||||
font-size: 1rem; |
||||
padding-top: 1rem; |
||||
|
||||
.label { |
||||
float: left; |
||||
width: 20%; |
||||
text-align: right; |
||||
} |
||||
|
||||
.options { |
||||
float: right; |
||||
width: 78%; |
||||
text-align: left; |
||||
} |
||||
|
||||
.item { |
||||
height: 2rem; |
||||
} |
||||
|
||||
.footer { |
||||
padding-top: 1rem; |
||||
} |
||||
} |
||||
|
||||
@media only screen and (max-width: 768px) { |
||||
.setting { |
||||
width: 23.5rem; |
||||
margin-top: 0.5rem; |
||||
|
||||
.footer { |
||||
margin-top: 0.5rem; |
||||
} |
||||
|
||||
} |
||||
} |
||||
</style> |
Loading…
Reference in new issue