212 lines
6.9 KiB
C#
212 lines
6.9 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using TMPro;
|
|
using System;
|
|
using UnityEngine.Purchasing;
|
|
using UnityEngine.UI; //could this be it????
|
|
using UnityEngine.Purchasing.Extension; // Added this line
|
|
|
|
//Stores data of Consumable products
|
|
//Consumable items can be purchased again and again such as coins.
|
|
|
|
|
|
//IDetailedStoreListener provides callbacks for handling purchases
|
|
public class StoreScript : MonoBehaviour, IDetailedStoreListener{
|
|
|
|
|
|
IStoreController m_StoreController; // The Unity Purchasing system.
|
|
|
|
//Your products IDs. They should match the ids of your products in your store.
|
|
public string catProductId = "com.ex.cat";
|
|
public string eagleProductId = "com.ex.eagle";
|
|
public string cheetahProductId = "com.ex.cheetah";
|
|
public string hyenaProductId = "com.ex.hyena";
|
|
|
|
public string subscriptionProductId = "com_ex_battlepass";
|
|
// public string diamondProductId = "com.mycompany.mygame.diamond1";
|
|
|
|
// public Text GoldCountText;
|
|
// public Text DiamondCountText;
|
|
|
|
// int m_GoldCount;
|
|
// int m_DiamondCount;
|
|
|
|
// public TextMeshProUGUI debug_msg;
|
|
|
|
MissionHandler mission_handler;
|
|
public GameObject missionhandler_holder;
|
|
void OnEnable(){
|
|
mission_handler = missionhandler_holder.GetComponent<MissionHandler>();
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
// ErrorField = GameObject.Find("ErrorField").GetComponent<TMP_Text>();
|
|
InitializePurchasing();
|
|
// UpdateUI();
|
|
// PopulateCanvasWithPrefabs();
|
|
}
|
|
|
|
//Set up a configuration builder, add consumable products to it and initialize Unity Purchasing
|
|
void InitializePurchasing()
|
|
{
|
|
try{
|
|
var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
|
|
|
|
//Add products that will be purchasable and indicate its type.
|
|
builder.AddProduct(catProductId, ProductType.NonConsumable);
|
|
builder.AddProduct(eagleProductId, ProductType.NonConsumable);
|
|
builder.AddProduct(cheetahProductId, ProductType.NonConsumable);
|
|
builder.AddProduct(hyenaProductId, ProductType.NonConsumable);
|
|
|
|
builder.AddProduct(subscriptionProductId, ProductType.Subscription);
|
|
// builder.AddProduct(diamondProductId, ProductType.Consumable);
|
|
|
|
UnityPurchasing.Initialize(this, builder);
|
|
}catch(Exception e){
|
|
// ErrorField.text = e.ToString();
|
|
}
|
|
|
|
}
|
|
|
|
public void BuyGold(string item_id)
|
|
{
|
|
//Seems to be the problem
|
|
// m_StoreController.InitiatePurchase(goldProductId);
|
|
// Debug.Log("Hk");
|
|
|
|
try{
|
|
m_StoreController.InitiatePurchase(item_id);
|
|
}catch(Exception e){
|
|
// debug_msg.text = "Err: " + e.ToString();
|
|
}
|
|
|
|
}
|
|
|
|
public void BuySubscription(){
|
|
// debug_msg.text = subscriptionProductId;
|
|
try{
|
|
m_StoreController.InitiatePurchase(subscriptionProductId);
|
|
}catch(Exception e){
|
|
// debug_msg.text = "InitiatePurchase_Error: " + e.ToString();
|
|
// msg.text = "InitiatePurchase_Error: " + e.ToString();
|
|
}
|
|
}
|
|
|
|
// public void BuyDiamond()
|
|
// {
|
|
// m_StoreController.InitiatePurchase(diamondProductId);
|
|
// }
|
|
|
|
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
|
|
{
|
|
// ErrorField.text = "In-App Purchasing successfully initialized";
|
|
|
|
Debug.Log("In-App Purchasing successfully initialized");
|
|
m_StoreController = controller;
|
|
}
|
|
|
|
public void OnInitializeFailed(InitializationFailureReason error)
|
|
{
|
|
OnInitializeFailed(error, null);
|
|
}
|
|
|
|
public void OnInitializeFailed(InitializationFailureReason error, string message)
|
|
{
|
|
var errorMessage = $"Purchasing failed to initialize. Reason: {error}.";
|
|
|
|
if (message != null)
|
|
{
|
|
errorMessage += $" More details: {message}";
|
|
}
|
|
|
|
// ErrorField.text = errorMessage;
|
|
Debug.Log(errorMessage);
|
|
}
|
|
|
|
//Processing purchase
|
|
//Check if user successfully purchased or declined, also return the item purchased
|
|
//This function is called when a purchase is completed ????????
|
|
public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
|
|
{
|
|
//Retrieve the purchased product
|
|
var product = args.purchasedProduct;
|
|
|
|
// switch(product.definition.id){
|
|
// }
|
|
|
|
if (product.definition.id == catProductId){
|
|
mission_handler.CharacterUnlocked("Cat(Clone)");
|
|
}
|
|
|
|
if (product.definition.id == eagleProductId){
|
|
mission_handler.CharacterUnlocked("Eagle(Clone)");
|
|
}
|
|
|
|
if (product.definition.id == cheetahProductId){
|
|
mission_handler.CharacterUnlocked("Cheetah(Clone)");
|
|
}
|
|
|
|
if (product.definition.id == hyenaProductId){
|
|
mission_handler.CharacterUnlocked("Hyena(Clone)");
|
|
}
|
|
|
|
|
|
|
|
|
|
//Add the purchased product to the players inventory
|
|
// if (product.definition.id == goldProductId)
|
|
// {
|
|
// // ErrorField.text = $"Adding Gold... {product.definition.id}";
|
|
// // AddGold();
|
|
// }
|
|
// else if (product.definition.id == diamondProductId)
|
|
// {
|
|
// AddDiamond();
|
|
// }
|
|
|
|
// ErrorField.text = $"Purchase Complete - Product: {product.definition.id}";
|
|
Debug.LogWarning($"Purchase Complete - Product: {product.definition.id}");
|
|
|
|
//We return Complete, informing IAP that the processing on our side is done and the transaction can be closed.
|
|
return PurchaseProcessingResult.Complete;
|
|
}
|
|
|
|
public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason)
|
|
{
|
|
// ErrorField.text = $"Purchase failed - Product: '{product.definition.id}', PurchaseFailureReason: {failureReason}";
|
|
Debug.Log($"Purchase failed - Product: '{product.definition.id}', PurchaseFailureReason: {failureReason}");
|
|
}
|
|
|
|
public void OnPurchaseFailed(Product product, PurchaseFailureDescription failureDescription)
|
|
{
|
|
// ErrorField.text = $"Purchase failed - Product: '{product.definition.id}'," +
|
|
// $" Purchase failure reason: {failureDescription.reason}," +
|
|
// $" Purchase failure details: {failureDescription.message}";
|
|
|
|
Debug.Log($"Purchase failed - Product: '{product.definition.id}'," +
|
|
$" Purchase failure reason: {failureDescription.reason}," +
|
|
$" Purchase failure details: {failureDescription.message}");
|
|
}
|
|
|
|
void AddGold()
|
|
{
|
|
// m_GoldCount++;
|
|
UpdateUI();
|
|
}
|
|
|
|
// void AddDiamond()
|
|
// {
|
|
// m_DiamondCount++;
|
|
// UpdateUI();
|
|
// }
|
|
|
|
void UpdateUI()
|
|
{
|
|
// ErrorField.text = "50 Gold Added";
|
|
// GoldCountText.text = $"Your Gold: {m_GoldCount}";
|
|
// DiamondCountText.text = $"Your Diamonds: {m_DiamondCount}";
|
|
}
|
|
}
|