Ejemplo n.º 1
0
    public void SetButton(Sprite icon, string sId, StoreItem sItem)
    {
        storeId     = sId;
        storeItem   = sItem;
        catalogItem = PF_GameData.GetCatalogItemById(sItem.ItemId);

        var displayName = catalogItem != null ? catalogItem.DisplayName : "Unknown item";

        ActivateButton();
        image.overrideSprite = icon;

        gameObject.name = displayName;
        ItemDesc.text   = displayName;

        btn.onClick.RemoveAllListeners();
        btn.onClick.AddListener(() =>
        {
            controller.selectedItem = this;
            InitiatePurchase();
        });

        uint salePrice, basePrice;

        finalPrice = GetPrice(out salePrice, out basePrice, out currencyKey);
        SetIcon();
        SetPrice(salePrice, basePrice, currencyKey);
    }
Ejemplo n.º 2
0
    public void InitiateViewer(List <string> items) // need a new flag to determine if we should unpack to a player or a character
    {
        pfItems.Clear();
        openedBoxes.Clear();

        if (PF_GameData.catalogItems == null || PF_GameData.catalogItems.Count == 0)
        {
            return;
        }

        foreach (var item in items)
        {
            var catalogItem = PF_GameData.GetCatalogItemById(item);
            if (catalogItem != null)
            {
                pfItems.Add(catalogItem);
            }
        }

        PrevItemButton.interactable = false;
        NextItemButton.interactable = pfItems.Count != 1;

        //select the first in the list
        SetSelectedItem(pfItems[0]);
        selectedIndex = 0;
        gameObject.SetActive(true);
    }
Ejemplo n.º 3
0
    public static void GetUserInventory(Action callback = null)
    {
        DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.GetUserInventory);
        PlayFabClientAPI.GetUserInventory(new GetUserInventoryRequest(), (GetUserInventoryResult result) =>
        {
            virtualCurrency.Clear();
            playerInventory.Clear();

            foreach (var pair in result.VirtualCurrency)
            {
                virtualCurrency.Add(pair.Key, pair.Value);
            }
            foreach (var eachItem in result.Inventory)
            {
                playerInventory.Add(eachItem);
            }
            inventoryByCategory.Clear();

            if (PF_GameData.catalogItems.Count > 0)
            {
                foreach (var item in playerInventory)
                {
                    if (inventoryByCategory.ContainsKey(item.ItemId))
                    {
                        continue;
                    }

                    var catalogItem = PF_GameData.GetCatalogItemById(item.ItemId);
                    if (catalogItem == null)
                    {
                        continue;
                    }

                    var items      = playerInventory.FindAll(x => { return(x.ItemId.Equals(item.ItemId)); });
                    var customIcon = PF_GameData.GetIconByItemById(catalogItem.ItemId);
                    var icon       = GameController.Instance.iconManager.GetIconById(customIcon, IconManager.IconTypes.Item);
                    inventoryByCategory.Add(item.ItemId, new InventoryCategory(item.ItemId, catalogItem, items, icon));
                }
            }

            if (callback != null)
            {
                callback();
            }

            PF_Bridge.RaiseCallbackSuccess("", PlayFabAPIMethods.GetUserInventory, MessageDisplayStyle.none);
        }, PF_Bridge.PlayFabErrorCallback);
    }
Ejemplo n.º 4
0
    public void SetupSlider(UnityAction <UnlockContainerItemResult> callback = null)
    {
        afterUnlock          = callback;
        ItemDescription.text = controller.selectedItem.Description;

        if (controller.selectedItem.Container != null)
        {
            var keyId        = controller.selectedItem.Container.KeyItemId;
            var keyReference = PF_GameData.GetCatalogItemById(keyId);
            endIcon.gameObject.SetActive(keyReference != null);
            if (keyReference != null)
            {
                var chestQty = PF_PlayerData.GetItemQty(controller.selectedItem.ItemId);
                var keyQty   = PF_PlayerData.GetItemQty(keyId);
                var useColor = (chestQty > 0 && keyQty > 0) ? Color.cyan : Color.red;

                endIcon.color       = useColor;
                sliderMessage.text  = string.Format("{0} Required ({1} available)", keyReference.DisplayName, Mathf.Min(chestQty, keyQty));
                sliderMessage.color = useColor;

                var iconName = PF_GameData.GetIconByItemById(keyReference.ItemId, GlobalStrings.BRONZE_KEY_ICON);
                var icon     = GameController.Instance.iconManager.GetIconById(iconName, IconManager.IconTypes.Item);
                handle.overrideSprite = icon;
            }
            else
            {
                handle.overrideSprite = GameController.Instance.iconManager.GetIconById(GlobalStrings.DARKSTONE_LOCK_ICON, IconManager.IconTypes.Misc);
                sliderMessage.text    = GlobalStrings.UNLOCKED_MSG;
            }
        }
        else
        {
            sliderMessage.text = GlobalStrings.UNLOCKED_MSG;
            // set default key icon or lock or something...
        }
    }
