mirror of
https://github.com/setube/ogame-vue-ts.git
synced 2026-05-12 16:05:12 +08:00
feat: 重构战报弹窗与模拟器视图,优化UI与逻辑
重构BattleReportDialog和BattleSimulatorView相关静态资源,替换旧版JS/CSS文件,提升界面一致性和交互体验。新增和优化空状态、滚动区域等通用UI组件,移除部分冗余composable,完善多语言内容。引入导弹逻辑,补充版本检测工具,提升整体代码结构和可维护性。
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user