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

namespace Networking.Client
{
    [CreateAssetMenu(menuName = "Major Project/Networking/ClientObject", order = 150)]
    public class ClientObject : ScriptableObject
    {

        #region Inspector Fields
        [Header("Connection Settings")]
        [SerializeField]
        [Tooltip("Server Address to Connect to")]
        private string ServerIP;

        [SerializeField]
        [Tooltip("Port to connect on")]
        private int Port;

        [Header("Player Settings")]
        [SerializeField]
        [Tooltip("Player Name")]
        private string DisplayName;

        [SerializeField]
        [Tooltip("Player Color")]
        private Color PlayerColor;
        #endregion Inspector Fields


        #region ReadOnly Variables
        public NetworkClient client { get; private set; }
        public bool isConnected { get { return client != null && client.isConnected; } }
        #endregion ReadOnly Variables


        public void Connect(string serverAddress,int port)
        {
            Debug.Log("Connecting to server: " + serverAddress + ", " + port);
            this.ServerIP = serverAddress;
            this.Port = port;
            client = new NetworkClient();
            client.Configure(TransportConfigure.CreateConfigure(), 1);

            client.Connect(serverAddress, port);
        }

        public void Stop()
        {
            client.Disconnect();
        }

        public void UpdatePlayerDetails(string DisplayName, Color PlayerColor)
        {
            this.DisplayName = DisplayName;
            this.PlayerColor = PlayerColor;
        }



    }

}
