Browse Source

解决战斗界面小数点显示的问题

master
hanqin 2 weeks ago
parent
commit
746a0eb57c
  1. 50
      Build_God_Game/src/views/BattleView.vue

50
Build_God_Game/src/views/BattleView.vue

@ -22,15 +22,29 @@ const isFighting = ref(false)
const battleResult = ref<'win' | 'lose' | null>(null)
const rewards = ref<{ type: string; itemName: string; count: number }[]>([])
const playerHealthPercent = computed(() => {
if (playerMaxHealth.value === 0) return 0
return (playerHealth.value / playerMaxHealth.value) * 100
})
const formatBattleStat = (value: number) => Math.floor(value)
const monsterHealthPercent = computed(() => {
if (monsterMaxHealth.value === 0) return 0
return (monsterHealth.value / monsterMaxHealth.value) * 100
})
const toHealthPercent = (current: number, max: number) => {
if (max <= 0) return 0
const ratio = current / max
return Math.min(100, Math.max(0, Math.round(ratio * 100)))
}
const playerHealthPercent = computed(() =>
toHealthPercent(playerHealth.value, playerMaxHealth.value)
)
const monsterHealthPercent = computed(() =>
toHealthPercent(monsterHealth.value, monsterMaxHealth.value)
)
const playerHealthDisplay = computed(
() => `${formatBattleStat(playerHealth.value)} / ${formatBattleStat(playerMaxHealth.value)}`
)
const monsterHealthDisplay = computed(
() => `${formatBattleStat(monsterHealth.value)} / ${formatBattleStat(monsterMaxHealth.value)}`
)
const currentCharacter = computed(() => characterStore.currentCharacter)
const currentMonster = computed(() => monsterStore.currentMonster)
@ -60,10 +74,10 @@ const startBattle = async () => {
battleLog.value = []
rewards.value = []
playerMaxHealth.value = currentCharacter.value.maxHP
playerHealth.value = currentCharacter.value.currentHP
monsterMaxHealth.value = currentMonster.value.health
monsterHealth.value = currentMonster.value.health
playerMaxHealth.value = Math.floor(currentCharacter.value.maxHP)
playerHealth.value = Math.floor(currentCharacter.value.currentHP)
monsterMaxHealth.value = Math.floor(currentMonster.value.health)
monsterHealth.value = Math.floor(currentMonster.value.health)
const playerAttack = currentCharacter.value.attack
const playerDefend = currentCharacter.value.defend
@ -154,13 +168,13 @@ onMounted(async () => {
await monsterStore.fetchMonster(monsterId.value)
if (currentCharacter.value) {
playerMaxHealth.value = currentCharacter.value.maxHP
playerHealth.value = currentCharacter.value.currentHP
playerMaxHealth.value = Math.floor(currentCharacter.value.maxHP)
playerHealth.value = Math.floor(currentCharacter.value.currentHP)
}
if (currentMonster.value) {
monsterMaxHealth.value = currentMonster.value.health
monsterHealth.value = currentMonster.value.health
monsterMaxHealth.value = Math.floor(currentMonster.value.health)
monsterHealth.value = Math.floor(currentMonster.value.health)
}
}
})
@ -196,7 +210,7 @@ onUnmounted(() => {
:color="monsterHealthPercent > 30 ? '#ef4444' : '#dc2626'"
/>
<div class="health-text">
{{ monsterHealth }} / {{ monsterMaxHealth }}
{{ monsterHealthDisplay }}
</div>
</div>
@ -215,7 +229,7 @@ onUnmounted(() => {
:color="playerHealthPercent > 30 ? '#22c55e' : '#ef4444'"
/>
<div class="health-text">
{{ playerHealth }} / {{ playerMaxHealth }}
{{ playerHealthDisplay }}
</div>
</div>
</div>

Loading…
Cancel
Save