﻿using UnityEngine;
using System;
using AMR;

public class AMRDemoScript : MonoBehaviour
{
	AMR.AMRSdkConfig config;

	//public AMRInterstitialAd interstitial1;
	//public AMRRewardedVideoAd rewardedVideo1;

	// Use this for initialization
	void Start()
	{
		config = new AMR.AMRSdkConfig();

		/* Set zone ids */
		config.ApplicationIdAndroid = "6cc8e89a-b52a-4e9a-bb8c-579f7ec538fe";
		config.ApplicationIdIOS = "15066ddc-9c18-492c-8185-bea7e4c7f88c";

		config.BannerIdAndroid = "86644357-21d0-45a4-906a-37262461df65";
		config.BannerIdIOS = "b4009772-de04-42c4-bbaa-c18da9e4a1ab";

		config.InterstitialIdAndroid = "f99e409b-f9ab-4a2e-aa9a-4d143e6809ae";
		config.InterstitialIdIOS = "39f74377-5682-436a-9338-9d1c4df410bd";

		config.RewardedVideoIdAndroid = "88cfcfd0-2f8c-4aba-9f36-cc0ac99ab140";
		config.RewardedVideoIdIOS = "2bdefd44-5269-4cbc-b93a-373b74a2f067";

		config.OfferWallIdAndroid = "fa1072e4-afcf-49b6-a919-1ab1ab1b0aa9";
		config.OfferWallIdIOS = "1cadca08-33f9-4da7-969e-ef116d4e7d0e";

		AMR.AMRSDK.startWithConfig(config);
		//AMR.AMRSDK.startWithConfig(config, OnAMRSDKDidInitialize);
		//AMR.AMRSDK.setClientCampaignId("UnityCampaignTest-1.0");

		/* Banner Callbacks - Optional */
		AMR.AMRSDK.setOnBannerReady(OnBannerReady);
        AMR.AMRSDK.setOnBannerFail(OnBannerFail);
        AMR.AMRSDK.setOnBannerClick(OnBannerClick);

        /* Interstitial Callbacks - Optional */
        AMR.AMRSDK.setOnInterstitialReady(OnInterstitialReady);
		AMR.AMRSDK.setOnInterstitialFail(OnInterstitialFail);
		AMR.AMRSDK.setOnInterstitialShow(OnInterstitialShow);
		AMR.AMRSDK.setOnInterstitialFailToShow(OnInterstitialFailToShow);
        AMR.AMRSDK.setOnInterstitialClick(OnInterstitialClick);
        AMR.AMRSDK.setOnInterstitialDismiss(OnInterstitialDismiss);
		AMR.AMRSDK.setOnInterstitialStatusChange(OnInterstitialStatusChange);

		/* Rewarded Video Callbacks - Optional */
		AMR.AMRSDK.setOnRewardedVideoReady(OnVideoReady);
		AMR.AMRSDK.setOnRewardedVideoFail(OnVideoFail);
		AMR.AMRSDK.setOnRewardedVideoShow(OnVideoShow);
		AMR.AMRSDK.setOnRewardedVideoFailToShow(OnVideoFailToShow);
        AMR.AMRSDK.setOnRewardedVideoClick(OnVideoClick);
        AMR.AMRSDK.setOnRewardedVideoComplete(OnVideoComplete);
		AMR.AMRSDK.setOnRewardedVideoDismiss(OnVideoDismiss);
		AMR.AMRSDK.setOnRewardedVideoStatusChange(OnVideoStatusChange);

		/* OfferWall Callbacks - Optional */
		AMR.AMRSDK.setOnOfferWallReady(OnOfferWallReady);
		AMR.AMRSDK.setOnOfferWallFail(OnOfferWallFail);
		AMR.AMRSDK.setOnOfferWallDismiss(OnOfferWallDismiss);

		/* Virtual Currency Callback - Optional */
		AMR.AMRSDK.setOnDidSpendVirtualCurrency(OnVirtualCurrencyDidSpend);
		AMR.AMRSDK.setPrivacyConsentRequired(privacyConsentRequired);
		AMR.AMRSDK.setTrackPurchaseOnResult(trackPurchaseOnResult);

		//string stringValue = AMR.AMRRemoteConfig.getString("appNamee", "Default App Name");
		//long longValue = AMR.AMRRemoteConfig.getLong("appBuildd", 99);
		//double doubleValue = AMR.AMRRemoteConfig.getDouble("appVersionn", 999.1);
		//bool boolValue = AMR.AMRRemoteConfig.getBoolean("isDebugg", true);
		//Debug.Log("<AMRUnityDemo> Load Banner: " + stringValue + " - " + longValue + " - " + doubleValue + " - " + boolValue);

		//interstitial1 = new AMRInterstitialAd
		//{
		//	AndroidZoneId = "",
		//	iOSZoneId = "39f74377-5682-436a-9338-9d1c4df410bd"
		//};

		//interstitial1.SetOnInterstitialReady(OnNewInterstitialReady);
		//interstitial1.SetOnInterstitialFail(OnNewInterstitialFail);
		//interstitial1.SetOnInterstitialShow(OnNewInterstitialShow);
		//interstitial1.SetOnInterstitialFailToShow(OnNewInterstitialFailToShow);
		//interstitial1.SetOnInterstitialClick(OnNewInterstitialClick);
		//interstitial1.SetOnInterstitialDismiss(OnNewInterstitialDismiss);

		/*
        rewardedVideo1 = new AMRRewardedVideoAd
        {
            AndroidZoneId = "2bdefd44-5269-4cbc-b93a-373b74a2f067",
            iOSZoneId = "2bdefd44-5269-4cbc-b93a-373b74a2f067"
        };

        rewardedVideo1.SetOnVideoReady(OnRewardedVideoReady);
        rewardedVideo1.SetOnVideoFail(OnRewardedVideoFail);
        rewardedVideo1.SetOnVideoShow(OnRewardedVideoShow);
        rewardedVideo1.SetOnVideoFailToShow(OnRewardedVideoFailToShow);
        rewardedVideo1.SetOnVideoClick(OnRewardedVideoClick);
        rewardedVideo1.SetOnVideoComplete(OnRewardedVideoComplete);
        rewardedVideo1.SetOnVideoDismiss(OnRewardedVideoDismiss);
		*/
	}

