import axios from 'axios';
import { GameRule } from '../../domain/interfaces/GameRule';
import { GameType } from '../../domain/enums/GameType';

export class RestGameRuleService implements GameRule {
    private readonly baseUrl: string;
    private readonly gameType: GameType;

    constructor(gameType: GameType) {
        this.gameType = gameType;
        this.baseUrl = this.getBaseUrl(gameType);
    }

    private getBaseUrl(gameType: GameType): string {
        switch (gameType) {
            case GameType.CHAIN_POEM:
                return process.env.CHAIN_POEM_API_URL || 'http://localhost:3001/api/chain-poem';
            case GameType.FLOWER_POEM:
                return process.env.FLOWER_POEM_API_URL || 'http://localhost:3001/api/flying-flower';
            case GameType.POEM_MATCHING:
                return process.env.POEM_MATCHING_API_URL || 'http://localhost:3001/api/poem-matching';
            default:
                throw new Error('无效的游戏类型');
        }
    }

    async validateAnswer(historyAnswers: string[], currentAnswer: string, initialCondition: string): Promise<boolean> {
        try {
            const response = await axios.post(`${this.baseUrl}/check-answer`, {
                answer: currentAnswer,
                historyAnswers,
                initialCondition
            });
            return response.data.isCorrect;
        } catch (error) {
            console.error('验证答案时发生错误:', error);
            return false;
        }
    }

    async validateInitialCondition(initialCondition: string): Promise<boolean> {
        try {
            const response = await axios.post(`${this.baseUrl}/check-creation`, {
                initialCondition
            });
            return response.data.isValid;
        } catch (error) {
            console.error('验证初始条件时发生错误:', error);
            return false;
        }
    }
} 