using System.Collections.Generic;
using UnityEngine;
using YachtDice.Dice;

namespace YachtDice.Categories
{
    /// <summary>
    /// Категория Фулл-хаус: 3 одинаковых + 2 одинаковых.
    /// При совпадении возвращает фиксированное число очков.
    /// </summary>
    [CreateAssetMenu(fileName = "FullHouseCategory", menuName = "YachtDice/Categories/Full House")]
    public class FullHouseCategory : CategoryDefinition
    {
        [Header("Scoring")]
        [Tooltip("Фиксированное число очков за фулл-хаус")]
        [SerializeField] private int fixedScore = 25;

        public override int Calculate(IReadOnlyList<IDie> dice)
        {
            int[] values = DiceCheckUtility.ExtractValues(dice);
            return DiceCheckUtility.IsFullHouse(values) ? fixedScore : 0;
        }

#if UNITY_EDITOR
        public static FullHouseCategory CreateForTest(string id, string displayName, int score = 25)
        {
            var so = CreateInstance<FullHouseCategory>();
            so.SetTestData(id, displayName);
            so.fixedScore = score;
            return so;
        }
#endif
    }
}
