Initial commit
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
Reference in New Issue
Block a user