feat: 重构战报弹窗与模拟器视图,优化UI与逻辑

重构BattleReportDialog和BattleSimulatorView相关静态资源,替换旧版JS/CSS文件,提升界面一致性和交互体验。新增和优化空状态、滚动区域等通用UI组件,移除部分冗余composable,完善多语言内容。引入导弹逻辑,补充版本检测工具,提升整体代码结构和可维护性。
This commit is contained in:
谦君
2025-12-15 20:04:40 +08:00
parent 9b9fda0400
commit 59dd7bfd05
126 changed files with 3944 additions and 1487 deletions

View File

@@ -2,6 +2,9 @@ import type { Resources, BuildQueueItem, Fleet } from '@/types/game'
import { ShipType, DefenseType, BuildingType, TechnologyType } from '@/types/game'
import { SHIPS, DEFENSES } from '@/config/gameConfig'
// 用于生成唯一ID的计数器
let shipQueueIdCounter = 0
/**
* 计算舰船建造成本
*/
@@ -153,13 +156,52 @@ export const checkShieldDomeLimit = (
return true
}
/**
* 计算导弹发射井容量
*/
export const calculateMissileSiloCapacity = (buildings: Partial<Record<BuildingType, number>>): number => {
const siloLevel = buildings[BuildingType.MissileSilo] || 0
return siloLevel * 10 // 每级存储10枚导弹
}
/**
* 计算当前导弹总数
*/
export const calculateCurrentMissileCount = (defense: Partial<Record<DefenseType, number>>): number => {
const interplanetaryMissiles = defense[DefenseType.InterplanetaryMissile] || 0
const antiBallisticMissiles = defense[DefenseType.AntiBallisticMissile] || 0
return interplanetaryMissiles + antiBallisticMissiles
}
/**
* 检查导弹容量限制
*/
export const checkMissileSiloLimit = (
defenseType: DefenseType,
currentDefense: Partial<Record<DefenseType, number>>,
buildings: Partial<Record<BuildingType, number>>,
quantity: number
): boolean => {
// 只对导弹类型进行检查
if (defenseType !== DefenseType.InterplanetaryMissile && defenseType !== DefenseType.AntiBallisticMissile) {
return true
}
const maxCapacity = calculateMissileSiloCapacity(buildings)
const currentCount = calculateCurrentMissileCount(currentDefense)
const newCount = currentCount + quantity
return newCount <= maxCapacity
}
/**
* 创建舰船建造队列项
*/
export const createShipQueueItem = (shipType: ShipType, quantity: number, buildTime: number): BuildQueueItem => {
const now = Date.now()
shipQueueIdCounter++
return {
id: `ship_${now}`,
id: `ship_${now}_${shipQueueIdCounter}`,
type: 'ship',
itemType: shipType,
quantity,
@@ -173,8 +215,9 @@ export const createShipQueueItem = (shipType: ShipType, quantity: number, buildT
*/
export const createDefenseQueueItem = (defenseType: DefenseType, quantity: number, buildTime: number): BuildQueueItem => {
const now = Date.now()
shipQueueIdCounter++
return {
id: `defense_${now}`,
id: `defense_${now}_${shipQueueIdCounter}`,
type: 'defense',
itemType: defenseType,
quantity,