|
|
|
@ -45,6 +45,10 @@ const menuItems = computed(() => [ |
|
|
|
{ label: '捡垃圾', icon: scrapIcon, useImage: true }, |
|
|
|
]) |
|
|
|
|
|
|
|
const formatNumber = (num: number) => { |
|
|
|
return Math.floor(num).toLocaleString('zh-CN') |
|
|
|
} |
|
|
|
|
|
|
|
const handleLogout = () => { |
|
|
|
authStore.logout() |
|
|
|
characterStore.clearCurrentCharacter() |
|
|
|
@ -79,13 +83,23 @@ const handleBreakthrough = async () => { |
|
|
|
<div class="game-page"> |
|
|
|
<Particles :particle-count="100" :particle-colors="['#ffffff', '#cccccc']" class="particles-bg" /> |
|
|
|
<div class="game-container"> |
|
|
|
<div class="character-header" @click="handleSwitchCharacter"> |
|
|
|
<div class="character-info"> |
|
|
|
<span class="character-name">{{ characterStore.currentCharacter?.name || '未选择角色' }}</span> |
|
|
|
<span class="character-level">{{ characterStore.currentCharacter?.levelName || '' }}</span> |
|
|
|
<div style="text-align: center; margin-bottom: 20px;"> |
|
|
|
<StarBorder |
|
|
|
as="div" |
|
|
|
color="#22c55e" |
|
|
|
speed="6s" |
|
|
|
:thickness="2" |
|
|
|
style="display: block; width: 100%; max-width: 480px;" |
|
|
|
> |
|
|
|
<div class="character-header" @click="handleSwitchCharacter"> |
|
|
|
<div class="character-info"> |
|
|
|
<span class="character-name">{{ characterStore.currentCharacter?.name || '未选择角色' }}</span> |
|
|
|
<span class="character-level">{{ characterStore.currentCharacter?.levelName || '' }}</span> |
|
|
|
</div> |
|
|
|
<span class="switch-btn">切换角色</span> |
|
|
|
</div> |
|
|
|
<span class="switch-btn">切换角色</span> |
|
|
|
</div> |
|
|
|
</StarBorder> |
|
|
|
</div> |
|
|
|
<div style="text-align: center;"> |
|
|
|
<ShinyText class="welcome-text" text="✨ 欢迎来到我的世界" :speed="2" :delay="0.5" :disabled="false" :color="'#b5b5b5'" |
|
|
|
:shine-color="'#34fef1'" :spread="120" :direction="'left'" :yoyo="false" :pause-on-hover="false" /> |
|
|
|
@ -116,7 +130,7 @@ const handleBreakthrough = async () => { |
|
|
|
<span class="next-level">{{ nextLevelName }}</span> |
|
|
|
</div> |
|
|
|
<div class="exp-info"> |
|
|
|
<span class="exp-text">{{ currentExp }} / {{ nextLevelMinExp }} 经验</span> |
|
|
|
<span class="exp-text">{{ formatNumber(currentExp) }} / {{ formatNumber(nextLevelMinExp) }} 经验</span> |
|
|
|
<el-progress :percentage="Math.floor(expProgress)" color="#ff8844" :show-text="false" :stroke-width="8" /> |
|
|
|
<span class="exp-percent">{{ Math.floor(expProgress) }}%</span> |
|
|
|
</div> |
|
|
|
@ -185,9 +199,9 @@ const handleBreakthrough = async () => { |
|
|
|
border: 1px solid rgba(255, 255, 255, 0.08); |
|
|
|
border-radius: 12px; |
|
|
|
padding: 12px 16px; |
|
|
|
margin-bottom: 20px; |
|
|
|
cursor: pointer; |
|
|
|
transition: all 0.2s ease; |
|
|
|
height: 100%; |
|
|
|
} |
|
|
|
|
|
|
|
.character-header:hover { |
|
|
|
@ -226,6 +240,15 @@ const handleBreakthrough = async () => { |
|
|
|
font-weight: bold; |
|
|
|
} |
|
|
|
|
|
|
|
.star-border{ |
|
|
|
background: transparent; |
|
|
|
border: none; |
|
|
|
padding: 12px 16px; |
|
|
|
display: flex; |
|
|
|
justify-content: space-between; |
|
|
|
align-items: center; |
|
|
|
} |
|
|
|
|
|
|
|
.menu-grid { |
|
|
|
display: grid; |
|
|
|
grid-template-columns: repeat(3, 1fr); |
|
|
|
|