mirror of
https://github.com/setube/ogame-vue-ts.git
synced 2026-05-12 16:05:12 +08:00
feat: 新增NPC与外交逻辑,优化UI组件结构
重构并精简了部分UI组件,移除冗余弹窗与详情组件,新增NPC相关逻辑(npcBehaviorLogic、npcGrowthLogic、npcStore等)及外交逻辑(diplomaticLogic、DiplomacyView)。完善分页、标签、复选框等通用UI组件。优化战报弹窗,调整README下载链接为相对路径,修复部分国际化内容。
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import type { Fleet, Resources, BattleResult, Officer } from '@/types/game'
|
||||
import type { Fleet, Resources, BattleResult, Officer, TechnologyType } from '@/types/game'
|
||||
import { DefenseType, OfficerType } from '@/types/game'
|
||||
import * as officerLogic from './officerLogic'
|
||||
import { workerManager } from '@/workers/workerManager'
|
||||
|
||||
/**
|
||||
@@ -12,31 +11,34 @@ export const simulateBattle = async (
|
||||
defenderFleet: Partial<Fleet>,
|
||||
defenderDefense: Partial<Record<DefenseType, number>>,
|
||||
defenderResources: Resources,
|
||||
attackerOfficers: Record<OfficerType, Officer>,
|
||||
defenderOfficers: Record<OfficerType, Officer>
|
||||
_attackerOfficers: Record<OfficerType, Officer>,
|
||||
_defenderOfficers: Record<OfficerType, Officer>,
|
||||
attackerTechnologies: Record<TechnologyType, number>,
|
||||
defenderTechnologies: Record<TechnologyType, number>
|
||||
): Promise<BattleResult> => {
|
||||
// 计算军官加成
|
||||
const attackerBonuses = officerLogic.calculateActiveBonuses(attackerOfficers, Date.now())
|
||||
const defenderBonuses = officerLogic.calculateActiveBonuses(defenderOfficers, Date.now())
|
||||
// 从科技系统读取实际科技等级
|
||||
const attackerWeaponTech = attackerTechnologies['weaponsTechnology'] || 0
|
||||
const attackerShieldTech = attackerTechnologies['shieldingTechnology'] || 0
|
||||
const attackerArmorTech = attackerTechnologies['armourTechnology'] || 0
|
||||
|
||||
// 将防御加成转换为科技等级(简化:10%加成 = 1级科技)
|
||||
const attackerTechLevel = Math.floor(attackerBonuses.defenseBonus / 10)
|
||||
const defenderTechLevel = Math.floor(defenderBonuses.defenseBonus / 10)
|
||||
const defenderWeaponTech = defenderTechnologies['weaponsTechnology'] || 0
|
||||
const defenderShieldTech = defenderTechnologies['shieldingTechnology'] || 0
|
||||
const defenderArmorTech = defenderTechnologies['armourTechnology'] || 0
|
||||
|
||||
// 使用 Worker 执行战斗模拟
|
||||
const simulationResult = await workerManager.simulateBattle({
|
||||
attacker: {
|
||||
ships: attackerFleet,
|
||||
weaponTech: 0, // 暂时不考虑武器科技
|
||||
shieldTech: attackerTechLevel,
|
||||
armorTech: attackerTechLevel
|
||||
weaponTech: attackerWeaponTech,
|
||||
shieldTech: attackerShieldTech,
|
||||
armorTech: attackerArmorTech
|
||||
},
|
||||
defender: {
|
||||
ships: defenderFleet,
|
||||
defense: defenderDefense,
|
||||
weaponTech: 0,
|
||||
shieldTech: defenderTechLevel,
|
||||
armorTech: defenderTechLevel
|
||||
weaponTech: defenderWeaponTech,
|
||||
shieldTech: defenderShieldTech,
|
||||
armorTech: defenderArmorTech
|
||||
},
|
||||
maxRounds: 6 // 最多6回合
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user