fix: 补全舰队预设中缺失的4种舰船类型

selectedFleet 和 jumpGateFleet 共用 createEmptyFleet 工厂函数初始化,
遍历 Object.values(ShipType) 确保覆盖全部 15 种舰船类型,修复此前遗漏的
Battlecruiser、Bomber、Destroyer 和 SolarSatellite。

loadPreset 也改为遍历 Object.values(ShipType),确保所有预设值都能正确恢复。
This commit is contained in:
Eternity
2026-05-31 23:55:00 +08:00
parent 80071ef0f6
commit 32c54768a2

View File

@@ -652,6 +652,15 @@
const { SHIPS } = useGameConfig() const { SHIPS } = useGameConfig()
const planet = computed(() => gameStore.currentPlanet) const planet = computed(() => gameStore.currentPlanet)
// 创建默认空舰队映射
const createEmptyFleet = (): Partial<Fleet> => {
const fleet: Partial<Fleet> = {}
for (const type of Object.values(ShipType)) {
fleet[type] = 0
}
return fleet
}
// AlertDialog 状态 // AlertDialog 状态
const alertDialogOpen = ref(false) const alertDialogOpen = ref(false)
const alertDialogTitle = ref('') const alertDialogTitle = ref('')
@@ -690,19 +699,7 @@
// 跳跃门相关 // 跳跃门相关
const selectedJumpGateTarget = ref<typeof planet.value | null>(null) const selectedJumpGateTarget = ref<typeof planet.value | null>(null)
const jumpGateFleet = ref<Partial<Fleet>>({ const jumpGateFleet = ref<Partial<Fleet>>(createEmptyFleet())
[ShipType.LightFighter]: 0,
[ShipType.HeavyFighter]: 0,
[ShipType.Cruiser]: 0,
[ShipType.Battleship]: 0,
[ShipType.SmallCargo]: 0,
[ShipType.LargeCargo]: 0,
[ShipType.ColonyShip]: 0,
[ShipType.Recycler]: 0,
[ShipType.EspionageProbe]: 0,
[ShipType.DarkMatterHarvester]: 0,
[ShipType.Deathstar]: 0
})
// 是否显示跳跃门标签页(当前在月球上且有跳跃门) // 是否显示跳跃门标签页(当前在月球上且有跳跃门)
const showJumpGateTab = computed(() => { const showJumpGateTab = computed(() => {
@@ -800,19 +797,7 @@
}) })
// 选择的舰队 // 选择的舰队
const selectedFleet = ref<Partial<Fleet>>({ const selectedFleet = ref<Partial<Fleet>>(createEmptyFleet())
[ShipType.LightFighter]: 0,
[ShipType.HeavyFighter]: 0,
[ShipType.Cruiser]: 0,
[ShipType.Battleship]: 0,
[ShipType.SmallCargo]: 0,
[ShipType.LargeCargo]: 0,
[ShipType.ColonyShip]: 0,
[ShipType.Recycler]: 0,
[ShipType.EspionageProbe]: 0,
[ShipType.DarkMatterHarvester]: 0,
[ShipType.Deathstar]: 0
})
// 目标坐标 // 目标坐标
const targetPosition = ref({ galaxy: 1, system: 1, position: 1 }) const targetPosition = ref({ galaxy: 1, system: 1, position: 1 })
@@ -1008,8 +993,8 @@
// 加载预设 // 加载预设
const loadPreset = (preset: FleetPreset) => { const loadPreset = (preset: FleetPreset) => {
// 加载舰队配置 // 加载舰队配置
Object.keys(selectedFleet.value).forEach(key => { Object.values(ShipType).forEach(key => {
selectedFleet.value[key as ShipType] = preset.fleet[key as ShipType] || 0 selectedFleet.value[key] = preset.fleet[key] || 0
}) })
// 不再加载坐标,保留用户当前输入的坐标 // 不再加载坐标,保留用户当前输入的坐标