using UnityEngine;
using UnityEngine.UI;
using GameAnvil;
using GameAnvil.User;

public class QuickConnectSample : MonoBehaviour
{

    public InputField ipInputField;
    public InputField portInputField;
    [Space]
    public InputField accountIdInputField;
    public InputField deviceIdInputField;
    public InputField passwordIntputField;
    [Space]
    public InputField userTypeIntputField;
    public InputField channelIdIntputField;
    public InputField serviceNameInputField;

    void Start()
    {


        GameAnvilConnector.getInstance().userType = "USER_TYPE_SYNC";
        GameAnvilConnector.getInstance().channelId = "";
        GameAnvilConnector.getInstance().serviceName = "Sync";

        ipInputField.text = GameAnvilConnector.getInstance().ip;
        portInputField.text = GameAnvilConnector.getInstance().port.ToString();

        accountIdInputField.text = GameAnvilConnector.getInstance().accountId;
        deviceIdInputField.text = GameAnvilConnector.getInstance().deviceId;
        passwordIntputField.text = GameAnvilConnector.getInstance().password;

        userTypeIntputField.text = GameAnvilConnector.getInstance().userType;
        channelIdIntputField.text = GameAnvilConnector.getInstance().channelId;
        serviceNameInputField.text = GameAnvilConnector.getInstance().serviceName;

        ipInputField.onValueChanged.AddListener(delegate { ipChanged(); });
        portInputField.onValueChanged.AddListener(delegate { portChanged(); });

        accountIdInputField.onValueChanged.AddListener(delegate { accountIdChanged(); });
        deviceIdInputField.onValueChanged.AddListener(delegate { deviceIdChanged(); });
        passwordIntputField.onValueChanged.AddListener(delegate { passwordChanged(); });

        userTypeIntputField.onValueChanged.AddListener(delegate { userTypeChanged(); });
        channelIdIntputField.onValueChanged.AddListener(delegate { channelIdChanged(); });
        serviceNameInputField.onValueChanged.AddListener(delegate { serviceNameChanged(); });

        FindObjectOfType<GameAnvilConnector>().OnLogMesseage.AddListener(log => Debug.Log("OnLogMesseage test : " + log));
    }

    void ipChanged()
    {
        GameAnvilConnector.getInstance().ip = ipInputField.text;
    }

    void portChanged()
    {
        if (!int.TryParse(portInputField.text, out GameAnvilConnector.getInstance().port))
        {
            GameAnvilConnector.getInstance().port = 0;
        }
    }

    void accountIdChanged()
    {
        GameAnvilConnector.getInstance().accountId = accountIdInputField.text;
    }

    void deviceIdChanged()
    {
        GameAnvilConnector.getInstance().deviceId = deviceIdInputField.text;
    }

    void passwordChanged()
    {
        GameAnvilConnector.getInstance().password = passwordIntputField.text;
    }

    void userTypeChanged()
    {
        GameAnvilConnector.getInstance().userType = userTypeIntputField.text;
    }

    void channelIdChanged()
    {
        GameAnvilConnector.getInstance().channelId = channelIdIntputField.text;
    }

    void serviceNameChanged()
    {
        GameAnvilConnector.getInstance().serviceName = serviceNameInputField.text;
    }

    public void QuickConnect()
    {
        GameAnvilConnector.getInstance().QuickConnect(DelOnQuickConnect);
    }

    void DelOnQuickConnect(GameAnvilConnector.ResultCodeQuickConnect resultCode, UserAgent userAgent, GameAnvilConnector.QuickConnectResult quickConnectResult)
    {
        Debug.Log(resultCode);
        if (userAgent != null)
            Debug.Log(userAgent);
        if (quickConnectResult != null)
            Debug.Log(quickConnectResult);
    }
}