mirror of
https://github.com/setube/ogame-vue-ts.git
synced 2026-05-12 07:55:11 +08:00
引入项目基础目录结构,包含多语言支持、主要页面与组件、核心游戏逻辑、UI 组件库、加密与本地持久化、自动化 Docker 构建流程、GitHub issue 模板(中英文)、README(中英文)、LICENSE 及开发配置文件。实现 OGame 单机版主要功能模块,为后续开发和扩展奠定基础。
53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import { defineStore } from 'pinia'
|
|
import type { BuildingType, TechnologyType, ShipType, DefenseType } from '@/types/game'
|
|
|
|
export type DetailDialogType = 'building' | 'technology' | 'ship' | 'defense'
|
|
|
|
export interface DetailDialogState {
|
|
isOpen: boolean
|
|
type: DetailDialogType | null
|
|
itemType: BuildingType | TechnologyType | ShipType | DefenseType | null
|
|
currentLevel?: number // 用于建筑和科技
|
|
}
|
|
|
|
export const useDetailDialogStore = defineStore('detailDialog', {
|
|
state: (): DetailDialogState => ({
|
|
isOpen: false,
|
|
type: null,
|
|
itemType: null,
|
|
currentLevel: undefined
|
|
}),
|
|
actions: {
|
|
openBuilding(buildingType: BuildingType, currentLevel: number) {
|
|
this.isOpen = true
|
|
this.type = 'building'
|
|
this.itemType = buildingType
|
|
this.currentLevel = currentLevel
|
|
},
|
|
openTechnology(technologyType: TechnologyType, currentLevel: number) {
|
|
this.isOpen = true
|
|
this.type = 'technology'
|
|
this.itemType = technologyType
|
|
this.currentLevel = currentLevel
|
|
},
|
|
openShip(shipType: ShipType) {
|
|
this.isOpen = true
|
|
this.type = 'ship'
|
|
this.itemType = shipType
|
|
this.currentLevel = undefined
|
|
},
|
|
openDefense(defenseType: DefenseType) {
|
|
this.isOpen = true
|
|
this.type = 'defense'
|
|
this.itemType = defenseType
|
|
this.currentLevel = undefined
|
|
},
|
|
close() {
|
|
this.isOpen = false
|
|
this.type = null
|
|
this.itemType = null
|
|
this.currentLevel = undefined
|
|
}
|
|
}
|
|
})
|