feat: 新增NPC与外交逻辑,优化UI组件结构

重构并精简了部分UI组件,移除冗余弹窗与详情组件,新增NPC相关逻辑(npcBehaviorLogic、npcGrowthLogic、npcStore等)及外交逻辑(diplomaticLogic、DiplomacyView)。完善分页、标签、复选框等通用UI组件。优化战报弹窗,调整README下载链接为相对路径,修复部分国际化内容。
This commit is contained in:
谦君
2025-12-15 08:23:45 +08:00
parent 44580909a3
commit 9b9fda0400
164 changed files with 18628 additions and 2775 deletions

View File

@@ -1,5 +1,5 @@
import type { Planet, Resources, BuildQueueItem, Officer } from '@/types/game'
import { TechnologyType, OfficerType } from '@/types/game'
import { TechnologyType, OfficerType, BuildingType } from '@/types/game'
import * as researchLogic from './researchLogic'
import * as resourceLogic from './resourceLogic'
import * as publicLogic from './publicLogic'
@@ -47,14 +47,20 @@ export const executeTechnologyResearch = (
planet: Planet,
techType: TechnologyType,
currentLevel: number,
officers: Record<OfficerType, Officer>
officers: Record<OfficerType, Officer>,
technologies: Partial<Record<TechnologyType, number>>
): { queueItem: BuildQueueItem } => {
const targetLevel = currentLevel + 1
const cost = researchLogic.calculateTechnologyCost(techType, targetLevel)
// 计算军官加成
const bonuses = officerLogic.calculateActiveBonuses(officers, Date.now())
const time = researchLogic.calculateTechnologyTime(techType, currentLevel, bonuses.researchSpeedBonus)
// 获取研究实验室等级和能源技术等级
const researchLabLevel = planet.buildings[BuildingType.ResearchLab] || 1
const energyTechLevel = technologies[TechnologyType.EnergyTechnology] || 0
const time = researchLogic.calculateTechnologyTime(techType, currentLevel, bonuses.researchSpeedBonus, researchLabLevel, energyTechLevel)
// 扣除资源
resourceLogic.deductResources(planet.resources, cost)