|
|
@ -18,8 +18,14 @@ const showMsg = (text: string, type: 'success' | 'error' = 'success') => { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const trainingStartTime = ref<Date | null>(null) |
|
|
const trainingStartTime = ref<Date | null>(null) |
|
|
const elapsedMinutes = ref(0) |
|
|
const elapsedSeconds = ref(0) |
|
|
const expectedExp = computed(() => Math.floor(elapsedMinutes.value * 100)) |
|
|
const levelId = computed(() => characterStore.currentCharacter?.levelId ?? 1) |
|
|
|
|
|
const trainingExpRate = computed(() => characterStore.currentCharacter?.trainingExpRate ?? 0.01) |
|
|
|
|
|
const expectedExp = computed(() => { |
|
|
|
|
|
const rate = trainingExpRate.value |
|
|
|
|
|
const level = levelId.value |
|
|
|
|
|
return Math.floor(elapsedSeconds.value * rate * level * level) |
|
|
|
|
|
}) |
|
|
const isTraining = computed(() => !!trainingStartTime.value) |
|
|
const isTraining = computed(() => !!trainingStartTime.value) |
|
|
let timer: number | null = null |
|
|
let timer: number | null = null |
|
|
|
|
|
|
|
|
@ -27,7 +33,7 @@ const updateElapsedTime = () => { |
|
|
if (trainingStartTime.value) { |
|
|
if (trainingStartTime.value) { |
|
|
const now = new Date() |
|
|
const now = new Date() |
|
|
const diff = now.getTime() - trainingStartTime.value!.getTime() |
|
|
const diff = now.getTime() - trainingStartTime.value!.getTime() |
|
|
elapsedMinutes.value = diff / 60000 |
|
|
elapsedSeconds.value = Math.floor(diff / 1000) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -54,7 +60,7 @@ const handleStartTraining = async () => { |
|
|
const success = await characterStore.startTraining() |
|
|
const success = await characterStore.startTraining() |
|
|
if (success) { |
|
|
if (success) { |
|
|
trainingStartTime.value = new Date() |
|
|
trainingStartTime.value = new Date() |
|
|
elapsedMinutes.value = 0 |
|
|
elapsedSeconds.value = 0 |
|
|
timer = window.setInterval(updateElapsedTime, 1000) |
|
|
timer = window.setInterval(updateElapsedTime, 1000) |
|
|
showMsg('开始打坐') |
|
|
showMsg('开始打坐') |
|
|
} else { |
|
|
} else { |
|
|
@ -69,7 +75,7 @@ const handleStopTraining = async () => { |
|
|
timer = null |
|
|
timer = null |
|
|
} |
|
|
} |
|
|
trainingStartTime.value = null |
|
|
trainingStartTime.value = null |
|
|
elapsedMinutes.value = 0 |
|
|
elapsedSeconds.value = 0 |
|
|
showMsg(`结算成功,获得 ${expGained} 经验`) |
|
|
showMsg(`结算成功,获得 ${expGained} 经验`) |
|
|
} |
|
|
} |
|
|
</script> |
|
|
</script> |
|
|
@ -99,7 +105,7 @@ const handleStopTraining = async () => { |
|
|
<div class="info-section"> |
|
|
<div class="info-section"> |
|
|
<div class="info-item"> |
|
|
<div class="info-item"> |
|
|
<span class="label">已打坐</span> |
|
|
<span class="label">已打坐</span> |
|
|
<span class="value">{{ Math.floor(elapsedMinutes) }} 分钟</span> |
|
|
<span class="value">{{ Math.floor(elapsedSeconds / 60) }}分{{ elapsedSeconds % 60 }}秒</span> |
|
|
</div> |
|
|
</div> |
|
|
<div class="info-item"> |
|
|
<div class="info-item"> |
|
|
<span class="label">预计获得</span> |
|
|
<span class="label">预计获得</span> |
|
|
|