API

CBSItemsModule.FetchAll - Updates the state of all items from the Playfab database(include recipes, upgrades, categories). Do not use unnecessarily. This method is called at login.

using CBS;
using CBS.Models;
using UnityEngine;

public class ItemsExample : MonoBehaviour
{
    private ICBSItems ItemModule { get; set; }

    private void Start()
    {
        ItemModule = CBSModule.Get<CBSItemsModule>();

        ItemModule.FetchAll(OnFetch);
    }

    private void OnFetch(CBSFetchAllResult result)
    {
        if (result.IsSuccess)
        {
            var items = result.Items;
            var packs = result.Packs;
            var lootboxes = result.Lootboxes;
            var recipesData = result.Recipes;
            var upgradesData = result.Upgrades;

            var itemsCatergories = result.ItemsCategories;
            var packsCaterories = result.PacksCategories;
            var lootboxCategories = result.LootboxCategories;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSItemsModule.GetCategories - Get all categories by specific items type.

using CBS;
using CBS.Models;
using UnityEngine;

public class ItemsExample : MonoBehaviour
{
    private ICBSItems ItemModule { get; set; }

    private void Start()
    {
        ItemModule = CBSModule.Get<CBSItemsModule>();

        ItemModule.GetCategories(ItemType.ITEMS, OnGetCategories);
    }

    private void OnGetCategories(CBSGetCategoriesResult result)
    {
        if (result.IsSuccess)
        {
            var itemsCategories = result.Categories;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSItemsModule.GetCBSItems - Get all items by type or category.

using CBS;
using CBS.Models;
using UnityEngine;

public class ItemsExample : MonoBehaviour
{
    private ICBSItems ItemModule { get; set; }

    private void Start()
    {
        ItemModule = CBSModule.Get<CBSItemsModule>();

        var request = new CBSGetItemsRequest 
        {
            ItemType = ItemType.ITEMS,
            SpecificCategory = "my category"
        };
        ItemModule.GetCBSItems(request, OnGetCategories);
    }

    private void OnGetCategories(CBSGetItemsResult result)
    {
        if (result.IsSuccess)
        {
            var items = result.Items;
            var lootboxes = result.Lootboxes;
            var packs = result.Packs;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSItemsModule.GetCBSItemByID - Get specific cbs item information by id.

using CBS;
using CBS.Example;
using CBS.Models;
using UnityEngine;

public class ItemsExample : MonoBehaviour
{
    private ICBSItems ItemModule { get; set; }

    private void Start()
    {
        ItemModule = CBSModule.Get<CBSItemsModule>();

        var itemID = "my item id";
        ItemModule.GetCBSItemByID(itemID, OnGetItem);
    }

    private void OnGetItem(CBSGetItemResult result)
    {
        if (result.IsSuccess)
        {
            var item = result.Item;
            var itemID = item.ItemID;
            var category = item.Category;
            var displayName = item.DisplayName;
            var description = item.Description;
            var itemClass = item.ItemClass;
            var externalURL = item.ExternalIconURL;
            var type = item.Type;
            var prices = item.Prices;

            var customData = item.GetCustomData<SwordData>();

            var customDataAsDictionary = item.GetCustomDataAsDictionary();
            var attack = customDataAsDictionary["Attack"];
            var speed = customDataAsDictionary["Speed"];
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSItemsModule.PurchaseCBSItemWithCurrency - Purchase item by id. The currency will be debited automatically and the item will be added to the inventory.

using CBS;
using CBS.Models;
using UnityEngine;

public class ItemsExample : MonoBehaviour
{
    private ICBSItems ItemModule { get; set; }

    private void Start()
    {
        ItemModule = CBSModule.Get<CBSItemsModule>();

        var itemID = "my item id";
        var currencyCode = "GD";
        var currencyValue = 100;
        ItemModule.PurchaseCBSItemWithCurrency(itemID, currencyCode, currencyValue, OnPurchaseItem);
    }

    private void OnPurchaseItem(CBSPurchaseItemWithCurrencyResult result)
    {
        if (result.IsSuccess)
        {
            var itemID = result.ItemID;
            var purchasedInstances = result.PurchasedInstances;
            var purchasedCurrencies = result.PurchasedCurrencies;
            var priceCode = result.PriceCode;
            var priceValue = result.PriceValue;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSItemsModule.PurchaseCBSItemWithRealMoney - Purchase item with Unity IAP module. Currently working with iOS/Android only.

using CBS;
using CBS.Models;
using UnityEngine;

public class ItemsExample : MonoBehaviour
{
    private ICBSItems ItemModule { get; set; }

    private void Start()
    {
        ItemModule = CBSModule.Get<CBSItemsModule>();

        var itemID = "my item id";
        ItemModule.PurchaseCBSItemWithRealMoney(itemID, OnPurchaseItem);
    }

    private void OnPurchaseItem(CBSPurchaseItemWithRealMoneyResult result)
    {
        if (result.IsSuccess)
        {
            var profileID = result.ProfileID;
            var itemID = result.ItemID;
            var purchasedInstances = result.PurchasedInstances;
            var purchasedCurrencies = result.PurchasedCurrencies;
            var transactionID = result.TransactionID;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSItemsModule.GrantItem- Add item to current auth user. The item automatically goes into inventory.

using CBS;
using CBS.Models;
using UnityEngine;

public class ItemsExample : MonoBehaviour
{
    private ICBSItems ItemModule { get; set; }

    private void Start()
    {
        ItemModule = CBSModule.Get<CBSItemsModule>();

        var itemID = "my item id";
        ItemModule.GrantItem(itemID, OnGrantItem);
    }

    private void OnGrantItem(CBSGrantItemsResult result)
    {
        if (result.IsSuccess)
        {
            var profileID = result.TargetID;
            var grantedInstances = result.GrantedInstances;
            var grantedCurrencies = result.GrantedCurrencies;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSItemsModule.GrantItems - Add items to current auth user. The items automatically goes into inventory.

using CBS;
using CBS.Models;
using UnityEngine;

public class ItemsExample : MonoBehaviour
{
    private ICBSItems ItemModule { get; set; }

    private void Start()
    {
        ItemModule = CBSModule.Get<CBSItemsModule>();

        var itemsID = new string[] 
        {
            "item id 1",
            "item id 2",
            "item id 3"
        };
        ItemModule.GrantItems(itemsID, OnGrantItem);
    }

    private void OnGrantItem(CBSGrantItemsResult result)
    {
        if (result.IsSuccess)
        {
            var profileID = result.TargetID;
            var grantedInstances = result.GrantedInstances;
            var grantedCurrencies = result.GrantedCurrencies;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSItemsModule.GrantItemToProfile - Add item to profile by id. The item automatically goes into inventory.

using CBS;
using CBS.Models;
using UnityEngine;

public class ItemsExample : MonoBehaviour
{
    private ICBSItems ItemModule { get; set; }

    private void Start()
    {
        ItemModule = CBSModule.Get<CBSItemsModule>();

        var itemID = "itemID";
        var profileIDToGrant = "some profile id";
        ItemModule.GrantItemToProfile(profileIDToGrant, itemID, OnGrantItem);
    }

    private void OnGrantItem(CBSGrantItemsResult result)
    {
        if (result.IsSuccess)
        {
            var profileID = result.TargetID;
            var grantedInstances = result.GrantedInstances;
            var grantedCurrencies = result.GrantedCurrencies;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSItemsModule.GrantItemsToProfile - Add items to profile by id. The item automatically goes into inventory.

using CBS;
using CBS.Models;
using UnityEngine;

public class ItemsExample : MonoBehaviour
{
    private ICBSItems ItemModule { get; set; }

    private void Start()
    {
        ItemModule = CBSModule.Get<CBSItemsModule>();

        var itemsID = new string[]
        {
            "item id 1",
            "item id 2",
            "item id 3"
        };
        var profileIDToGrant = "some profile id";
        ItemModule.GrantItemsToProfile(profileIDToGrant, itemsID, OnGrantItem);
    }

    private void OnGrantItem(CBSGrantItemsResult result)
    {
        if (result.IsSuccess)
        {
            var profileID = result.TargetID;
            var grantedInstances = result.GrantedInstances;
            var grantedCurrencies = result.GrantedCurrencies;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSCraftingModule.GetRecipeDependencyState - Get the status of all ingredients for a craft item.

using CBS;
using CBS.Models;
using UnityEngine;

public class CraftingExample : MonoBehaviour
{
    private ICrafting Crafting { get; set; }

    private void Start()
    {
        Crafting = CBSModule.Get<CBSCraftingModule>();

        var recipeID = "recipeID";
        Crafting.GetRecipeDependencyState(recipeID, OnGetDependency);
    }

    private void OnGetDependency(CBSGetRecipeDependencyStateResult result)
    {
        if (result.IsSuccess)
        {
            var itemIDToCraft = result.ItemIDToCraft;
            var dependencyContainer = result.DependencyState;
            var ingredientsDependency = dependencyContainer.ItemsState;
            var currenciesDependency = dependencyContainer.CurrenciesState;
            var readyToCraft = dependencyContainer.ReadyToGraft();
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSCraftingModule.GetRecipeDependencyStateFromCache - Get the status of all ingredients for a craft item from cache. Requires "Preload Inventory", "Preload Currency" options enabled.

using CBS;
using CBS.Models;
using UnityEngine;

public class CraftingExample : MonoBehaviour
{
    private ICrafting Crafting { get; set; }

    private void Start()
    {
        Crafting = CBSModule.Get<CBSCraftingModule>();

        var recipeID = "recipeID";
        Crafting.GetRecipeDependencyStateFromCache(recipeID, OnGetDependency);
    }

    private void OnGetDependency(CBSGetRecipeDependencyStateResult result)
    {
        if (result.IsSuccess)
        {
            var itemIDToCraft = result.ItemIDToCraft;
            var dependencyContainer = result.DependencyState;
            var ingredientsDependency = dependencyContainer.ItemsState;
            var currenciesDependency = dependencyContainer.CurrenciesState;
            var readyToCraft = dependencyContainer.ReadyToGraft();
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSCraftingModule.CraftItemFromRecipe - Craft item by inventory id (Instance ID) of the recipe. Requires instance of recipe in inventory.

using CBS;
using CBS.Models;
using UnityEngine;

public class CraftingExample : MonoBehaviour
{
    private ICrafting Crafting { get; set; }

    private void Start()
    {
        Crafting = CBSModule.Get<CBSCraftingModule>();

        var recipeInstanceID = "recipeInstanceID";
        Crafting.CraftItemFromRecipe(recipeInstanceID, OnCraftItem);
    }

    private void OnCraftItem(CBSCraftResult result)
    {
        if (result.IsSuccess)
        {
            var craftedItemInstance = result.CraftedItemInstance;
            var spendedInstancesIDs = result.SpendedInstancesIDs;
            var spendedCurrencies = result.SpendedCurrencies;
            var consumedItems = result.ConsumedItems;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSCraftingModule.CraftItemFromRecipeTemplate - Craft item by item id (Catalog Item ID) of the recipe. Does not require an instance of recipe in inventory.

using CBS;
using CBS.Models;
using UnityEngine;

public class CraftingExample : MonoBehaviour
{
    private ICrafting Crafting { get; set; }

    private void Start()
    {
        Crafting = CBSModule.Get<CBSCraftingModule>();

        var recipeItemID = "recipeID";
        Crafting.CraftItemFromRecipeTemplate(recipeItemID, OnCraftItem);
    }

    private void OnCraftItem(CBSCraftResult result)
    {
        if (result.IsSuccess)
        {
            var craftedItemInstance = result.CraftedItemInstance;
            var spendedInstancesIDs = result.SpendedInstancesIDs;
            var spendedCurrencies = result.SpendedCurrencies;
            var consumedItems = result.ConsumedItems;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSCraftingModule.GetItemNextUpgradeState - Get the status of next item upgrade, include ingredients dependency.

using CBS;
using CBS.Models;
using UnityEngine;

public class CraftingExample : MonoBehaviour
{
    private ICrafting Crafting { get; set; }

    private void Start()
    {
        Crafting = CBSModule.Get<CBSCraftingModule>();

        var itemInstanceID = "instance id";
        Crafting.GetItemNextUpgradeState(itemInstanceID, OnGetState);
    }

    private void OnGetState(CBSGetNextUpgradeStateResult result)
    {
        if (result.IsSuccess)
        {
            var profileID = result.ProfileID;
            var itemID = result.ItemID;
            var instanceID = result.ItemInstanceID;
            var reachMaxUpgrade = result.IsMax;
            var currentUpgradeIndex = result.CurrentUpgradeIndex;
            var nextUpgradeIndex = result.NextUpgradeIndex;
            var nextUpgradeState = result.NextUpgradeState;
            var dependencyState = result.DependencyState;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSCraftingModule.GetItemNextUpgradeStateFromCache - Get the status of next item upgrade from cache, include ingredients dependency. Requires "Preload Inventory", "Preload Currency" options enabled.

using CBS;
using CBS.Models;
using UnityEngine;

public class CraftingExample : MonoBehaviour
{
    private ICrafting Crafting { get; set; }

    private void Start()
    {
        Crafting = CBSModule.Get<CBSCraftingModule>();

        var itemInstanceID = "instance id";
        Crafting.GetItemNextUpgradeStateFromCache(itemInstanceID, OnGetState);
    }

    private void OnGetState(CBSGetNextUpgradeStateResult result)
    {
        if (result.IsSuccess)
        {
            var profileID = result.ProfileID;
            var itemID = result.ItemID;
            var instanceID = result.ItemInstanceID;
            var reachMaxUpgrade = result.IsMax;
            var currentUpgradeIndex = result.CurrentUpgradeIndex;
            var nextUpgradeIndex = result.NextUpgradeIndex;
            var nextUpgradeState = result.NextUpgradeState;
            var dependencyState = result.DependencyState;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSCraftingModule.UpgradeItemToNextLevel - Upgrade item to next level.

using CBS;
using CBS.Models;
using UnityEngine;

public class CraftingExample : MonoBehaviour
{
    private ICrafting Crafting { get; set; }

    private void Start()
    {
        Crafting = CBSModule.Get<CBSCraftingModule>();

        var itemInstanceID = "instance id";
        Crafting.UpgradeItemToNextLevel(itemInstanceID, OnUpgrade);
    }

    private void OnUpgrade(CBSUpgradeItemResult result)
    {
        if (result.IsSuccess)
        {
            var profileID = result.ProfileID;
            var upgradedLevelIndex = result.UpgradedLevelIndex;
            var upgradedItem = result.UpgradedItem;
            var spendedInstanesIDs = result.SpendedInstanesIDs;
            var spendedCurrencies = result.SpendedCurrencies;
            var consumedItems = result.ConsumedItems;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

Last updated