56 lines
1.3 KiB
TypeScript
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;
|
|
} |