/** * IUFOBehaviorRunner - Executes UFO behavior state updates * * Each behavior has a start* and update* method pair. * Behaviors modify UFO state directly and may transition to other states. */ import type { UFO, UFOConfig, StarInfo, EventPosition } from "../domain/ufo-types.js"; import type { Dimensions } from "../../../../core/domain/types.js"; import type { IUFOMoodManager } from "./IUFOMoodManager.js"; import type { IUFOStarScanner } from "./IUFOStarScanner.js"; import type { ICosmicCalculationService } from "./ICosmicCalculationService.js"; /** Callbacks for state transitions that need to happen in UFOSystem */ export interface BehaviorCallbacks { resumeWandering: () => void; startExiting: (exitType?: string) => void; startPause: () => void; startNapping: () => void; startCelebrating: () => void; startHiding: () => void; startGivingUp: () => void; findNearbyBrightStar: () => StarInfo | null; findStarNearPosition: (x: number, y: number) => StarInfo | null; rememberScannedStar: (x: number, y: number) => void; angleDiff: (from: number, to: number) => number; } /** Context passed to behavior methods */ export interface BehaviorContext { ufo: UFO; config: UFOConfig; dimensions: Dimensions; speedMult: number; moodManager: IUFOMoodManager; starScanner: IUFOStarScanner; calculationService: ICosmicCalculationService; callbacks: BehaviorCallbacks; eventProvider: (() => EventPosition | null) | null; starProvider: (() => StarInfo[]) | null; } export interface IUFOBehaviorRunner { startChasing(ctx: BehaviorContext, event: EventPosition): void; updateChasing(ctx: BehaviorContext): void; startGivingUp(ctx: BehaviorContext): void; updateGivingUp(ctx: BehaviorContext): void; startCollectingSample(ctx: BehaviorContext, event: EventPosition): void; updateCollectingSample(ctx: BehaviorContext): void; startPhotographing(ctx: BehaviorContext, star: StarInfo): void; updatePhotographing(ctx: BehaviorContext): void; startInvestigatingGround(ctx: BehaviorContext): void; updateInvestigatingGround(ctx: BehaviorContext): void; startPanicking(ctx: BehaviorContext, fromX: number, fromY: number): void; updatePanicking(ctx: BehaviorContext): void; startSurfing(ctx: BehaviorContext, event: EventPosition): void; updateSurfing(ctx: BehaviorContext): void; startFollowing(ctx: BehaviorContext, event: EventPosition): void; updateFollowing(ctx: BehaviorContext): void; startCommunicating(ctx: BehaviorContext, star: StarInfo): void; updateCommunicating(ctx: BehaviorContext): void; startNapping(ctx: BehaviorContext): void; updateNapping(ctx: BehaviorContext): void; startCelebrating(ctx: BehaviorContext): void; updateCelebrating(ctx: BehaviorContext): void; startHiding(ctx: BehaviorContext): void; updatePeekaboo(ctx: BehaviorContext): void; } //# sourceMappingURL=IUFOBehaviorRunner.d.ts.map