feat: 新增队列与外交通知组件及新手引导

引入队列通知(QueueNotifications)和外交通知(DiplomaticNotifications)组件,优化主界面队列与外交报告展示,支持一键查看与跳转。重构App.vue,移除原有队列展示,改为弹出式通知,支持功能解锁提示与新手引导(TutorialOverlay)。完善NPC外交事件处理,导弹攻击等行为影响好感度并生成报告。优化部分UI细节与多语言文本,提升交互体验。
This commit is contained in:
谦君
2025-12-17 21:06:34 +08:00
parent 053bd24855
commit cfcde0b024
38 changed files with 3605 additions and 420 deletions

View File

@@ -231,14 +231,14 @@
return defenseType === DefenseType.SmallShieldDome || defenseType === DefenseType.LargeShieldDome
}
const buildDefense = (defenseType: DefenseType, quantity: number): boolean => {
const buildDefense = (defenseType: DefenseType, quantity: number): { success: boolean; reason?: string } => {
const currentPlanet = gameStore.currentPlanet
if (!currentPlanet) return false
if (!currentPlanet) return { success: false }
const validation = shipValidation.validateDefenseBuild(currentPlanet, defenseType, quantity, gameStore.player.technologies)
if (!validation.valid) return false
if (!validation.valid) return { success: false, reason: validation.reason }
const queueItem = shipValidation.executeDefenseBuild(currentPlanet, defenseType, quantity, gameStore.player.officers)
currentPlanet.buildQueue.push(queueItem)
return true
return { success: true }
}
// 建造防御设施
@@ -251,10 +251,10 @@
return
}
const success = buildDefense(defenseType, quantity)
if (!success) {
const result = buildDefense(defenseType, quantity)
if (!result.success) {
alertDialogTitle.value = t('defenseView.buildFailed')
alertDialogMessage.value = t('defenseView.buildFailedMessage')
alertDialogMessage.value = result.reason ? t(result.reason) : t('defenseView.buildFailedMessage')
alertDialogOpen.value = true
} else {
quantities.value[defenseType] = 0