Ejemplo n.º 5
0
    public void SetButton(Sprite icon, CatalogItem cItem)
    {
        ActivateButton();
        this.image.overrideSprite = icon;

        this.ItemDesc.text = cItem.DisplayName;
        string currencyKey    = "RM";
        string currencyFormat = "{0:C2}";

        ItemCurrencyIcon.sprite = CurrencyIcons[0];
        //For now disable uses:
        Savings.gameObject.SetActive(false);

        if (cItem.VirtualCurrencyPrices.ContainsKey(GlobalStrings.GEM_CURRENCY))
        {
            currencyKey             = GlobalStrings.GEM_CURRENCY;
            currencyFormat          = "{0}";
            ItemCurrencyIcon.sprite = CurrencyIcons[1];
        }
        else if (cItem.VirtualCurrencyPrices.ContainsKey(GlobalStrings.GOLD_CURRENCY))
        {
            currencyKey             = GlobalStrings.GOLD_CURRENCY;
            currencyFormat          = "{0}";
            ItemCurrencyIcon.sprite = CurrencyIcons[2];
        }

        // check prices to see if this is a better deal than MSRP
        this.Savings.gameObject.SetActive(false);
        CatalogItem msrp = PF_GameData.GetCatalogItemById(cItem.ItemId);
        uint        msrpPrice;

        if (msrp != null && msrp.VirtualCurrencyPrices != null && msrp.VirtualCurrencyPrices.TryGetValue(currencyKey, out msrpPrice))
        {
            // check prices to see if this is a better deal than MSRP
            uint salePrice;
            cItem.VirtualCurrencyPrices.TryGetValue(currencyKey, out salePrice);

            if (salePrice < msrpPrice)
            {
                // VC only, not adjusting RM prices yet.
                float percent = (((float)msrpPrice - (float)salePrice) / (float)msrpPrice);
                this.SavingsText.text = string.Format("Save\n{0}%", Mathf.RoundToInt(percent * 100f));
                this.Savings.gameObject.SetActive(true);
            }
        }

        string price = string.Empty;

        if (currencyKey == "RM" && cItem.VirtualCurrencyPrices.ContainsKey(currencyKey))
        {
            uint pennies = cItem.VirtualCurrencyPrices[currencyKey];
            price = string.Format(currencyFormat, (float)pennies / 100f);
        }
        else if (cItem.VirtualCurrencyPrices.ContainsKey(currencyKey))
        {
            price = string.Format(currencyFormat, cItem.VirtualCurrencyPrices[currencyKey]);
        }
        this.ItemPrice.text = price;

        btn.onClick.RemoveAllListeners();
        btn.onClick.AddListener(() =>
        {
            controller.selectedItem = this;
            controller.InitiatePurchase();
        });

        this.catalogItem = cItem;
    }
Ejemplo n.º 6
0
    private static void OnGetUserAccountInfoSuccess(GetPlayerCombinedInfoResult result)
    {
        playerInventory.Clear();
        foreach (var eachItem in result.InfoResultPayload.UserInventory)
        {
            playerInventory.Add(eachItem);
        }
        accountInfo = result.InfoResultPayload.AccountInfo;

        if (result.InfoResultPayload.UserData.ContainsKey("IsRegisteredForPush"))
        {
            isRegisteredForPush = result.InfoResultPayload.UserData["IsRegisteredForPush"].Value == "1";
        }
        else
        {
            isRegisteredForPush = false;
        }

        if (result.InfoResultPayload.UserData.ContainsKey("ShowAccountOptionsOnLogin") && result.InfoResultPayload.UserData["ShowAccountOptionsOnLogin"].Value == "0")
        {
            showAccountOptionsOnLogin = false;
        }
        else //if (PF_Authentication.hasLoggedInOnce == false)
        {
            //PF_Authentication.hasLoggedInOnce = true;
            DialogCanvasController.RequestAccountSettings();
        }

        inventoryByCategory.Clear();
        if (PF_GameData.catalogItems.Count > 0)
        {
            foreach (var item in playerInventory)
            {
                if (inventoryByCategory.ContainsKey(item.ItemId))
                {
                    continue;
                }

                var catalogItem = PF_GameData.GetCatalogItemById(item.ItemId);
                if (catalogItem == null)
                {
                    continue;
                }

                var items      = new List <ItemInstance>(playerInventory.FindAll((x) => { return(x.ItemId.Equals(item.ItemId)); }));
                var customIcon = PF_GameData.GetIconByItemById(catalogItem.ItemId);
                var icon       = GameController.Instance.iconManager.GetIconById(customIcon, IconManager.IconTypes.Item);
                inventoryByCategory.Add(item.ItemId, new InventoryCategory(item.ItemId, catalogItem, items, icon));
            }
        }

        if (PF_Authentication.GetDeviceId(true))
        {
            Debug.Log("Mobile Device ID Found!");

            var deviceId = string.IsNullOrEmpty(PF_Authentication.android_id) ? PF_Authentication.ios_id : PF_Authentication.android_id;
            PlayerPrefs.SetString("LastDeviceIdUsed", deviceId);
        }
        else
        {
            Debug.Log("Custom Device ID Found!");

            if (string.IsNullOrEmpty(PF_Authentication.custom_id))
            {
                PlayerPrefs.SetString("LastDeviceIdUsed", PF_Authentication.custom_id);
            }
        }

        virtualCurrency.Clear();
        foreach (var eachPair in result.InfoResultPayload.UserVirtualCurrency)
        {
            virtualCurrency.Add(eachPair.Key, eachPair.Value);
        }

        PF_Bridge.RaiseCallbackSuccess("Player Account Info Loaded", PlayFabAPIMethods.GetAccountInfo, MessageDisplayStyle.none);
    }
