using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using Networking;
using Networking.Server;

public class LobbyUIController : MonoBehaviour
{



    [SerializeField]
    private ClientList Clients;

    [SerializeField]
    private string SceneToStart;

    [Header("UI Elements")]
    [SerializeField]
    private TextMeshProUGUI IPText;

    [SerializeField]
    private Transform Content;

    [SerializeField]
    private GameObject ClientTag;

    [SerializeField]
    private Color[] PlayerColors;

    // Start is called before the first frame update
    void Start()
    {
        IPText.text = "Lobby - " + Networking.Utility.GetIP(Networking.Utility.ADDRESSFAM.IPv4);

    }

    private void OnEnable()
    {
        Clients.OnClientsChange += DisplayClients;
        DisplayClients(Clients.ConnectedClients);
    }

    private void OnDisable()
    {
        Clients.OnClientsChange -= DisplayClients;
    }


    private void DisplayClients(List<ClientData> data)
    {
        Debug.Log("Updating Connected Clients");
        foreach (Transform child in Content)
            if (child.gameObject != ClientTag)
                Destroy(child.gameObject);


        for (int i = 0; i < Clients.ConnectedClients.Count; i++)
        {
            ClientData client = Clients.ConnectedClients[i];
            client.Color = PlayerColors[i % PlayerColors.Length];

            GameObject clientObject = Instantiate(ClientTag, Content);
            TextMeshProUGUI clientText = clientObject.GetComponent<TextMeshProUGUI>();
            clientText.text = client.Name;
            clientText.color = client.Color;
            clientObject.SetActive(true);
        }





    }

    public void OnClick_StartGame()
    {
        UnityEngine.SceneManagement.SceneManager.LoadScene(SceneToStart);
    }


}
