/* * * * Buying items * * * */ ///<summary>Updates gold amount and relevant item count as appropriate. Also updates expiration date if applicable.</summary> public static bool buyItem(int id) { StoreItem item = STORE_ITEMS[id]; string key = item.getKey(); int numBought = DataAndSettingsManager.getNumBoughtForStoreItem(key); int gold = DataAndSettingsManager.getGoldAmount(); if (gold >= item.getCost() && (id < getNumExpendables() || numBought < 1)) { DataAndSettingsManager.setNumBoughtForStoreItem(key, numBought + 1); DataAndSettingsManager.setGoldAmount(gold -= item.getCost()); if (item.hasLifespan()) { DateTime expiration = DataAndSettingsManager.getExpirationDateForStoreItem(key); DateTime now = DateTime.Now; TimeSpan lifespan = new TimeSpan(item.getLifespanHours(), 0, 0); if (expiration.CompareTo(now) < 0) { // the item has already expired, so set a new expiration date DataAndSettingsManager.setExpirationDateForStoreItem(key, now.Add(lifespan)); } else { // the item hasn't expired yet, so advance the expiration date further DataAndSettingsManager.setExpirationDateForStoreItem(key, expiration.Add(lifespan)); } //Debug.Log("expiration date was " + expiration.ToString()); } return(true); } return(false); }
/* * * * Item-specific methods * * * */ ///<summary>Returns whether interstitial ads should be shown, based on whether the temporary no-ads item is active. /// Should also check whether the user has bought the permanent no-ads IAP.</summary> public static bool shouldShowAds() { DateTime expiration = DataAndSettingsManager.getExpirationDateForStoreItem(ITEM_KEY_NO_ADS_TEMPORARY); DateTime now = DateTime.Now; return(expiration.CompareTo(now) < 0); }
///<summary>Sets the counts of items with lifespans according to how many lifespans are left before their expiration dates.</summary> public static void updateLifespanItemCounts() { foreach (StoreItem item in STORE_ITEMS) { string key = item.getKey(); int numBought = DataAndSettingsManager.getNumBoughtForStoreItem(key); if (numBought > 0 && item.hasLifespan()) { DateTime expiration = DataAndSettingsManager.getExpirationDateForStoreItem(key); DateTime now = DateTime.Now; int difference = expiration.Subtract(now).Hours; if (difference > 0) { DataAndSettingsManager.setNumBoughtForStoreItem(key, difference / item.getLifespanHours()); } else { DataAndSettingsManager.setNumBoughtForStoreItem(key, 0); } } } }