// Copyright 2013-2023, AFI.Inc. All rights reserved.

using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

// InGameUI는 InGameScene에서 보이는 UI를 관리하는 클래스입니다.
public class InGameUI : MonoBehaviour {
    [SerializeField] private Button levelButton;
    [SerializeField] private Button atkButton;
    [SerializeField] private Button defButton;
    [SerializeField] private Button spdButton;
    [SerializeField] private Button stageButton;
    [SerializeField] private Button logoutButton;

    // Start is called before the first frame update
    void Start()
    {
        levelButton.GetComponentInChildren<TMP_Text>().text = $"레벨 증가(현재 : {BackendManager.Instance.currentUserData.level.ToString()})";
        atkButton.GetComponentInChildren<TMP_Text>().text = $"공격력 증가(현재 : {BackendManager.Instance.currentUserData.atk.ToString()})";
        defButton.GetComponentInChildren<TMP_Text>().text = $"방어력 증가(현재 : {BackendManager.Instance.currentUserData.def.ToString()})";
        spdButton.GetComponentInChildren<TMP_Text>().text = $"속도 증가(현재 : {BackendManager.Instance.currentUserData.spd.ToString()})";
        stageButton.GetComponentInChildren<TMP_Text>().text = $"스테이지 증가(현재 : {BackendManager.Instance.currentUserData.stage.ToString()})";

        levelButton.onClick.RemoveAllListeners();
        atkButton.onClick.RemoveAllListeners();
        defButton.onClick.RemoveAllListeners();
        spdButton.onClick.RemoveAllListeners();
        stageButton.onClick.RemoveAllListeners();
        logoutButton.onClick.RemoveAllListeners();
        
        levelButton.onClick.AddListener(() => {
            BackendManager.Instance.currentUserData.level++;
            levelButton.GetComponentInChildren<TMP_Text>().text = $"레벨 증가(현재 : {BackendManager.Instance.currentUserData.level.ToString()})";
        });
        
        atkButton.onClick.AddListener(() => {
            BackendManager.Instance.currentUserData.atk++;
            atkButton.GetComponentInChildren<TMP_Text>().text = $"공격력 증가(현재 : {BackendManager.Instance.currentUserData.atk.ToString()})";
        });
        
        defButton.onClick.AddListener(() => {
            BackendManager.Instance.currentUserData.def++;
            defButton.GetComponentInChildren<TMP_Text>().text = $"방어력 증가(현재 : {BackendManager.Instance.currentUserData.def.ToString()})";
        });
        
        spdButton.onClick.AddListener(() => {
            BackendManager.Instance.currentUserData.spd++;
            spdButton.GetComponentInChildren<TMP_Text>().text = $"속도 증가(현재 : {BackendManager.Instance.currentUserData.spd.ToString()})";
        });
        
        stageButton.onClick.AddListener(() => {
            BackendManager.Instance.currentUserData.stage++;
            stageButton.GetComponentInChildren<TMP_Text>().text = $"스테이지 증가(현재 : {BackendManager.Instance.currentUserData.stage.ToString()})";
        });
        
        // 로그아웃 버튼 클릭 시
        logoutButton.onClick.AddListener(() => {
            // 유저 데이터 저장
            BackendManager.Instance.SaveUserData( (success, message) => {
                if (success == false) {
                    AlertUI.Instance.Alert("데이터 저장 에러", message);
                    return;
                }
                
                // 로그아웃
                BackendManager.Instance.Logout( (success2, message2) => {
                    if (success2 == false) {
                        AlertUI.Instance.Alert("로그아웃 에러", message2);
                        return;
                    }

                    AlertUI.Instance.Alert("로그아웃 성공", "저장이 완료되었습니다. 로그아웃되었습니다.", () => SceneManager.LoadScene("CharacterSelectScene"));
                });
            });
        });
    }
}
