Example #1
0
    //--------------------------------------------------------------------------------------------------
    //--------------------------------------------------------------------------------------------------
    // Private methods
    //--------------------------------------------------------------------------------------------------
    //--------------------------------------------------------------------------------------------------

    static float GetOneGoldCoinPrice(InAppProduct product, FundSettingsManager fundSettingsManager)
    {
        float productPrice   = GetProductPrice(product);
        int   goldCoinsCount = GetGoldCoinsCount(product, fundSettingsManager);

        return(productPrice / goldCoinsCount);
    }
Example #2
0
    //--------------------------------------------------------------------------------------------------
    //--------------------------------------------------------------------------------------------------

    // Return the product sale relative to the base product.
    // return number < 0 if getting product sale fails
    public static int GetProductSaleInPercent(string productId,
                                              string baseProductId,
                                              InAppInventory productsInventory,
                                              FundSettingsManager fundSettingsManager)
    {
        // method failed return code
        const int failed = -1;

        InAppProduct product     = productsInventory.Product(productId);
        InAppProduct baseProduct = productsInventory.Product(baseProductId);

        if (baseProduct == null)
        {
            Debug.LogWarning("ProductsSalesProvider -> GetProductSaleInPercent: BaseProduct with id " + baseProductId +
                             " is not contained in the inventory. Product sale cannot be computed.");
            return(failed);
        }

        if (product == null)
        {
            return(failed);
        }

        float baseProductCoinPrice = GetOneGoldCoinPrice(baseProduct, fundSettingsManager);
        float productCoinPrice     = GetOneGoldCoinPrice(product, fundSettingsManager);

        float productSale          = (baseProductCoinPrice / productCoinPrice) - 1;
        int   productSaleInPercent = (int)Math.Round(productSale * 100);

        return(productSaleInPercent);
    }
Example #3
0
    // --------
    static FundSettingsManager GetInstance()
    {
        if (s_Instance == null)
        {
            s_Instance = ScriptableObject.CreateInstance <FundSettingsManager>();
            s_Instance.Init("_Settings/_FundSettings");
            ScriptableObject.DontDestroyOnLoad(s_Instance);
        }

        return(s_Instance);
    }
Example #4
0
    //--------------------------------------------------------------------------------------------------
    //--------------------------------------------------------------------------------------------------

    // return number < 0 if fails
    static int GetGoldCoinsCount(InAppProduct product, FundSettingsManager fundSettingsManager)
    {
        // method failed return code
        const int failed = -1;

        try
        {
            int          fundGUID = GetFundGUID(product.ProductId);
            FundSettings fund     = fundSettingsManager.FindByGUID(fundGUID);

            return(fund.AddGold);
        }
        catch
        {
            return(failed);
        }
    }
Example #5
0
    //--------------------------------------------------------------------------------------------------
    //--------------------------------------------------------------------------------------------------

    // Return the product sale relative to the cheapest product in the shop funds.
    // return number < 0 if getting product sale fails
    public static int GetProductSaleInPercent(string productId,
                                              List <ShopItemId> shopFunds,
                                              InAppInventory productsInventory,
                                              FundSettingsManager fundSettingsManager)
    {
        // method failed return code
        const int failed = -1;

        string cheapestProductId = GetCheapestProductId(shopFunds, productsInventory, fundSettingsManager);

        if (cheapestProductId != null)
        {
            return(GetProductSaleInPercent(productId, cheapestProductId, productsInventory, fundSettingsManager));
        }
        else
        {
            return(failed);
        }
    }
Example #6
0
    //--------------------------------------------------------------------------------------------------
    //--------------------------------------------------------------------------------------------------

    // return null if fails
    static string GetProductId(ShopItemId shopItem, FundSettingsManager fundSettingsManager)
    {
        return(fundSettingsManager.Get((E_FundID)(shopItem.Id)).GUID.ToString());
    }
Example #7
0
    //--------------------------------------------------------------------------------------------------
    //--------------------------------------------------------------------------------------------------

    // return number < 0 if fails
    static float GetProductPriceForFund(ShopItemId shopFund, InAppInventory productsInventory, FundSettingsManager fundSettingsManager)
    {
        // method failed return code
        const float failed = -1;

        string productId = GetProductId(shopFund, fundSettingsManager);

        if (productId == null)
        {
            return(failed);
        }

        InAppProduct product = productsInventory.Product(productId);

        if (product == null)
        {
            return(failed);
        }

        return(GetProductPrice(product));
    }
Example #8
0
    //--------------------------------------------------------------------------------------------------
    //--------------------------------------------------------------------------------------------------

    // return null if fails
    static string GetCheapestProductId(List <ShopItemId> shopFunds, InAppInventory productsInventory, FundSettingsManager fundSettingsManager)
    {
        string cheapestProductId    = null;
        float  cheapestProductPrice = float.MaxValue;

        foreach (ShopItemId shopFund in shopFunds)
        {
            float productPrice = GetProductPriceForFund(shopFund, productsInventory, fundSettingsManager);

            if (productPrice >= 0 && productPrice < cheapestProductPrice)
            {
                cheapestProductId    = GetProductId(shopFund, fundSettingsManager);
                cheapestProductPrice = productPrice;
            }
        }

        return(cheapestProductId);
    }