using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 注意:尽量用协程代替动画,直接用动画同步会出现各客户端动画播放不一致的情况。
/// </summary>
public class FunctionSync_Animator : OneValueSyncObject
{
    Animator anim;
    List<string> state = new List<string>();
    string currentTriger;
    private void Start()
    {
        Init();
    }

    public void Init()
    {
        if (!hasInit)
        {
            anim = GetComponent<Animator>();
            InitDynamic("animator" + gameObject.name, CallBack, ValueType.String);
        }
    }

    public void SetAnimatorState(string TriggerParameter)
    {
        if (!state.Contains(mystring))
        {
            state.Add(mystring);
        }
        currentTriger = mystring;

        anim.SetTrigger(TriggerParameter);
        mystring = TriggerParameter;
        SendSync();
    }

    /// <summary>
    /// 回调
    /// </summary>
    /// <param name="id"></param>
    private void CallBack(string id,bool isEnterRoom)
    {
        if(!state.Contains(mystring))
        {
            state.Add(mystring);
            currentTriger = mystring;
            anim.SetTrigger(mystring);
            Debug.Log("动画同步:" + id + "," + mystring);
        }
        else
        {
            if (currentTriger!=mystring)
            {
                currentTriger = mystring;
                anim.SetTrigger(mystring);
                Debug.Log("动画同步:" + id + "," + mystring);
            }
        }
    }
}