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

namespace YachtDice.Categories
{
    /// <summary>
    /// Категория верхней секции: суммирует все дайсы с заданным значением.
    /// Используется для Единиц (1), Двоек (2), ... Шестёрок (6).
    /// </summary>
    [CreateAssetMenu(fileName = "SumOfValueCategory", menuName = "YachtDice/Categories/Sum Of Value")]
    public class SumOfValueCategory : CategoryDefinition
    {
        [field: Header("Scoring")]
        [field: Tooltip("Значение грани для суммирования (1-6)")]
        [field: SerializeField, Range(1, 6)] public int TargetValue { get; private set; } = 1;

        public override int Calculate(IReadOnlyList<IDie> dice)
        {
            int sum = 0;
            for (int i = 0; i < dice.Count; i++)
                if (dice[i].Value == TargetValue) sum += TargetValue;
            return sum;
        }

#if UNITY_EDITOR
        public static SumOfValueCategory CreateForTest(string id, string displayName, int target)
        {
            var so = CreateInstance<SumOfValueCategory>();
            so.SetTestData(id, displayName, upperSection: true);
            so.TargetValue = target;
            return so;
        }
#endif
    }
}
