/** * Interfaces for the game engine */ import { WorldModel, GameState } from './world-model'; import { ActionResponse, NarrativeResponse } from './llm'; export interface ActionResult { success: boolean; message: string; stateChanged: boolean; newState?: GameState; } export interface GameEngine { loadWorld(worldModelPath: string): Promise; getCurrentState(): GameState; getWorldModel(): WorldModel; processAction(action: ActionResponse): ActionResult; saveGame(filename: string): Promise; loadGame(filename: string): Promise; getAvailableActions(): string[]; getVisibleObjects(): string[]; getVisibleCharacters(): string[]; getCurrentRoomDescription(): string; start(): Promise; end(): void; } export interface GameSession { engine: GameEngine; history: { playerInput: string; actionResponse: ActionResponse; actionResult: ActionResult; narrativeResponse: NarrativeResponse; }[]; startTime: Date; lastInteractionTime: Date; } export interface ActionHandler { execute(gameState: GameState, worldModel: WorldModel, action: ActionResponse): ActionResult; }