	private void OnAMRSDKDidInitialize(bool isInitialized, string errorMessage)
    {
		Debug.Log("<AMRUnityDemo> isInitialized" + isInitialized + "Error: " + errorMessage);
    }

    void OnApplicationPause(Boolean paused)
	{
		// IMPORTANT FOR CHARTBOOST, DO NOT FORGET
		if (!AMR.AMRSDK.initialized())
			return;

		if (paused)
		{
			AMR.AMRSDK.onPause();
			AMR.AMRSDK.onStop();
		}
		else
		{
			AMR.AMRSDK.onStart();
			AMR.AMRSDK.onResume();
		}
	}

	void OnApplicationQuit()
	{
		AMR.AMRSDK.onDestroy();
	}

	#region AdMethods

	public void LoadBanner()
	{
        AMR.AMRSDK.loadBanner(AMR.Enums.AMRSDKBannerPosition.BannerPositionBottom, true);
        AMR.AMRSDK.loadBannerWithPosition(20.0, 20.0, true);
	}

	public void HideBanner()
	{
		Debug.Log("<AMRUnityDemo> Hide Banner");
		AMR.AMRSDK.hideBanner();
	}

	public void LoadInterstitial()
	{
		Debug.Log("<AMRUnityDemo> Load Interstitial");
		AMR.AMRSDK.loadInterstitial();
		//interstitial1.LoadInterstitial();
	}

