using UnityEngine;

[CreateAssetMenu(fileName = "NPCData", menuName = "Data/NPCData")]
public class NPCData : ScriptableObject
{
    public enum Language { EN, KO, ES, ZH_CN, JA }

    public string NPCName;
    public GameObject Prefab;
    public float MoveSpeed = 2f;

    // Legacy (default EN)
    public StateDialogue[] StateDialogues;

    // Localized dialogues
    public LocalizedDialogue[] LocalizedDialogues;

    [System.Serializable]
    public class StateDialogue
    {
        public NPC.State State;
        public int AnimationIndex;
        public string[] Dialogues;
    }

    [System.Serializable]
    public class LocalizedDialogue
    {
        public Language Lang;
        public StateDialogue[] StateDialogues;
    }

    public string GetRandomDialogue(NPC.State state, Language lang = Language.EN)
    {
        // Try localized first
        if (LocalizedDialogues != null)
        {
            foreach (var loc in LocalizedDialogues)
            {
                if (loc.Lang != lang) continue;
                foreach (var sd in loc.StateDialogues)
                {
                    if (sd.State == state && sd.Dialogues.Length > 0)
                        return sd.Dialogues[Random.Range(0, sd.Dialogues.Length)];
                }
            }
        }

        // Fallback to legacy (EN)
        if (StateDialogues != null)
        {
            foreach (var sd in StateDialogues)
            {
                if (sd.State == state && sd.Dialogues.Length > 0)
                    return sd.Dialogues[Random.Range(0, sd.Dialogues.Length)];
            }
        }

        return null;
    }

    public int GetAnimationIndex(NPC.State state)
    {
        if (StateDialogues != null)
        {
            foreach (var sd in StateDialogues)
            {
                if (sd.State == state)
                    return sd.AnimationIndex;
            }
        }
        return 0;
    }
}
