mirror of
https://github.com/setube/ogame-vue-ts.git
synced 2026-05-12 16:05:12 +08:00
feat: 初始化项目结构与核心功能
引入项目基础目录结构,包含多语言支持、主要页面与组件、核心游戏逻辑、UI 组件库、加密与本地持久化、自动化 Docker 构建流程、GitHub issue 模板(中英文)、README(中英文)、LICENSE 及开发配置文件。实现 OGame 单机版主要功能模块,为后续开发和扩展奠定基础。
This commit is contained in:
47
src/stores/gameStore.ts
Normal file
47
src/stores/gameStore.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import type { Planet, Player, BuildQueueItem, FleetMission, BattleResult, SpyReport, Officer } from '@/types/game'
|
||||
import { TechnologyType, OfficerType } from '@/types/game'
|
||||
import type { Locale } from '@/locales'
|
||||
import pkg from '../../package.json'
|
||||
import { encryptData, decryptData } from '@/utils/crypto'
|
||||
|
||||
export const useGameStore = defineStore('game', {
|
||||
state: () => ({
|
||||
gameTime: Date.now(),
|
||||
isPaused: false,
|
||||
player: {
|
||||
id: 'player1',
|
||||
name: '',
|
||||
planets: [] as Planet[],
|
||||
technologies: {} as Record<TechnologyType, number>,
|
||||
officers: {} as Record<OfficerType, Officer>,
|
||||
researchQueue: [] as BuildQueueItem[],
|
||||
fleetMissions: [] as FleetMission[],
|
||||
battleReports: [] as BattleResult[],
|
||||
spyReports: [] as SpyReport[]
|
||||
} as Player,
|
||||
currentPlanetId: '',
|
||||
isDark: '',
|
||||
locale: 'zh-CN' as Locale,
|
||||
sidebarCollapsed: window.innerWidth < 1024 ? false : true,
|
||||
universePlanets: {} as Record<string, Planet>
|
||||
}),
|
||||
getters: {
|
||||
currentPlanet(): Planet | undefined {
|
||||
return this.player.planets.find(p => p.id === this.currentPlanetId)
|
||||
},
|
||||
getMoonForPlanet(): (planetId: string) => Planet | undefined {
|
||||
return (planetId: string) => {
|
||||
return this.player.planets.find(p => p.parentPlanetId === planetId && p.isMoon)
|
||||
}
|
||||
}
|
||||
},
|
||||
persist: {
|
||||
key: pkg.name,
|
||||
storage: localStorage,
|
||||
serializer: {
|
||||
serialize: state => encryptData(state),
|
||||
deserialize: value => decryptData(value)
|
||||
}
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user