using System;

using UnityEngine;
using UnityEngine.UI;

public class UICharacterSlot : MonoBehaviour
{
    public Button SlotButton = null;

    public GameObject FilledGroup = null;

    public GameObject EmptyGroup = null;

    public GameObject Highlight = null;

    public Text InitialText = null;

    public Text NameText = null;

    public Button DeleteButton = null;

    public string Uuid { get; private set; }

    public string InDate { get; private set; }

    public string Nickname { get; private set; }


    public void SetCharacter(string uuid, string inDate, string nickname, Action<UICharacterSlot> onSelected, Action<UICharacterSlot> onDelete)
    {
        Uuid = uuid;
        InDate = inDate;
        Nickname = nickname;

        FilledGroup.SetActive(true);
        EmptyGroup.SetActive(false);
        Highlight.SetActive(false);

        InitialText.text = string.IsNullOrEmpty(nickname) ? "?" : nickname.Substring(0, 1).ToUpper();
        NameText.text = nickname;

        SlotButton.onClick.RemoveAllListeners();
        SlotButton.onClick.AddListener(() =>
        {
            if (onSelected != null)
            {
                onSelected(this);
            }
        });

        DeleteButton.onClick.RemoveAllListeners();
        DeleteButton.onClick.AddListener(() =>
        {
            if (onDelete != null)
            {
                onDelete(this);
            }
        });
    }

    public void SetEmpty(Action onCreate)
    {
        Uuid = string.Empty;
        InDate = string.Empty;
        Nickname = string.Empty;

        FilledGroup.SetActive(false);
        EmptyGroup.SetActive(true);
        Highlight.SetActive(false);

        SlotButton.onClick.RemoveAllListeners();
        SlotButton.onClick.AddListener(() =>
        {
            if (onCreate != null)
            {
                onCreate();
            }
        });
    }

    public void SetSelected(bool selected)
    {
        Highlight.SetActive(selected);
    }

}
