import { defineStore } from 'pinia' import { ref, computed } from 'vue' export const usePlayerStore = defineStore('player', () => { // 基础属性 const baseStats = ref({ strength: 10, // 力量 agility: 8, // 敏捷 dexterity: 8, // 灵巧 intuition: 10, // 智力 vitality: 10 // 体质(影响HP) }) // 当前资源 const currentStats = ref({ health: 100, maxHealth: 100, stamina: 100, maxStamina: 100, sanity: 100, maxSanity: 100 }) // 主等级 const level = ref({ current: 1, exp: 0, maxExp: 100 }) // 技能 const skills = ref({}) // 装备 const equipment = ref({ weapon: null, armor: null, shield: null, accessory: null }) // 背包 const inventory = ref([]) // 货币(以铜币为单位) const currency = ref({ copper: 0 }) // 当前位置 const currentLocation = ref('camp') // 标记 const flags = ref({}) // 计算属性:总货币 const totalCurrency = computed(() => { return { gold: Math.floor(currency.value.copper / 10000), silver: Math.floor((currency.value.copper % 10000) / 100), copper: currency.value.copper % 100 } }) // 重置玩家数据 function resetPlayer() { baseStats.value = { strength: 10, agility: 8, dexterity: 8, intuition: 10, vitality: 10 } currentStats.value = { health: 100, maxHealth: 100, stamina: 100, maxStamina: 100, sanity: 100, maxSanity: 100 } level.value = { current: 1, exp: 0, maxExp: 100 } skills.value = {} equipment.value = { weapon: null, armor: null, shield: null, accessory: null } inventory.value = [] currency.value = { copper: 0 } currentLocation.value = 'camp' flags.value = {} } return { baseStats, currentStats, level, skills, equipment, inventory, currency, totalCurrency, currentLocation, flags, resetPlayer } })