package com.gogame.minesweeper

import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import com.gogame.minesweeper.ad.AdShowFailed
import com.gogame.minesweeper.ad.AdsInsUtil
import com.gogame.minesweeper.ad.LoadListener
import com.gogame.minesweeper.ad.ShowListener
import com.gogame.minesweeper.databinding.ActivitySplashBinding
import com.thinkup.core.api.TUAdInfo
import kotlin.random.Random

class SplashActivity : BaseActivity() {

    companion object {
        private const val AD_TIMEOUT = 15000L // 广告加载超时时间 15 秒
    }

    private lateinit var binding: ActivitySplashBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivitySplashBinding.inflate(layoutInflater)
        enableEdgeToEdge()
        setContentView(binding.root)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }
        val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView)
        windowInsetsController.isAppearanceLightStatusBars = true//状态栏文字颜色
        loadSplashAd()
    }


    private val adHandler = Handler(Looper.getMainLooper())
    private val adTimeoutRunnable = Runnable {
        navigateToNext() // 超时直接跳转
    }

    private fun loadSplashAd() {
        adHandler.postDelayed(adTimeoutRunnable, AD_TIMEOUT)

        // 生成一个随机索引
        val randomIndex = Random.nextInt(AdsInsUtil.Placement.adPlaceAllList.size)
        // 获取随机的广告位
        val randomAdPlace = AdsInsUtil.Placement.adPlaceAllList[randomIndex]
        AdsInsUtil.loadAd(
            act = this,
            adID =randomAdPlace,
            loadListener = object : LoadListener {
                override fun loaded(ad: TUAdInfo) {
                    adHandler.removeCallbacks(adTimeoutRunnable)
                    showSplashAd(randomAdPlace)
                }

                override fun loadFailed(error: String) {
                    adHandler.removeCallbacks(adTimeoutRunnable)
                    navigateToNext() // 加载失败直接跳转
                }
            })
    }

    private fun showSplashAd(randomAdPlace: String) {
        AdsInsUtil.showAd(
            act = this,
            adID = randomAdPlace,
            listener = object : ShowListener {
                override fun onAdShown(ad: TUAdInfo?) {
                }

                override fun onAdShowFailed(error: AdShowFailed?) {
                    navigateToNext() // 展示失败也直接跳转
                }

                override fun onAdClosed() {
                    navigateToNext() // 广告关闭后跳转
                }
            })
    }

    private var hasNavigated = false

    //保证只跳转一次
    private fun navigateToNext() {
        if (hasNavigated) return
        hasNavigated = true
        startActivity(Intent(this, MainActivity::class.java))
        finish()
    }

    override fun shouldInterceptBackPress(): Boolean = true
    override fun onInterceptBackPressed() {

    }

    override fun onDestroy() {
        super.onDestroy()
        adHandler.removeCallbacks(adTimeoutRunnable)
    }
}