Files
ai.interactive.fiction/src/interfaces/engine.ts
T

56 lines
1.3 KiB
TypeScript

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