/* * * * 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); }
///<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); } } } }
///<summary>Decrements the item count by 1. For now, actual item functionality should be handled where the item is expended.</summary> public static void expendItem(string key) // TODO: consider handling item functionality in here { int numBought = DataAndSettingsManager.getNumBoughtForStoreItem(key); DataAndSettingsManager.setNumBoughtForStoreItem(key, numBought - 1); }