using TMPro;
using UnityEngine;
using UnityEngine.UI;

namespace RebocapSdk.DemoScenes
{
    public class DriveDemo : MonoBehaviour
    {
        public Button connectButton;
        private TMP_Text _buttonText;

        public Animator animatorRebocap;

        public uint PortNumber = 7690;

        private SdkManager _sdkManager;

        void Start()
        {
            _buttonText = connectButton.GetComponentInChildren<TMP_Text>();
            _buttonText.text = "connect";
            connectButton.onClick.AddListener(OnButtonClick);
            
            _sdkManager = new SdkManager(PortNumber, HandleConnectStatusChange);
        }

        private void OnButtonClick()
        {
            connectButton.enabled = false;
            _sdkManager.TriggerConnectStatusChange();
        }

        private void HandleConnectStatusChange(bool connected)
        {
            _buttonText.text = connected ? "disconnect" : "connect";
            connectButton.enabled = true;
            // 在这里务必保证，此时的 animatorRebocap 是默认姿态！ 必须要是默认的 T-pose 姿态，否则会出错！
            if (connected) _sdkManager.RegisterAvatar(animatorRebocap, true);
        }

        void Update()
        {
            // update avatar position and posture
            _sdkManager.HandleAvatarUpdate();

            // update ui changed in child threads; todo move this class to MonoBehaviour
            ThreadUIHelper.Instance.Update();
        }

        private void OnApplicationQuit()
        {
            _sdkManager.DestroySdk();
        }
    }
}