﻿using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

namespace RKOKO.Config.Free.Editor
{
    [Serializable]
    public class LocalizeItem
    {
        public int id;

        public List<string> localizeValues = new List<string>();
    }

    [Serializable]
    public class LocalizeData
    {
        public List<LocalizeItem> data = new List<LocalizeItem>();

        private Dictionary<int, LocalizeItem> valueMap = null;

        private Dictionary<int, LocalizeItem> ValueMap
        {
            get
            {
                if (valueMap == null)
                {
                    valueMap = data.ToDictionary(e => e.id, e => e);
                }

                return valueMap;
            }
        }


        public static LocalizeData FromJson(string json)
        {
            return JsonUtility.FromJson<LocalizeData>(json);
        }

        public string Get(LanguageType language, int key)
        {
            if (ValueMap.TryGetValue(key, out var value))
            {
                var index = (int)language;
                return value.localizeValues.Count > index ? value.localizeValues[index] : "#unknown#";
            }

            return "#unknown#";
        }
    }
}