feat: 添加了浏览器通知和页面内通知

暂包含建造完成和科研完成
This commit is contained in:
StarsEnd
2025-12-18 01:34:29 +08:00
parent 2e3ac1231f
commit e8590d54c7
10 changed files with 327 additions and 11 deletions

View File

@@ -101,7 +101,8 @@ export const generatePositionKey = (galaxy: number, system: number, position: nu
export const processGameUpdate = (
player: Player,
now: number,
gameSpeed: number = 1
gameSpeed: number = 1,
onNotification?: (type: string, itemType: string, level?: number) => void
): {
updatedResearchQueue: BuildQueueItem[]
} => {
@@ -113,6 +114,13 @@ export const processGameUpdate = (
pointsLogic.addPoints(player, points)
}
// 通知回调
const onCompleted = (type: string, itemType: string, level?: number, _quantity?: number) => {
if (onNotification) {
onNotification(type, itemType, level)
}
}
// 更新所有星球资源(直接同步计算,避免 Worker 通信开销)
player.planets.forEach(planet => {
resourceLogic.updatePlanetResources(planet, now, bonuses, gameSpeed)
@@ -121,7 +129,7 @@ export const processGameUpdate = (
// 更新所有星球其他状态
player.planets.forEach(planet => {
// 检查建造队列
buildingLogic.completeBuildQueue(planet, now, onPointsEarned)
buildingLogic.completeBuildQueue(planet, now, onPointsEarned, onCompleted)
// 更新星球最大空间
if (planet.isMoon) {
@@ -133,7 +141,13 @@ export const processGameUpdate = (
})
// 检查研究队列
const updatedResearchQueue = researchLogic.completeResearchQueue(player.researchQueue, player.technologies, now, onPointsEarned)
const updatedResearchQueue = researchLogic.completeResearchQueue(
player.researchQueue,
player.technologies,
now,
onPointsEarned,
onCompleted
)
return {
updatedResearchQueue