﻿using UnityEngine;
using System;
using UnityEngine.UI;
using System.Linq;
using Stove.StoveSDK;
using System.Collections.Generic;

public class LanguageDialog : MonoBehaviour
{
    public Action<Localization.Language> action;

    public GameObject panel;
    public ToggleGroup toggleGroup;

    public static void Show(Localization.Language currentLanguage, Action<Localization.Language> action)
    {
        Present(currentLanguage, action);
    }

    public static void Present(Localization.Language currentLanguage, Action<Localization.Language> action)
    {
        GameObject languageDialogPanel = GameObject.Find("LanguageDialogPanel");

        Image image = languageDialogPanel.GetComponent<Image>();
        image.enabled = true;

        LanguageDialog languageDialog = languageDialogPanel.GetComponent<LanguageDialog>();
        languageDialog.panel.SetActive(true);
        languageDialog.action = action;

        var toggles = languageDialog.toggleGroup.GetComponentsInChildren<Toggle>();
        foreach (Toggle toggle in toggles)
        {
            if (toggle.name.Equals(currentLanguage.ToString()))
            {
                toggle.isOn = true;
                break;
            }
        }
    }

    public static void Dismiss()
    {
        GameObject languageDialogPanel = GameObject.Find("LanguageDialogPanel");

        Image image = languageDialogPanel.GetComponent<Image>();
        image.enabled = false;

        LanguageDialog languageDialog = languageDialogPanel.GetComponent<LanguageDialog>();
        languageDialog.panel.SetActive(false);
    }

    public void OnClick(int tag)
    {
        Toggle toggle = toggleGroup.ActiveToggles().FirstOrDefault();

        Localization.Language language;
        Enum.TryParse(toggle.name, out language);

        action.Invoke(language);
        Dismiss();
    }

    public void Cancel()
    {
        Dismiss();
    }
}