Ejemplo n.º 7
0
    public void SetSelectedItem(CatalogItem item)
    {
        selectedItem = item;

        CurrentItemName.text = selectedItem.DisplayName;
        CurrentItemDesc.text = selectedItem.Description;
        ItemCount.text       = string.Format("{0}/{1}", selectedIndex + 1, pfItems.Count);
        // refresh the UI

        currentIconId = PF_GameData.GetIconByItemById(item.ItemId);
        var icon = GameController.Instance.iconManager.GetIconById(currentIconId, IconManager.IconTypes.Item);

        CurrentIcon.overrideSprite = icon;

        if (openedBoxes.ContainsKey(selectedIndex))
        {
            // this container has been opened, show the items...
            if (PF_GameData.IsContainer(selectedItem.ItemId))
            {
                CurrentIcon.overrideSprite = GameController.Instance.iconManager.GetIconById(currentIconId + "_Open", IconManager.IconTypes.Item);
            }
            EnableContainerMode(true);
            return;
        }

        // test bundles here....
        // if bundle, we need to show the contents, but not remove it from the list, as it will be unpacked and added automatically
        if (selectedItem.Bundle != null && (selectedItem.Bundle.BundledItems != null || selectedItem.Bundle.BundledResultTables != null || selectedItem.Bundle.BundledVirtualCurrencies != null))
        {
            var bundleItems = new List <ContainerResultItem>();

            if (selectedItem.Bundle.BundledItems != null && selectedItem.Bundle.BundledItems.Count > 0)
            {
                foreach (var award in selectedItem.Bundle.BundledItems)
                {
                    var catalogItem = PF_GameData.GetCatalogItemById(award);
                    var awardIcon   = PF_GameData.GetIconByItemById(award);
                    bundleItems.Add(new ContainerResultItem
                    {
                        displayIcon = GameController.Instance.iconManager.GetIconById(awardIcon, IconManager.IconTypes.Item),
                        displayName = catalogItem.DisplayName
                    });
                }
            }

            if (selectedItem.Bundle.BundledResultTables != null && selectedItem.Bundle.BundledResultTables.Count > 0)
            {
                foreach (var award in selectedItem.Bundle.BundledResultTables)
                {
                    bundleItems.Add(new ContainerResultItem
                    {
                        displayIcon = GameController.Instance.iconManager.GetIconById("DropTable", IconManager.IconTypes.Misc),
                        displayName = string.Format("Drop Table: {0}", award)
                    });
                }
            }

            if (selectedItem.Bundle.BundledVirtualCurrencies != null && selectedItem.Bundle.BundledVirtualCurrencies.Count > 0)
            {
                foreach (var award in selectedItem.Bundle.BundledVirtualCurrencies)
                {
                    bundleItems.Add(new ContainerResultItem
                    {
                        displayIcon = GameController.Instance.iconManager.GetIconById(award.Key, IconManager.IconTypes.Item),
                        displayName = string.Format("{1} Award: {0:n0}", award.Value, award.Key)
                    });
                }
            }

            if (bundleItems.Count > 0)
            {
                openedBoxes.Add(selectedIndex, bundleItems);
                EnableContainerMode(true);
                // dont fall through the rest of the logic.
                return;
            }
        }

        if (PF_GameData.IsContainer(selectedItem.ItemId))
        {
            EnableContainerMode();
        }
        else
        {
            DisableContainerMode();
        }
    }