/// <summary> Removes the given nonConsumableItem. </summary> /// /// <param name="nonConsumableItem"> The non consumable item. </param> /// /// <returns> true if it succeeds, false if it fails. </returns> public bool remove(NonConsumableItem nonConsumableItem){ SoomlaUtils.LogDebug(TAG, "Removing " + nonConsumableItem.getName()); String itemId = nonConsumableItem.getItemId(); String key = keyNonConsExists(itemId); KeyValueStorage.DeleteKeyValue(key); return false; }
/// <summary> Adds the given non-consumable item to the storage. </summary> /// /// <param name="nonConsumableItem"> The non consumable item. </param> /// /// <returns> true if it succeeds, false if it fails. </returns> public bool add(NonConsumableItem nonConsumableItem){ SoomlaUtils.LogDebug(TAG, "Adding " + nonConsumableItem.getItemId()); String itemId = nonConsumableItem.getItemId(); String key = keyNonConsExists(itemId); KeyValueStorage.SetValue(key, ""); return true; }
/// <summary> Checks if the given <c>NonConsumableItem</c> exists. </summary> /// /// <param name="nonConsumableItem"> The non consumable item. </param> /// /// <returns> true if it succeeds, false if it fails. </returns> public bool nonConsumableItemExists(NonConsumableItem nonConsumableItem){ SoomlaUtils.LogDebug(TAG, "Checking if the given MANAGED item exists."); String itemId = nonConsumableItem.getItemId(); String key = keyNonConsExists(itemId); String val = KeyValueStorage.GetValue(key); return val != null; }
public void Prepare(int version, String JsonStoreAssets) { try { mVersion = version; JObject JObject = JObject.Parse(JsonStoreAssets); JArray virtualCurrencies = JObject.Value<JArray>(StoreJSONConsts.STORE_CURRENCIES); mVirtualCurrency = new VirtualCurrency[virtualCurrencies.Count]; for (int i = 0; i < virtualCurrencies.Count; i++) { JObject o = virtualCurrencies.Value<JObject>(i); VirtualCurrency c = new VirtualCurrency(o); mVirtualCurrency[i] = c; } JArray currencyPacks = JObject.Value<JArray>(StoreJSONConsts.STORE_CURRENCYPACKS); mVirtualCurrencyPack = new VirtualCurrencyPack[currencyPacks.Count]; for (int i = 0; i < currencyPacks.Count; i++) { JObject o = currencyPacks.Value<JObject>(i); VirtualCurrencyPack pack = new VirtualCurrencyPack(o); mVirtualCurrencyPack[i] = pack; } // The order in which VirtualGoods are created matters! // For example: VGU and VGP depend on other VGs JObject virtualGoods = JObject.Value<JObject>(StoreJSONConsts.STORE_GOODS); JArray suGoods = virtualGoods.Value<JArray>(StoreJSONConsts.STORE_GOODS_SU); JArray ltGoods = virtualGoods.Value<JArray>(StoreJSONConsts.STORE_GOODS_LT); JArray eqGoods = virtualGoods.Value<JArray>(StoreJSONConsts.STORE_GOODS_EQ); JArray upGoods = virtualGoods.Value<JArray>(StoreJSONConsts.STORE_GOODS_UP); JArray paGoods = virtualGoods.Value<JArray>(StoreJSONConsts.STORE_GOODS_PA); List<VirtualGood> goods = new List<VirtualGood>(); for (int i = 0; i < suGoods.Count; i++) { JObject o = suGoods.Value<JObject>(i); SingleUseVG g = new SingleUseVG(o); goods.Add(g); } for (int i = 0; i < ltGoods.Count; i++) { JObject o = ltGoods.Value<JObject>(i); LifetimeVG g = new LifetimeVG(o); goods.Add(g); } for (int i = 0; i < eqGoods.Count; i++) { JObject o = eqGoods.Value<JObject>(i); EquippableVG g = new EquippableVG(o); goods.Add(g); } for (int i = 0; i < paGoods.Count; i++) { JObject o = paGoods.Value<JObject>(i); SingleUsePackVG g = new SingleUsePackVG(o); goods.Add(g); } for (int i = 0; i < upGoods.Count; i++) { JObject o = upGoods.Value<JObject>(i); UpgradeVG g = new UpgradeVG(o); goods.Add(g); } mVirtualGood = new VirtualGood[goods.Count]; for(int i = 0; i < goods.Count; i++) { mVirtualGood[i] = goods[i]; } // categories depend on virtual goods. That's why the have to be initialized after! JArray virtualCategories = JObject.Value<JArray>(StoreJSONConsts.STORE_CATEGORIES); mVirtualCategory = new VirtualCategory[virtualCategories.Count]; for (int i = 0; i < virtualCategories.Count; i++) { JObject o = virtualCategories.Value<JObject>(i); VirtualCategory category = new VirtualCategory(o); mVirtualCategory[i] = category; } JArray nonConsumables = JObject.Value<JArray>(StoreJSONConsts.STORE_NONCONSUMABLES); mNonConsumableItem = new NonConsumableItem[nonConsumables.Count]; for (int i = 0; i < nonConsumables.Count; i++) { JObject o = nonConsumables.Value<JObject>(i); NonConsumableItem non = new NonConsumableItem(o); mNonConsumableItem[i] = non; } } catch (Exception ex) { SoomlaUtils.LogError(TAG, "An error occurred while trying to prepare storeAssets" + ex.Message); } }
/** Private functions **/ /** * Transforms given JObject to StoreInfo * * @param JObject * @throws JSONException */ private static void fromJObject(JObject JObject) { mVirtualItems = new Dictionary<String, VirtualItem>(); mPurchasableItems = new Dictionary<String, PurchasableVirtualItem>(); mGoodsCategories = new Dictionary<String, VirtualCategory>(); mGoodsUpgrades = new Dictionary<String, List<UpgradeVG>>(); mCurrencyPacks = new List<VirtualCurrencyPack>(); mGoods = new List<VirtualGood>(); mCategories = new List<VirtualCategory>(); mCurrencies = new List<VirtualCurrency>(); mNonConsumables = new List<NonConsumableItem>(); JToken value; if (JObject.TryGetValue(StoreJSONConsts.STORE_CURRENCIES, out value)) { JArray virtualCurrencies = JObject.Value<JArray>(StoreJSONConsts.STORE_CURRENCIES); for (int i=0; i<virtualCurrencies.Count; i++){ JObject o = virtualCurrencies.Value<JObject>(i); VirtualCurrency c = new VirtualCurrency(o); mCurrencies.Add(c); mVirtualItems.Add(c.getItemId(), c); } } if (JObject.TryGetValue(StoreJSONConsts.STORE_CURRENCYPACKS, out value)) { JArray currencyPacks = JObject.Value<JArray>(StoreJSONConsts.STORE_CURRENCYPACKS); for (int i=0; i<currencyPacks.Count; i++){ JObject o = currencyPacks.Value<JObject>(i); VirtualCurrencyPack pack = new VirtualCurrencyPack(o); mCurrencyPacks.Add(pack); mVirtualItems.Add(pack.getItemId(), pack); PurchaseType purchaseType = pack.GetPurchaseType(); if (purchaseType is PurchaseWithMarket) { mPurchasableItems.Add(((PurchaseWithMarket) purchaseType) .getMarketItem().getProductId(), pack); } } } // The order in which VirtualGoods are created matters! // For example: VGU and VGP depend on other VGs if (JObject.TryGetValue(StoreJSONConsts.STORE_GOODS, out value)) { JObject virtualGoods = JObject.Value<JObject>(StoreJSONConsts.STORE_GOODS); JToken valueVg; if (virtualGoods.TryGetValue(StoreJSONConsts.STORE_GOODS_SU, out valueVg)) { JArray suGoods = virtualGoods.Value<JArray>(StoreJSONConsts.STORE_GOODS_SU); for (int i=0; i<suGoods.Count; i++){ JObject o = suGoods.Value<JObject>(i); SingleUseVG g = new SingleUseVG(o); addVG(g); } } if (virtualGoods.TryGetValue(StoreJSONConsts.STORE_GOODS_LT, out valueVg)) { JArray ltGoods = virtualGoods.Value<JArray>(StoreJSONConsts.STORE_GOODS_LT); for (int i=0; i<ltGoods.Count; i++){ JObject o = ltGoods.Value<JObject>(i); LifetimeVG g = new LifetimeVG(o); addVG(g); } } if (virtualGoods.TryGetValue(StoreJSONConsts.STORE_GOODS_EQ, out valueVg)) { JArray eqGoods = virtualGoods.Value<JArray>(StoreJSONConsts.STORE_GOODS_EQ); for (int i=0; i<eqGoods.Count; i++){ JObject o = eqGoods.Value<JObject>(i); EquippableVG g = new EquippableVG(o); addVG(g); } } if (virtualGoods.TryGetValue(StoreJSONConsts.STORE_GOODS_PA, out valueVg)) { JArray paGoods = virtualGoods.Value<JArray>(StoreJSONConsts.STORE_GOODS_PA); for (int i=0; i<paGoods.Count; i++){ JObject o = paGoods.Value<JObject>(i); SingleUsePackVG g = new SingleUsePackVG(o); addVG(g); } } if (virtualGoods.TryGetValue(StoreJSONConsts.STORE_GOODS_UP, out valueVg)) { JArray upGoods = virtualGoods.Value<JArray>(StoreJSONConsts.STORE_GOODS_UP); for (int i=0; i<upGoods.Count; i++){ JObject o = upGoods.Value<JObject>(i); UpgradeVG g = new UpgradeVG(o); addVG(g); List<UpgradeVG> upgrades = mGoodsUpgrades[g.getGoodItemId()]; if (upgrades == null) { upgrades = new List<UpgradeVG>(); mGoodsUpgrades.Add(g.getGoodItemId(), upgrades); } upgrades.Add(g); } } } // Categories depend on virtual goods. That's why the have to be initialized after! if (JObject.TryGetValue(StoreJSONConsts.STORE_CATEGORIES, out value)) { JArray virtualCategories = JObject.Value<JArray>(StoreJSONConsts.STORE_CATEGORIES); for(int i=0; i<virtualCategories.Count; i++){ JObject o = virtualCategories.Value<JObject>(i); VirtualCategory category = new VirtualCategory(o); mCategories.Add(category); foreach(String goodItemId in category.getGoodsItemIds()) { mGoodsCategories.Add(goodItemId, category); } } } if (JObject.TryGetValue(StoreJSONConsts.STORE_NONCONSUMABLES, out value)) { JArray nonConsumables = JObject.Value<JArray>(StoreJSONConsts.STORE_NONCONSUMABLES); for (int i=0; i<nonConsumables.Count; i++){ JObject o = nonConsumables.Value<JObject>(i); NonConsumableItem non = new NonConsumableItem(o); mNonConsumables.Add(non); mVirtualItems.Add(non.getItemId(), non); PurchaseType purchaseType = non.GetPurchaseType(); if (purchaseType is PurchaseWithMarket) { mPurchasableItems.Add(((PurchaseWithMarket) purchaseType) .getMarketItem().getProductId(), non); } } } }