// /server/data/dataUtils.js

// Импортируем непосредственно определенные статы и способности
const { elenaBaseStats, balardBaseStats, almagestBaseStats } = require('./characterStats');
const { elenaAbilities, balardAbilities, almagestAbilities } = require('./characterAbilities');
// const { tauntSystem } = require('./taunts'); // Если нужны утилиты для насмешек

/**
 * Получает полный набор данных для персонажа по его ключу.
 * Включает базовые статы и список способностей.
 * @param {string} characterKey - Ключ персонажа ('elena', 'balard', 'almagest').
 * @returns {{baseStats: object, abilities: Array<object>}|null} Объект с данными или null, если ключ неизвестен.
 */
function getCharacterData(characterKey) {
    if (!characterKey) {
        console.warn("[DataUtils] getCharacterData_called_with_null_or_undefined_key");
        return null;
    }
    switch (characterKey.toLowerCase()) { // Приводим к нижнему регистру для надежности
        case 'elena':
            return { baseStats: elenaBaseStats, abilities: elenaAbilities };
        case 'balard':
            return { baseStats: balardBaseStats, abilities: balardAbilities };
        case 'almagest':
            return { baseStats: almagestBaseStats, abilities: almagestAbilities };
        default:
            console.error(`[DataUtils] getCharacterData: Unknown character key "${characterKey}"`);
            return null;
    }
}

/**
 * Получает только базовые статы для персонажа по его ключу.
 * @param {string} characterKey - Ключ персонажа.
 * @returns {object|null} Объект базовых статов или null.
 */
function getCharacterBaseStats(characterKey) {
    const charData = getCharacterData(characterKey);
    return charData ? charData.baseStats : null;
}

/**
 * Получает только список способностей для персонажа по его ключу.
 * @param {string} characterKey - Ключ персонажа.
 * @returns {Array<object>|null} Массив способностей или null.
 */
function getCharacterAbilities(characterKey) {
    const charData = getCharacterData(characterKey);
    return charData ? charData.abilities : null;
}

/**
 * Получает имя персонажа по его ключу.
 * @param {string} characterKey - Ключ персонажа.
 * @returns {string|null} Имя персонажа или null.
 */
function getCharacterName(characterKey) {
    const baseStats = getCharacterBaseStats(characterKey);
    return baseStats ? baseStats.name : null;
}

// Можно добавить другие утилитарные функции по мере необходимости,
// например, для поиска конкретной способности по ID у персонажа,
// или для получения данных для инициализации gameState и т.д.

module.exports = {
    getCharacterData,
    getCharacterBaseStats,
    getCharacterAbilities,
    getCharacterName
    // ...другие экспортируемые утилиты
};