	public void ShowInterstitial()
	{
		Debug.Log("<AMRUnityDemo> Show Interstitial");

		//interstitial1.ShowInterstitial();

		if (AMR.AMRSDK.isInterstitialReady())
            AMR.AMRSDK.showInterstitial();
        else
            AMR.AMRSDK.loadInterstitial();
	}

	public void LoadRewardedVideo()
	{
		Debug.Log("<AMRUnityDemo> Load RewardedVideo");
		AMR.AMRSDK.loadRewardedVideo();
        //rewardedVideo1.LoadRewardedVideo();
    }

	public void ShowRewardedVideo()
	{
		Debug.Log("<AMRUnityDemo> Show RewardedVideo");

		if (AMR.AMRSDK.isRewardedVideoReady())
            AMR.AMRSDK.showRewardedVideo();
        else
            AMR.AMRSDK.loadRewardedVideo();
    }

	public void LoadOfferWall()
	{
		Debug.Log("<AMRUnityDemo> Load OfferWall");
		AMR.AMRSDK.loadOfferWall();
	}

	public void ShowOfferWall()
	{
		Debug.Log("<AMRUnityDemo> Show OfferWall");

		if (AMR.AMRSDK.isOfferWallReady())
			AMR.AMRSDK.showOfferWall();
		else
			AMR.AMRSDK.loadOfferWall();
	}

	public void SpendVirtualCurrency()
	{
		Debug.Log("<AMRUnityDemo> Spend Virtual Currency");
		AMR.AMRSDK.spendVirtualCurrency();
	}

	public void StartTestSuite()
	{
		Debug.Log("<AMRUnityDemo> Start Test Suite");

#if UNITY_IPHONE
		AMR.AMRSDK.startTestSuite(
			new string[] {config.BannerIdIOS, config.InterstitialIdIOS, config.RewardedVideoIdIOS});
#endif

#if UNITY_ANDROID
			AMR.AMRSDK.startTestSuite(new string[] {config.BannerIdAndroid, config.InterstitialIdAndroid, config.RewardedVideoIdAndroid});
		#endif
	}

	#endregion

	#region Banner

	public void OnBannerReady(string networkName, double ecpm)
	{
		Debug.Log("<AMRUnityDemo> OnBannerReady: " + networkName + " with ecpm: " + ecpm);
		AMR.AMRSDK.showBanner();
	}

    public void OnBannerFail(string error)
    {
        Debug.Log("<AMRUnityDemo> OnBannerFail: " + error);
    }

    public void OnBannerClick(string networkName)
    {
        Debug.Log("<AMRUnityDemo> OnBannerClick: " + networkName);
    }

    #endregion

    #region Interstitial

    public void OnInterstitialReady(string networkName, double ecpm)
    {
        Debug.Log("<AMRUnityDemo> OnInterstitialReady: " + networkName + " with ecpm: " + ecpm);

        //if (AMR.AMRSDK.isInterstitialReady())
        //	AMR.AMRSDK.showInterstitial();
    }

    public void OnInterstitialFail(string error)
	{
		Debug.Log("<AMRUnityDemo> OnInterstitialFail: " + error);
	}

	public void OnInterstitialShow()
	{
		Debug.Log("<AMRUnityDemo> OnInterstitialShow");
	}

	public void OnInterstitialFailToShow()
	{
		Debug.Log("<AMRUnityDemo> OnInterstitialFailToShow");
	}

    public void OnInterstitialClick(string networkName)
    {
        Debug.Log("<AMRUnityDemo> OnInterstitialClick: " + networkName);
    }

    public void OnInterstitialDismiss()
	{
		Debug.Log("<AMRUnityDemo> OnInterstitialDismiss");
	}

	public void OnInterstitialStatusChange(int state)
	{
		Debug.Log("<AMRUnityDemo> OnInterstitialStatusChange: " + state);
		LoadInterstitial();
	}

	#endregion

	#region New Interstitial

	//public void OnNewInterstitialReady(string zoneId, string networkName, double ecpm)
	//{
	//	Debug.Log("<AMRUnityDemo> OnInterstitialReady: " + networkName + " with ecpm: " + ecpm);

