/** * 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; // Action processing processAction(action: ActionResponse): ActionResult; // State management saveGame(filename: string): Promise; loadGame(filename: string): Promise; // Helper methods for world interaction getAvailableActions(): string[]; getVisibleObjects(): string[]; getVisibleCharacters(): string[]; getCurrentRoomDescription(): string; // Game flow start(): Promise; // Returns introduction text 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; }