using System;
using System.Collections;
using System.Collections.Generic;
using MPStudio;
using UnityEngine;
using UnityEngine.Serialization;


[DefaultExecutionOrder(-1)]
    public class LanguageManager : MonoBehaviour
    {

        public static LanguageManager Inst;
        
        


     // [HideInInspector]  public int LanguageSelectId;

        public virtual void Awake()
        {
            if (Inst == null)
            {
                Inst = this;
            }
            else if (Inst != this)
            {
                Destroy(gameObject);
            }
  
        }

        private void Start()
        {

        }

        public void InitLanguage()
        {
            if (SaveManager.Inst.testData.languageID == (-1))
            {
                print("需要自动设置语");
                //需要自动
                AutoSetLanguageId();
            }
            else
            {
                print("不需要自动设置语");
            }
        }

        private void AutoSetLanguageId()
        {
            switch (Application.systemLanguage)
            {
                case SystemLanguage.Chinese:
                case SystemLanguage.ChineseSimplified:
                    SaveManager.Inst.testData.languageID = 0;
                    break;

                case SystemLanguage.English:
                    SaveManager.Inst.testData.languageID = 1;
                    break;
                
                case SystemLanguage.ChineseTraditional:
                    SaveManager.Inst.testData.languageID = 2;
                    break;

                default:
                    SaveManager.Inst.testData.languageID = 1;
                    break;
            }
            
            SaveManager.Inst.SaveTestData();
        }

        public string GetMessage(int messageId, List<string> datas = null)
        {
            var data = LanguageTable.Datas.Find(item => item.ID == $"{messageId}");

            int LanguageSelectId = SaveManager.Inst.testData.languageID;
            //print("id is "+":"+LanguageSelectId);
            
            if (LanguageSelectId == 0)
            {
                return data.ChineseSimplified;
            }
            else if (LanguageSelectId == 1)
            {
                return data.English;
               
            }
            else if (LanguageSelectId == 2)
            {
                return data.ChineseTraditional;
            }

            return "";
        }

        public string FillMessage(params object[] paras)
        {
            int id = (int)paras[0];
            string txtContent = GetMessage(id);

            if (paras.Length == 1)
            {
                return txtContent;
            }
            else if (paras.Length == 2)
            {
                return txtContent.Replace("{1}", paras[1].ToString());
            }else if (paras.Length == 3)
            {
                txtContent=txtContent.Replace("{1}", paras[1].ToString());
                return txtContent.Replace("{2}", paras[1].ToString());
            }

            return "";
        }

    }
