40 lines
1.2 KiB
TypeScript
40 lines
1.2 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;
|
|
processAction(action: ActionResponse): ActionResult;
|
|
saveGame(filename: string): Promise<void>;
|
|
loadGame(filename: string): Promise<void>;
|
|
getAvailableActions(): string[];
|
|
getVisibleObjects(): string[];
|
|
getVisibleCharacters(): string[];
|
|
getCurrentRoomDescription(): string;
|
|
start(): Promise<string>;
|
|
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;
|
|
}
|