forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			98 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
namespace Oculus.Platform.Samples.VrBoardGame
 | 
						|
{
 | 
						|
	using UnityEngine;
 | 
						|
	using Oculus.Platform;
 | 
						|
	using Oculus.Platform.Models;
 | 
						|
	using UnityEngine.UI;
 | 
						|
 | 
						|
 | 
						|
	// This class coordinates In-App-Purchases (IAP) for the application.  Follow the
 | 
						|
	// instructions in the Readme for setting up IAP on the Oculus Dashboard.  Only
 | 
						|
	// one consumable IAP item is used is the demo: the Power-Ball!
 | 
						|
	public class IAPManager : MonoBehaviour
 | 
						|
	{
 | 
						|
		// the game controler to notify when the user purchaes more powerballs
 | 
						|
		[SerializeField] private GameController m_gameController = null;
 | 
						|
 | 
						|
		// where to record to display the current price for the IAP item
 | 
						|
		[SerializeField] private Text m_priceText = null;
 | 
						|
 | 
						|
		// purchasable IAP products we've configured on the Oculus Dashboard
 | 
						|
		private const string CONSUMABLE_1 = "PowerballPack1";
 | 
						|
 | 
						|
		void Start()
 | 
						|
		{
 | 
						|
			FetchProductPrices();
 | 
						|
			FetchPurchasedProducts();
 | 
						|
		}
 | 
						|
 | 
						|
		// get the current price for the configured IAP item
 | 
						|
		public void FetchProductPrices()
 | 
						|
		{
 | 
						|
			string[] skus = { CONSUMABLE_1 };
 | 
						|
			IAP.GetProductsBySKU(skus).OnComplete(GetProductsBySKUCallback);
 | 
						|
		}
 | 
						|
 | 
						|
		void GetProductsBySKUCallback(Message<ProductList> msg)
 | 
						|
		{
 | 
						|
			if (msg.IsError)
 | 
						|
			{
 | 
						|
				PlatformManager.TerminateWithError(msg);
 | 
						|
				return;
 | 
						|
			}
 | 
						|
 | 
						|
			foreach (Product p in msg.GetProductList())
 | 
						|
			{
 | 
						|
				Debug.LogFormat("Product: sku:{0} name:{1} price:{2}", p.Sku, p.Name, p.FormattedPrice);
 | 
						|
				if (p.Sku == CONSUMABLE_1)
 | 
						|
				{
 | 
						|
					m_priceText.text = p.FormattedPrice;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		// fetches the Durable purchased IAP items.  should return none unless you are expanding the
 | 
						|
		// to sample to include them.
 | 
						|
		public void FetchPurchasedProducts()
 | 
						|
		{
 | 
						|
			IAP.GetViewerPurchases().OnComplete(GetViewerPurchasesCallback);
 | 
						|
		}
 | 
						|
 | 
						|
		void GetViewerPurchasesCallback(Message<PurchaseList> msg)
 | 
						|
		{
 | 
						|
			if (msg.IsError)
 | 
						|
			{
 | 
						|
				PlatformManager.TerminateWithError(msg);
 | 
						|
				return;
 | 
						|
			}
 | 
						|
 | 
						|
			foreach (Purchase p in msg.GetPurchaseList())
 | 
						|
			{
 | 
						|
				Debug.LogFormat("Purchased: sku:{0} granttime:{1} id:{2}", p.Sku, p.GrantTime, p.ID);
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		public void BuyPowerBallsPressed()
 | 
						|
		{
 | 
						|
#if UNITY_EDITOR
 | 
						|
			m_gameController.AddPowerballs(1);
 | 
						|
#else
 | 
						|
			IAP.LaunchCheckoutFlow(CONSUMABLE_1).OnComplete(LaunchCheckoutFlowCallback);
 | 
						|
#endif
 | 
						|
		}
 | 
						|
 | 
						|
		private void LaunchCheckoutFlowCallback(Message<Purchase> msg)
 | 
						|
		{
 | 
						|
			if (msg.IsError)
 | 
						|
			{
 | 
						|
				PlatformManager.TerminateWithError(msg);
 | 
						|
				return;
 | 
						|
			}
 | 
						|
 | 
						|
			Purchase p = msg.GetPurchase();
 | 
						|
			Debug.Log("purchased " + p.Sku);
 | 
						|
			m_gameController.AddPowerballs(3);
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |