using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Touka
{
    public class TKGSDKCallbackAndroid
    {
    }
    /// 
    /// TGK framework level callback
    /// 
    public class AndroidProxyCallback : AndroidJavaProxy
    {
        public AndroidProxyCallback() : base("com.touka.tkg.idal.ITKGProxyCallback") { }
        // init succ callback
        public void onInitSuccess()
        {
            TKGDebugger.LogDebug("onInitSuccess in AndroidProxyCallback");
            Loom.QueueOnMainThread((pObj) =>
            {
                if (TKGSDKCallback.mInitCallback != null)
                {
                    TKGSDKCallback.mInitCallback.Invoke();
                    TKGSDKCallback.mInitCallback = null;
                }
            }, "");
        }
        // init fail callback
        public void onInitFail()
        {
            TKGDebugger.LogDebug("onInitFail");
            Loom.QueueOnMainThread((pObj) =>
            {
                if (TKGSDKCallback.mInitCallback != null)
                {
                    TKGSDKCallback.mInitCallback.Invoke();
                    TKGSDKCallback.mInitCallback = null;
                }
            }, "");
        }
        // game Activity disable callback
        public void onPause()
        {
            TKGDebugger.LogDebug("onPause");
            Loom.QueueOnMainThread((pObj) =>
            {
                if (TKGSDKCallback.mGameFocusCallback != null)
                {
                    TKGSDKCallback.mGameFocusCallback.Invoke(false);
                    TKGSDKCallback.mGameFocusCallback = null;
                }
            }, "");
        }
        // game Activity visible callback
        public void onResume()
        {
            TKGDebugger.LogDebug("onResume");
            Loom.QueueOnMainThread((pObj) =>
            {
                if (TKGSDKCallback.mGameFocusCallback != null)
                {
                    TKGSDKCallback.mGameFocusCallback.Invoke(true);
                    TKGSDKCallback.mGameFocusCallback = null;
                }
            }, "");
        }
        // pause callback, like stop sound
        public void pauseGame()
        {
            TKGDebugger.LogDebug("pauseGame");
            Loom.QueueOnMainThread((pObj) =>
            {
                if (TKGSDKCallback.mGameFocusCallback != null)
                {
                    TKGSDKCallback.mGameFocusCallback.Invoke(false);
                    TKGSDKCallback.mGameFocusCallback = null;
                }
            }, "");
        }
        // result callback, like replay sound
        public void resumeGame()
        {
            TKGDebugger.LogDebug("resumeGame");
            Loom.QueueOnMainThread((pObj) =>
            {
                if (TKGSDKCallback.mGameFocusCallback != null)
                {
                    TKGSDKCallback.mGameFocusCallback.Invoke(true);
                    TKGSDKCallback.mGameFocusCallback = null;
                }
            }, "");
        }
    }
    /// 
    /// InterAd callback
    /// 
    public class AndroidInterADTKGAdCallback : AndroidJavaProxy
    {
        public AndroidInterADTKGAdCallback() : base("com.touka.tkg.idal.ITKGAdCallback") { }
        public void onClosed()
        {
            TKGDebugger.LogDebug("onClosed");
            Loom.QueueOnMainThread((pObj) =>
            {
                if (TKGSDKCallback.mInterAdCallback != null)
                {
                    TKGSDKCallback.mInterAdCallback.Invoke();
                    TKGSDKCallback.mInterAdCallback = null;
                }
            }, "");
        }
        public void onClicked()
        {
            TKGDebugger.LogDebug("onClicked");
        }
        // click to skip ad
        public void onSkip()
        {
            TKGDebugger.LogDebug("onSkip");
        }
        public void onLoaded()
        {
            TKGDebugger.LogDebug("onLoaded");
        }
        public void onLoadFail(int code, string msg)
        {
            TKGDebugger.LogDebug("onLoadFail");
        }
        public void onShow()
        {
            TKGDebugger.LogDebug("onShow");
        }
        public void onShowFail(int code, string msg)
        {
            TKGDebugger.LogDebug("onShowFail");
            if (code == (int)AdShowFailCodeType.AdIsNotReady)
            {
                TKGDebugger.LogDebug("iv show failed - AdIsNotReady");
            }else if(code == (int)AdShowFailCodeType.AdIsReadyCannotShow)
            {
                TKGDebugger.LogDebug("iv show failed - AdIsReadyCannotShow");
            }
            else
            {
                TKGDebugger.LogDebug("iv show failed - AdShowFailReal");
            }
            Loom.QueueOnMainThread((pObj) =>
            {
                if (TKGSDKCallback.mInterAdCallback != null)
                {
                    TKGSDKCallback.mInterAdCallback.Invoke();
                    TKGSDKCallback.mInterAdCallback = null;
                }
            }, "");
        }
    }
    /// 
    /// RewardAd callback
    /// 
    public class AndroidRewardADTKGAdCallback : AndroidJavaProxy
    {
        public AndroidRewardADTKGAdCallback() : base("com.touka.tkg.idal.ITKGRewardADCallback") { }
        public void onClosed()
        {
            TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onClosed");
        }
        public void onClicked()
        {
            TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onClicked");
        }
        // click to skip ad
        public void onSkip()
        {
            TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onSkip");
        }
        public void onLoaded()
        {
            TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onLoaded");
        }
        public void onLoadFail(int code, string msg)
        {
            TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onLoadFail, code : " + code + " , msg : " + msg);
        }
        public void onShow()
        {
            TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onShow");
        }
        public void onShowFail(int code, string msg)
        {
            TKGDebugger.LogDebug("AndroidRewardADTKGAdCallback onShowFail, code : " + code + " , msg : " + msg);
            Loom.QueueOnMainThread((pObj) =>
            {
                if (TKGSDKCallback.mRewardShowFailedCallback != null)
                {
                    TKGSDKCallback.mRewardShowFailedCallback.Invoke();
                    TKGSDKCallback.mRewardShowFailedCallback = null;
                }
            }, "");
        }
        /// 
        /// RewardAd give reward in this method
        ///
        /// when show rv succ, close rv must call back this, can use as iOS close callback
        /// 
        /// 
        /// 
        /// 
        public void onReward(string msg, int code, bool isReward)
        {
            TKGDebugger.LogDebug("onReward, msg : " + msg + " , code : " + code + " , isReward : " + isReward);
            Loom.QueueOnMainThread((pObj) =>
            {
                if (isReward)
                {
                    if (TKGSDKCallback.mRewardCallback != null)
                    {
                        TKGSDKCallback.mRewardCallback.Invoke(true);
                        TKGSDKCallback.mRewardCallback = null;
                    }
                }
                else
                {
                    if (TKGSDKCallback.mRewardCallback != null)
                    {
                        TKGSDKCallback.mRewardCallback.Invoke(false);
                        TKGSDKCallback.mRewardCallback = null;
                    }
                }
            }, "");
        }
    }
    /// 
    /// bannerAd callback
    /// 
    public class AndroidBannerADTKGAdCallback : AndroidJavaProxy
    {
        public AndroidBannerADTKGAdCallback() : base("com.touka.tkg.idal.ITKGAdCallback") { }
        public void onClosed()
        {
            TKGDebugger.LogDebug("onClosed");
        }
        public void onClicked()
        {
            TKGDebugger.LogDebug("onClicked");
        }
        public void onSkip()
        {
            TKGDebugger.LogDebug("onSkip");
        }
        public void onLoaded()
        {
            TKGDebugger.LogDebug("onLoaded");
        }
        public void onLoadFail(int code, string msg)
        {
            TKGDebugger.LogDebug("onLoadFail, code : " + code + " , msg : " + msg);
        }
        public void onShow()
        {
            TKGDebugger.LogDebug("onShow");
        }
        public void onShowFail(int code, string msg)
        {
            TKGDebugger.LogDebug("onShowFail, code : " + code + " , msg : " + msg);
        }
    }
    /// 
    /// tkg callback
    /// 
    public class AndroidTKGCommonCalllback : AndroidJavaProxy
    {
        public AndroidTKGCommonCalllback() : base("com.touka.tkg.idal.TKGCalllback") { }
        public void onCall(int _code, string _msg)
        {
            TKGDebugger.LogDebug("TKGCallback onCall, code : " + _code + " , msg : " + _msg);
            if(TKGSDKCallback.mTKGCommonCallback != null)
            {
                TKGSDKCallback.mTKGCommonCallback.Invoke((CommonCallbackCode)_code, _msg);
                TKGSDKCallback.mTKGCommonCallback = null;
            }
        }
    }
    /// 
    /// tkg callback
    /// 
    public class AndroidTKGUserSourceCalllback : AndroidJavaProxy
    {
        public AndroidTKGUserSourceCalllback() : base("com.touka.tkg.idal.UserSourceCallback") { }
        public void onResult(bool _isOrganic, string _userSource)
        {
            TKGDebugger.LogDebug("TKGCallback onCall, isOrganic : " + _isOrganic + " , userSource : " + _userSource);
            if(TKGSDKCallback.mTKGUserSourceCallback != null)
            {
                TKGSDKCallback.mTKGUserSourceCallback.Invoke(_isOrganic, _userSource);
                TKGSDKCallback.mTKGUserSourceCallback = null;
            }
        }
    }
    /*
    Loom.QueueOnMainThread((pObj) =>
    {
    
    }, "");
     */
}