예제 #1
0
    /* * * * 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);
    }
예제 #2
0
    /* * * * 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);
    }
예제 #3
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);
             }
         }
     }
 }