mirror of
https://github.com/setube/ogame-vue-ts.git
synced 2026-07-11 00:12:39 +08:00
feat: 新增队列与外交通知组件及新手引导
引入队列通知(QueueNotifications)和外交通知(DiplomaticNotifications)组件,优化主界面队列与外交报告展示,支持一键查看与跳转。重构App.vue,移除原有队列展示,改为弹出式通知,支持功能解锁提示与新手引导(TutorialOverlay)。完善NPC外交事件处理,导弹攻击等行为影响好感度并生成报告。优化部分UI细节与多语言文本,提升交互体验。
This commit is contained in:
@@ -31,11 +31,7 @@ export const calculateSystemDistance = (from: Position, to: Position): number =>
|
||||
/**
|
||||
* 检查目标是否在射程内
|
||||
*/
|
||||
export const isTargetInRange = (
|
||||
originPosition: Position,
|
||||
targetPosition: Position,
|
||||
impulseDriveLevel: number
|
||||
): boolean => {
|
||||
export const isTargetInRange = (originPosition: Position, targetPosition: Position, impulseDriveLevel: number): boolean => {
|
||||
const range = calculateMissileRange(impulseDriveLevel)
|
||||
const distance = calculateSystemDistance(originPosition, targetPosition)
|
||||
return distance <= range
|
||||
@@ -156,11 +152,7 @@ export const calculateMissileImpact = (
|
||||
const defenseTypes = Object.keys(defenderPlanet.defense) as DefenseType[]
|
||||
const availableDefenses = defenseTypes.filter(type => {
|
||||
// 不能摧毁护盾罩和行星护盾
|
||||
if (
|
||||
type === DefenseTypes.SmallShieldDome ||
|
||||
type === DefenseTypes.LargeShieldDome ||
|
||||
type === DefenseTypes.PlanetaryShield
|
||||
) {
|
||||
if (type === DefenseTypes.SmallShieldDome || type === DefenseTypes.LargeShieldDome || type === DefenseTypes.PlanetaryShield) {
|
||||
return false
|
||||
}
|
||||
return (defenderPlanet.defense[type] || 0) > 0
|
||||
@@ -196,10 +188,7 @@ export const calculateMissileImpact = (
|
||||
/**
|
||||
* 应用导弹攻击结果到星球
|
||||
*/
|
||||
export const applyMissileAttackResult = (
|
||||
planet: Planet,
|
||||
defenseLosses: Partial<Record<DefenseType, number>>
|
||||
): void => {
|
||||
export const applyMissileAttackResult = (planet: Planet, defenseLosses: Partial<Record<DefenseType, number>>): void => {
|
||||
for (const [defenseType, lossCount] of Object.entries(defenseLosses)) {
|
||||
const currentCount = planet.defense[defenseType as DefenseType] || 0
|
||||
planet.defense[defenseType as DefenseType] = Math.max(0, currentCount - lossCount)
|
||||
|
||||
Reference in New Issue
Block a user