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

@@ -32,22 +32,56 @@ export const calculateDefenseCost = (defenseType: DefenseType, quantity: number)
/**
* 计算舰船建造时间
* @param shipType 舰船类型
* @param quantity 数量
* @param buildingSpeedBonus 指挥官等提供的速度加成百分比
* @param roboticsFactoryLevel 机器人工厂等级
* @param naniteFactoryLevel 纳米工厂等级
*/
export const calculateShipBuildTime = (shipType: ShipType, quantity: number, buildingSpeedBonus: number = 0): number => {
export const calculateShipBuildTime = (
shipType: ShipType,
quantity: number,
buildingSpeedBonus: number = 0,
roboticsFactoryLevel: number = 0,
naniteFactoryLevel: number = 0
): number => {
const config = SHIPS[shipType]
const baseTime = config.buildTime * quantity
// 机器人工厂和纳米工厂的加速:建造时间 / (1 + 机器人工厂等级 + 纳米工厂等级 × 2)
const factorySpeedDivisor = 1 + roboticsFactoryLevel + naniteFactoryLevel * 2
// 指挥官等的百分比加成
const speedMultiplier = 1 - buildingSpeedBonus / 100
return Math.floor(baseTime * speedMultiplier)
return Math.floor((baseTime / factorySpeedDivisor) * speedMultiplier)
}
/**
* 计算防御设施建造时间
* @param defenseType 防御类型
* @param quantity 数量
* @param buildingSpeedBonus 指挥官等提供的速度加成百分比
* @param roboticsFactoryLevel 机器人工厂等级
* @param naniteFactoryLevel 纳米工厂等级
*/
export const calculateDefenseBuildTime = (defenseType: DefenseType, quantity: number, buildingSpeedBonus: number = 0): number => {
export const calculateDefenseBuildTime = (
defenseType: DefenseType,
quantity: number,
buildingSpeedBonus: number = 0,
roboticsFactoryLevel: number = 0,
naniteFactoryLevel: number = 0
): number => {
const config = DEFENSES[defenseType]
const baseTime = config.buildTime * quantity
// 机器人工厂和纳米工厂的加速:建造时间 / (1 + 机器人工厂等级 + 纳米工厂等级 × 2)
const factorySpeedDivisor = 1 + roboticsFactoryLevel + naniteFactoryLevel * 2
// 指挥官等的百分比加成
const speedMultiplier = 1 - buildingSpeedBonus / 100
return Math.floor(baseTime * speedMultiplier)
return Math.floor((baseTime / factorySpeedDivisor) * speedMultiplier)
}
/**
@@ -168,11 +202,7 @@ export const checkFleetAvailable = (currentFleet: Partial<Fleet>, requiredFleet:
* @param cargo 携带的货物(可选)
* @returns 总燃料消耗(重氢)
*/
export const calculateFleetFuelConsumption = (
fleet: Partial<Fleet>,
fuelConsumptionReduction: number = 0,
cargo?: Resources
): number => {
export const calculateFleetFuelConsumption = (fleet: Partial<Fleet>, fuelConsumptionReduction: number = 0, cargo?: Resources): number => {
// 计算舰船基础燃料消耗
let baseFuelNeeded = 0
for (const [shipType, count] of Object.entries(fleet)) {