/** * Equips the current <code>EquippableVG</code>. * The equipping is done according to the equipping model ('GLOBAL', 'CATEGORY', or 'LOCAL'). * * @param notify if true post event to bus * @throws NotEnoughGoodsException */ public void equip(bool notify) { // only if the user has bought this EquippableVG, the EquippableVG is equipped. if (StorageManager.getVirtualGoodsStorage().getBalance(this) > 0) { if (mEquippingModel == EquippingModel.CATEGORY) { VirtualCategory category = null; try { category = StoreInfo.getCategory(getItemId()); } catch (VirtualItemNotFoundException e) { SoomlaUtils.LogError(TAG, "Tried to unequip all other category VirtualGoods but there was no " + "associated category. virtual good itemId: " + getItemId() + " " + e.Message); return; } foreach (String goodItemId in category.getGoodsItemIds()) { EquippableVG equippableVG = null; try { equippableVG = (EquippableVG)StoreInfo.getVirtualItem(goodItemId); if (equippableVG != null && equippableVG != this) { equippableVG.unequip(notify); } } catch (VirtualItemNotFoundException e) { SoomlaUtils.LogError(TAG, "On equip, couldn't find one of the itemIds " + "in the category. Continuing to the next one. itemId: " + goodItemId + " " + e.Message); } catch (InvalidCastException ex) { SoomlaUtils.LogDebug(TAG, "On equip, an error occurred. It's a debug " + "message b/c the VirtualGood may just not be an EquippableVG. " + "itemId: " + goodItemId + " " + ex.Message); } } } else if (mEquippingModel == EquippingModel.GLOBAL) { foreach (VirtualGood good in StoreInfo.getGoods()) { if (good != this && good is EquippableVG) { ((EquippableVG)good).unequip(notify); } } } StorageManager.getVirtualGoodsStorage().equip(this, notify); } else { throw new NotEnoughGoodsException(getItemId()); } }
/** * Equips the given <code>EquippableVG</code>. * * @param good the <code>EquippableVG</code> to equip */ public void equip(EquippableVG good) { equip(good, true); }
/** * Helper function for <code>equip</code> and <code>unequip</code> functions. */ private void equipPriv(EquippableVG good, bool equip, bool notify) { SoomlaUtils.LogDebug(mTag, (!equip ? "unequipping " : "equipping ") + good.getName() + "."); String itemId = good.getItemId(); String key = keyGoodEquipped(itemId); if (equip) { KeyValueStorage.SetValue(key, ""); if (notify) { BusProvider.Instance.Post(new GoodEquippedEvent(good)); } } else { KeyValueStorage.DeleteKeyValue(key); if (notify) { BusProvider.Instance.Post(new GoodUnEquippedEvent(good)); } } }
/** * UnEquips the given <code>EquippableVG</code>. * * @param good the <code>EquippableVG</code> to unequip * @param notify if true post event to bus */ public void unequip(EquippableVG good, bool notify) { if (!isEquipped(good)) { return; } equipPriv(good, false, notify); }
/** * UnEquips the given <code>EquippableVG</code>. * * @param good the <code>EquippableVG</code> to unequip */ public void unequip(EquippableVG good) { unequip(good, true); }
/** * Checks if the given <code>EquippableVG</code> is currently equipped or not. * * @param good the <code>EquippableVG</code> to check the status for * @return true if the given good is equipped, false otherwise */ public bool isEquipped(EquippableVG good) { SoomlaUtils.LogDebug(mTag, "checking if virtual good with itemId: " + good.getItemId() + " is equipped."); String itemId = good.getItemId(); String key = keyGoodEquipped(itemId); String val = KeyValueStorage.GetValue(key); return val != null; }
/** * Equips the given <code>EquippableVG</code>. * * @param good the EquippableVG to equip * @param notify if notify is true post event to bus */ public void equip(EquippableVG good, bool notify) { if (isEquipped(good)) { return; } equipPriv(good, true, notify); }
/** Private functions **/ /** * Transforms given JSONObject to StoreInfo * * @param JSONObject * @throws JSONException */ private static void fromJSONObject(JSONObject JSONObject) { 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>(); if (JSONObject.HasField(StoreJSONConsts.STORE_CURRENCIES)) { JSONObject virtualCurrencies = JSONObject[StoreJSONConsts.STORE_CURRENCIES]; for (int i=0; i<virtualCurrencies.Count; i++){ JSONObject o = virtualCurrencies[i]; VirtualCurrency c = new VirtualCurrency(o); mCurrencies.Add(c); mVirtualItems.Add(c.getItemId(), c); } } if (JSONObject.HasField(StoreJSONConsts.STORE_CURRENCYPACKS)) { JSONObject currencyPacks = JSONObject[StoreJSONConsts.STORE_CURRENCYPACKS]; for (int i=0; i<currencyPacks.Count; i++){ JSONObject o = currencyPacks[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 (JSONObject.HasField(StoreJSONConsts.STORE_GOODS)) { JSONObject virtualGoods = JSONObject[StoreJSONConsts.STORE_GOODS]; if (virtualGoods.HasField(StoreJSONConsts.STORE_GOODS_SU)) { JSONObject suGoods = virtualGoods[StoreJSONConsts.STORE_GOODS_SU]; for (int i=0; i<suGoods.Count; i++){ JSONObject o = suGoods[i]; SingleUseVG g = new SingleUseVG(o); addVG(g); } } if (virtualGoods.HasField(StoreJSONConsts.STORE_GOODS_LT)) { JSONObject ltGoods = virtualGoods[StoreJSONConsts.STORE_GOODS_LT]; for (int i=0; i<ltGoods.Count; i++){ JSONObject o = ltGoods[i]; LifetimeVG g = new LifetimeVG(o); addVG(g); } } if (virtualGoods.HasField(StoreJSONConsts.STORE_GOODS_EQ)) { JSONObject eqGoods = virtualGoods[StoreJSONConsts.STORE_GOODS_EQ]; for (int i=0; i<eqGoods.Count; i++){ JSONObject o = eqGoods[i]; EquippableVG g = new EquippableVG(o); addVG(g); } } if (virtualGoods.HasField(StoreJSONConsts.STORE_GOODS_PA)) { JSONObject paGoods = virtualGoods[StoreJSONConsts.STORE_GOODS_PA]; for (int i=0; i<paGoods.Count; i++){ JSONObject o = paGoods[i]; SingleUsePackVG g = new SingleUsePackVG(o); addVG(g); } } if (virtualGoods.HasField(StoreJSONConsts.STORE_GOODS_UP)) { JSONObject upGoods = virtualGoods[StoreJSONConsts.STORE_GOODS_UP]; for (int i=0; i<upGoods.Count; i++){ JSONObject o = upGoods[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 (JSONObject.HasField(StoreJSONConsts.STORE_CATEGORIES)) { JSONObject virtualCategories = JSONObject[StoreJSONConsts.STORE_CATEGORIES]; for(int i=0; i<virtualCategories.Count; i++){ JSONObject o = virtualCategories[i]; VirtualCategory category = new VirtualCategory(o); mCategories.Add(category); foreach(String goodItemId in category.getGoodsItemIds()) { mGoodsCategories.Add(goodItemId, category); } } } /* if (JSONObject.TryGetValue(StoreJSONConsts.STORE_NONCONSUMABLES, out value)) { JSONObject nonConsumables = JSONObject.Value<JSONObject>(StoreJSONConsts.STORE_NONCONSUMABLES); for (int i=0; i<nonConsumables.Count; i++){ JSONObject o = nonConsumables.Value<JSONObject>(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); } } }*/ }
public GoodUnEquippedEvent(EquippableVG good, object sender) : base(sender) { mGood = good; }
public GoodUnEquippedEvent(EquippableVG good) : this(good, null) { }
/** * Helper function for <code>equip</code> and <code>unequip</code> functions. */ private void equipPriv(EquippableVG good, bool equip, bool notify) { }
/** * Checks if the given <code>EquippableVG</code> is currently equipped or not. * * @param good the <code>EquippableVG</code> to check the status for * @return true if the given good is equipped, false otherwise */ public bool isEquipped(EquippableVG good) { return false; }
private void UpdateGoodUnequip(EquippableVG good) { Button equipB = (Button)MainStackPanel.FindName(good.getItemId() + "equip"); equipB.Content = "equip"; equipB.Click += equipItem; equipB.Click -= unequipItem; }
public void PostGoodUnEquippedEvent(EquippableVG good) { LogEvent("GoodUnEquipped"); if (OnGoodUnEquippedEvent != null) { OnGoodUnEquippedEvent(good); } }
public void Prepare(int version, String JsonStoreAssets) { try { SoomlaUtils.LogDebug(TAG,"Prepare :\n"+JsonStoreAssets); mVersion = version; JSONObject jSONObject = new JSONObject(JsonStoreAssets,-10); JSONObject virtualCurrencies = jSONObject[StoreJSONConsts.STORE_CURRENCIES]; mVirtualCurrency = new VirtualCurrency[virtualCurrencies.Count]; for (int i = 0; i < virtualCurrencies.Count; i++) { JSONObject o = virtualCurrencies[i]; VirtualCurrency c = new VirtualCurrency(o); mVirtualCurrency[i] = c; } JSONObject currencyPacks = jSONObject[StoreJSONConsts.STORE_CURRENCYPACKS]; mVirtualCurrencyPack = new VirtualCurrencyPack[currencyPacks.Count]; for (int i = 0; i < currencyPacks.Count; i++) { JSONObject o = currencyPacks[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 JSONObject virtualGoods = jSONObject[StoreJSONConsts.STORE_GOODS]; JSONObject suGoods = virtualGoods[StoreJSONConsts.STORE_GOODS_SU]; JSONObject ltGoods = virtualGoods[StoreJSONConsts.STORE_GOODS_LT]; JSONObject eqGoods = virtualGoods[StoreJSONConsts.STORE_GOODS_EQ]; JSONObject upGoods = virtualGoods[StoreJSONConsts.STORE_GOODS_UP]; JSONObject paGoods = virtualGoods[StoreJSONConsts.STORE_GOODS_PA]; List<VirtualGood> goods = new List<VirtualGood>(); for (int i = 0; i < suGoods.Count; i++) { JSONObject o = suGoods[i]; SingleUseVG g = new SingleUseVG(o); SoomlaUtils.LogDebug(TAG, "SingleUseVG " + g.getItemId()); goods.Add(g); } for (int i = 0; i < ltGoods.Count; i++) { JSONObject o = ltGoods[i]; LifetimeVG g = new LifetimeVG(o); SoomlaUtils.LogDebug(TAG, "LifetimeVG " + g.getItemId()); goods.Add(g); } for (int i = 0; i < eqGoods.Count; i++) { JSONObject o = eqGoods[i]; EquippableVG g = new EquippableVG(o); SoomlaUtils.LogDebug(TAG, "EquippableVG " + g.getItemId()); goods.Add(g); } for (int i = 0; i < paGoods.Count; i++) { JSONObject o = paGoods[i]; SingleUsePackVG g = new SingleUsePackVG(o); SoomlaUtils.LogDebug(TAG, "SingleUsePackVG " + g.getItemId()); goods.Add(g); } for (int i = 0; i < upGoods.Count; i++) { JSONObject o = upGoods[i]; UpgradeVG g = new UpgradeVG(o); SoomlaUtils.LogDebug(TAG, "UpgradeVG " + g.getItemId()); goods.Add(g); } mVirtualGood = new VirtualGood[goods.Count]; for(int i = 0; i < goods.Count; i++) { SoomlaUtils.LogDebug(TAG, "VirtualGood " + goods[i].getItemId()); mVirtualGood[i] = goods[i]; } // categories depend on virtual goods. That's why the have to be initialized after! JSONObject virtualCategories = jSONObject[StoreJSONConsts.STORE_CATEGORIES]; mVirtualCategory = new VirtualCategory[virtualCategories.Count]; for (int i = 0; i < virtualCategories.Count; i++) { JSONObject o = virtualCategories[i]; VirtualCategory category = new VirtualCategory(o); mVirtualCategory[i] = category; } /* JArray nonConsumables = JSONObject.Value<JArray>(StoreJSONConsts.STORE_NONCONSUMABLES); mNonConsumableItem = new NonConsumableItem[nonConsumables.Count]; for (int i = 0; i < nonConsumables.Count; i++) { JSONObject o = nonConsumables.Value<JSONObject>(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); } }
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); } }