refactor(logic): 将导弹相关逻辑从 shipLogic 移动到 missileLogic

重构代码结构,将与导弹容量计算和验证相关的函数从 shipLogic 模块提取到新创建的 missileLogic 模块,以提高代码的模块化和可维护性。同时更新所有相关导入路径以引用新的模块。
This commit is contained in:
wenyu
2026-03-18 19:41:48 +08:00
parent 8f29a63756
commit b1cf0acaae
5 changed files with 66 additions and 64 deletions

View File

@@ -156,64 +156,6 @@ 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 calculateQueueMissileCount = (buildQueue: Array<{ type: string; itemType: string; quantity?: number }>): number => {
let queueMissileCount = 0
for (const item of buildQueue) {
if (item.type === 'defense') {
const defenseType = item.itemType as DefenseType
if (defenseType === DefenseType.InterplanetaryMissile || defenseType === DefenseType.AntiBallisticMissile) {
queueMissileCount += item.quantity || 0
}
}
}
return queueMissileCount
}
/**
* 检查导弹容量限制
*/
export const checkMissileSiloLimit = (
defenseType: DefenseType,
currentDefense: Partial<Record<DefenseType, number>>,
buildings: Partial<Record<BuildingType, number>>,
quantity: number,
buildQueue?: Array<{ type: string; itemType: string; quantity?: number }>
): boolean => {
// 只对导弹类型进行检查
if (defenseType !== DefenseType.InterplanetaryMissile && defenseType !== DefenseType.AntiBallisticMissile) {
return true
}
const maxCapacity = calculateMissileSiloCapacity(buildings)
const currentCount = calculateCurrentMissileCount(currentDefense)
const queueCount = buildQueue ? calculateQueueMissileCount(buildQueue) : 0
const newCount = currentCount + queueCount + quantity
return newCount <= maxCapacity
}
/**
* 创建舰船建造队列项
*/