using System.Collections.Generic;
using System.Linq;
using Unity.Mathematics;
using UnityEngine;

[CreateAssetMenu(menuName = "Game/Battler Aspects/Create ARaceBattlerAspect", fileName = "ARaceBattlerAspect",
    order = 0)]
public class Species : ABattlerAspect
{
    [SerializeField] string[] _validNames = {"None"};
    [SerializeField] List<GameObject> _models;

    public string DisplayName = "None";

    public Color DisplayColor = Color.white;

    public BattlerStats BattlerStatChanges;

    public string GetModelName(int wins)
    {
        if (_models == null || _models.Count == 0)
            return DisplayName;
        
        if (_models.Count > wins)
            return _models[wins].name;
        return _models.Last().name;
    }

    public bool IsValidForText(string text)
    {
        for (int i = 0; i < _validNames.Length; i++)
            if (text == _validNames[i])
                return true;
        return false;
    }

    void OnValidate()
    {
        DisplayName = this.name;
        for (int validNameIndex = 0; validNameIndex < _validNames.Length; validNameIndex++)
        {
            var validName = _validNames[validNameIndex];
            _validNames[validNameIndex] = validName.ToLower();
        }
    }

    public BattlerStats GetBattlerStatChanges(int winMultiplier)
    {
        if (winMultiplier > 3)
            winMultiplier = 3;
        return BattlerStatChanges * winMultiplier;
    }
}