	//	//if (AMR.AMRSDK.isInterstitialReady())
	//	//	AMR.AMRSDK.showInterstitial();
	//}

	//public void OnNewInterstitialFail(string zoneId, string error)
	//{
	//	Debug.Log("<AMRUnityDemo> OnInterstitialFail: " + error);
	//}

	//public void OnNewInterstitialShow(string zoneId)
	//{
	//	Debug.Log("<AMRUnityDemo> OnInterstitialShow");
	//}

	//public void OnNewInterstitialFailToShow(string zoneId)
	//{
	//	Debug.Log("<AMRUnityDemo> OnInterstitialFailToShow");
	//}

	//public void OnNewInterstitialClick(string zoneId, string networkName)
	//{
	//	Debug.Log("<AMRUnityDemo> OnInterstitialClick: " + networkName);
	//}

	//public void OnNewInterstitialDismiss(string zoneId)
	//{
	//	Debug.Log("<AMRUnityDemo> OnInterstitialDismiss");
	//}

	#endregion


	#region RewardedVideo

	public void OnVideoReady(string networkName, double ecpm)
	{
		Debug.Log("<AMRUnityDemo> OnVideoReady: " + networkName + " with ecpm: " + ecpm);

		//if (AMR.AMRSDK.isRewardedVideoReady())
		//	AMR.AMRSDK.showRewardedVideo();
	}

	public void OnVideoFail(string errorMessage)
	{
		Debug.Log("<AMRUnityDemo> OnVideoFail called and reason is: " + errorMessage);
	}

	public void OnVideoShow()
	{
		Debug.Log("<AMRUnityDemo> OnVideoShow");
	}
	
	public void OnVideoFailToShow()
	{
		Debug.Log("<AMRUnityDemo> OnVideoFailToShow");
	}

    public void OnVideoClick(string networkName)
    {
        Debug.Log("<AMRUnityDemo> OnVideoClick: " + networkName);
    }

    public void OnVideoComplete()
	{
		Debug.Log("<AMRUnityDemo> OnVideoComplete");
		// reward user for watching a video
	}

	public void OnVideoStatusChange(int state)
	{
		Debug.Log("<AMRUnityDemo> OnVideoStatusChange: " + state);
		LoadRewardedVideo();
	}

	public void OnVideoDismiss()
	{
		Debug.Log("<AMRUnityDemo> OnVideoDismiss");
	}

	#endregion

	#region OfferWall

	public void OnOfferWallReady(string networkName, double ecpm)
	{
		Debug.Log("<AMRUnityDemo> OnOfferWallReady: " + networkName + " with ecpm: " + ecpm);

		AMR.AMRSDK.showOfferWall();
	}

	public void OnOfferWallFail(string error)
	{
		Debug.Log("<AMRUnityDemo> OnOfferWallFail: " + error);
	}

	public void OnOfferWallDismiss()
	{
		Debug.Log("<AMRUnityDemo> OnOfferWallDismiss");
	}

	public void OnVirtualCurrencyDidSpend(string networkName, string currency, double amount)
	{
		Debug.Log("<AMRUnityDemo> OnVirtualCurrencyDidSpend: " + networkName + " currency: " + currency + " amout: " +
		          amount.ToString());
	}

	#endregion
	
	public void trackPurchaseOnResult(string purchaseId, AMR.Enums.AMRSDKTrackPurchaseResult responseCode)
	{
		Debug.Log("<AMRUnityDemo> trackPurchaseOnResult: " + purchaseId + " " + responseCode);
	}

	public void isGDPRApplicable(bool isGDPRApplicable)
	{
		Debug.Log("<AMRUnityDemo> isGDPRApplicable: " + isGDPRApplicable);
	}

	public void privacyConsentRequired(string consentStatus)
    {
		Debug.Log("<AMRUnityDemo> privacyConsentRequired: " + consentStatus);
	}
}