using UnityEngine;
using GoogleMobileAds.Api;
using System;

public class AdManager : MonoBehaviour
{
    private RewardedInterstitialAd rewardedInterstitialAd;
    private string adUnitId = "ca-app-pub-3940256099942544/5354046379"; // 테스트 광고 ID

    void Start()
    {
        // Google Mobile Ads 초기화
        MobileAds.Initialize(initStatus => {  });

        // 광고 로드
        LoadRewardedInterstitialAd();
    }

    // 보상형 전면 광고 로드
    public void LoadRewardedInterstitialAd()
    {
        if (rewardedInterstitialAd != null)
        {
            rewardedInterstitialAd.Destroy();  // 기존 광고 객체 해제
            rewardedInterstitialAd = null;
        }
        
        AdRequest request = new AdRequest();

        RewardedInterstitialAd.Load(adUnitId, request,
            (RewardedInterstitialAd ad, LoadAdError error) =>
            {
                if (error != null)
                {
                    Debug.LogError("보상형 전면 광고 로드 실패: " + error);
                    return;
                }

                rewardedInterstitialAd = ad;

                // 광고 종료 이벤트 설정
                rewardedInterstitialAd.OnAdFullScreenContentClosed += HandleAdClosed;
            });
    }

    // 보상형 전면 광고 실행
    public void ShowRewardedInterstitialAd()
    {
        if (rewardedInterstitialAd != null && rewardedInterstitialAd.CanShowAd())
        {
            rewardedInterstitialAd.Show((Reward reward) =>  //서버에서 500코인을 고정으로 반환하기 때문에 reward는 사용하지 않음.
            {
                // 코인 지급 로직
                GrantReward();
            });
        }
        else
        {
            Debug.Log("보상형 전면 광고가 아직 로드되지 않았습니다.");
        }
    }

    // 광고 닫힘 이벤트 처리
    private void HandleAdClosed()
    {
        LoadRewardedInterstitialAd(); // 광고가 닫힌 후 다시 로드
    }

    // 코인 지급 함수
    private void GrantReward()
    {
        NetworkManager.Instance.WatchAdForCoins((coinsAdded) =>
        {
            // UI 업데이트
            GameManager.Instance.panelManager.UpdateCoinsPanelUI(coinsAdded);
        }, () =>
        {
            Debug.Log("광고 시청 후 코인 추가 실패");
        });
    }
}