import { defineStore } from "pinia"; const defaultUser = { id: "", nickName: "游客", avatar: "../static/avatar.png", trio: 0, // 大于1表示完成了新手引导 lvlName: "砖石1级", }; // 定义游戏相关的 store export default defineStore("store", { // 状态 state: () => ({ user: defaultUser, device: { deviceId: "", deviceName: "", }, config: {}, rankData: { rank: [], ringRank: [], }, }), // 计算属性 getters: { getUsername: (state) => { return state.user.username; }, }, // 方法 actions: { getLvlName(score) { let lvlName = ""; const rankInfos = this.config.randInfos || []; rankInfos.some((r, index) => { lvlName = rankInfos[index].name; if (r.upgrade_scores > score) { if (rankInfos[index - 1]) { lvlName = rankInfos[index - 1].name; } return true; } return false; }); return lvlName; }, updateRank(data = {}) { this.rankData = { rank: data.rank || [], ringRank: data.ringRank || [] }; }, updateUser(user = {}) { this.user = { ...defaultUser, ...user }; const rankInfos = this.config.randInfos || []; let lvlName = ""; if (this.user.scores) { rankInfos.some((r, index) => { lvlName = rankInfos[index].name; if (r.upgrade_scores > this.user.scores) { if (rankInfos[index - 1]) { lvlName = rankInfos[index - 1].name; } return true; } return false; }); this.user.lvlName = lvlName; } }, updateDevice(deviceId, deviceName) { this.device.deviceId = deviceId; this.device.deviceName = deviceName; }, updateConfig(config) { this.config = config; const rankInfos = config.randInfos || []; let lvlName = ""; if (this.user.scores) { rankInfos.some((r, index) => { lvlName = rankInfos[index].name; if (r.upgrade_scores > this.user.scores) { if (rankInfos[index - 1]) { lvlName = rankInfos[index - 1].name; } return true; } return false; }); this.user.lvlName = lvlName; } }, }, // 开启数据持久化 persist: { enabled: true, strategies: [ { storage: uni.getStorageSync, paths: ["user", "device", "config"], // 只持久化用户信息 }, ], }, });