using Lovense.UnityKit;
using Lovense.UnityKit.OSX;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.Android;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class OSXLovenseController : MonoBehaviour
{
   
    public static bool isFirstEnter = true;
    List<OSXLovenseItem> uiList = new List<OSXLovenseItem>();

    [SerializeField]
    public Transform content;
    [SerializeField]
    public Text title;
    [SerializeField]
    public OSXLovenseItem newToysObj;
    

    public int accessAccount;
    private void Awake()
    {
        for(int i = 0; i < uiList.Count; i ++)
        {
            OSXLovenseItem item = uiList[i];
            Destroy(item);
        }
        uiList.Clear();
        title.text = "toys list";
        if(LovenseOSXTools.allToys.Count > 0 )
        {
            OnGetToysEvent(null);
        }
        LovenseOSXTools.onOSXGetToysEvent.AddListener(OnGetToysEvent);
    }

    public void OnGetToysEvent(LovenseOSXToy newToy)
    {
        for (int i = 0; i < LovenseOSXTools.allToys.Count; i++)
        {
            LovenseOSXToy toy = LovenseOSXTools.allToys[i];
            OSXLovenseItem newObject;
            if (i < uiList.Count)
            {
                OSXLovenseItem ui = uiList[i];
                ui.gameObject.SetActive(true);
                ui.SetToys(toy);
            }
            else
            {
                newObject = GameObject.Instantiate(newToysObj, content);
                if (newObject != null)
                {
                    newObject.gameObject.SetActive(true);
                    newObject.SetToys(toy);
                    uiList.Add(newObject);
                }
            }
        }
        if (LovenseOSXTools.allToys.Count < uiList.Count)
        {
            for (int i = LovenseOSXTools.allToys.Count; i < uiList.Count; i++)
            {
                uiList[i].gameObject.SetActive(false);
            }
        }
    }

    // Start is called before the first frame update
    void Start()
    {
       
    }


    // Update is called once per frame
    void Update()
    {
        
    }


    public void OnFinishFunc()
    {
        title.text = "toys list";
    }

    public void OnStartScanClick()
    {
        title.text = "Searching toys...";
        LovenseOSXTools.GetInstance().SearchToys();
    }

    public void OnStopScanClick()
    {
        title.text = "toys list";
        LovenseOSXTools.GetInstance().StopSearch();
    }


    public void OnControlClick()
    {
        List<LovenseOSXToy> ids = new List<LovenseOSXToy>();
        List<string> names = new List<string>();
        for (int i = 0; i < uiList.Count; i++)
        {
            OSXLovenseItem item = uiList[i];
            if (item.gameObject.activeInHierarchy && item.IsCheck())
            {
                ids.Add(item.GetToy());
                names.Add(item.GetToyName());
            }
        }
        OSXGlobal.GetInstance().thisToy = null;
        OSXGlobal.GetInstance().thisToys = ids;
        OSXGlobal.GetInstance().thisToysNames = names;
        SceneManager.LoadScene("LovenseOSXScene1");
    }
}
