using RootMotion.FinalIK;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEditor;
using UnityEngine;

public class StepManager : MonoBehaviour
{
    public static StepManager Instance { get; private set; }
    /// <summary> �û�ID </summary>
    public static string userID;
    /// <summary> ʱ��� </summary>
    public static long timeStamp;
    /// <summary> �Ƿ�ʼ��ʼ������ </summary>
    public static bool isInit = true;
    /// <summary> �Ƿ���������װ���� </summary>
    public static bool isFaceBuidling = false;
    /// <summary> ������������� </summary>
    public static GameObject player_dress;
    /// <summary> ���γ����ƶ�����ģ�� </summary>
    public static GameObject player;
    /// <summary> ������װ�ƹ� </summary>
    public static Light faceBuildLight;
    /// <summary> ���������ʼ��ת </summary>
    public static Quaternion initRot;
    /// <summary> ����״̬ö�� </summary>
    public enum RequestState
    {
        Success,
        /// <summary> ���ڰ����� </summary>
        HashFailed,
        /// <summary> Mac��ַ���� </summary>
        MacFailed,
        /// <summary> ����ʱ </summary>
        TimeOut,
        /// <summary> Ƶ�������������� </summary>
        Frequently,
        /// <summary> ��������ʧ�� </summary>
        URLFailed
    }
    /// <summary> ��ǰ����״̬ </summary>
    public static RequestState requestState=RequestState.URLFailed;

    public static int requestCode=0;

    private async void Start()
    {
        Instance = this;
        //await UIManager.Instance.ShowUI(WindowID.FaceBuildPanel);
        var characterRender = await YooAssetManager.Instance.LoadAsset<GameObject>("player_dress");
        player_dress = Instantiate(characterRender);
        player_dress.transform.position = new Vector3(7.3f, 1000.29f, 109.78f);
        initRot = player_dress.transform.rotation;
        CharacterManager.Inst.MatchCharacterRender(player_dress.GetComponent<CharacterRender>());
        faceBuildLight = GameObject.Find("FaceBuild Light").GetComponent<Light>();
        CharacterManager.Inst.GoodsReadFromFile(player_dress.GetComponent<CharacterRender>());
        //Debug.Log(faceBuildLight);
    }

    public async void Init()
    {
        RenderSettings.skybox = await YooAssetManager.Instance.LoadAsset<Material>("Skybox Cubemap Extended Mat");
        var characterRender = await YooAssetManager.Instance.LoadAsset<GameObject>("player1");
        player = Instantiate(characterRender);
        player.transform.position = new Vector3(24.162f, 3f, 75.317f);
        player.transform.GetChild(0).GetComponent<MoveController>().camRoot = GameObject.Find("CamRoot").transform;
        CharacterDataReMatch();
    }

    private async void Update()
    {
        //if (Input.GetKeyDown(KeyCode.Q))
        //{
        //    await UIManager.Instance.ShowUI(WindowID.FaceBuildPanel);
        //    CharacterManager.UICam.gameObject.SetActive(true);
        //}
    }

    /// <summary>
    /// ���¸�ֵ��ǰ��ɫ��������װ������/���ý�ɫ��ת
    /// </summary>
    public void CharacterDataReMatch()
    {
        if (player) 
        {
            CharacterManager.Inst.MatchCharacterRender(player_dress.GetComponent<CharacterRender>());

            List<string> strs=new List<string>(player.transform.GetChild(0).GetComponent<CharacterRender>().dressRenders.Keys);
            for (int i = 0; i < strs.Count; i++) 
            {
                string key = strs[i];
                player.transform.GetChild(0).GetComponent<CharacterRender>().dressRenders[key].Dispose();
            }
            player.transform.GetChild(0).GetComponent<CharacterRender>().dressRenders.Clear();
            player_dress.transform.rotation= initRot;
            CharacterManager.Inst.CharacterClothReMatch(player.transform.GetChild(0).GetComponent<CharacterRender>());
        }
    }


}