Beispiel #1
0
        /// <summary>
        /// Gets the purchasable item with the given <c>productId</c>.
        /// </summary>
        /// <param name="productId">Product id.</param>
        /// <exception cref="VirtualItemNotFoundException">Exception is thrown if item is not found.</exception>
        /// <returns>Purchasable virtual item with the given id.</returns>
        public static PurchasableVirtualItem GetPurchasableItemWithProductId(string productId)
        {
            SoomlaUtils.LogDebug(TAG, "Trying to fetch a purchasable item with productId: " + productId);

            PurchasableVirtualItem item;

            if (PurchasableItems != null && PurchasableItems.TryGetValue(productId, out item))
            {
                return(item);
            }

            throw new VirtualItemNotFoundException("productId", productId);
        }
        public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
        {
            ScriptDirectoryItem dirItem;

            if (PurchasableItems.TryGetValue(args.purchasedProduct.definition.id, out dirItem))
            {
                m_Logger.Debug(string.Format("PurchaseManager ProcessPurchase: PASS. Product: '{0}'", args.purchasedProduct.definition.id));

                if (ItemPurchased != null)
                {
                    ItemPurchased(this, new ItemPurchasedEventArgs(args.purchasedProduct.definition.id));
                }
            }
            else
            {
                m_Logger.Debug(string.Format("PurchaseManager ProcessPurchase: FAIL. Unrecognized product: '{0}'", args.purchasedProduct.definition.id));
            }

            return(PurchaseProcessingResult.Complete);
        }
Beispiel #3
0
        /// <summary>
        /// Removes resource from a player so they can purchase the specified item. Returns false if they can't afford it.
        /// </summary>
        public ActionResult Purchase(PurchasableItems item, bool isItemFree = false)
        {
            if (!isItemFree && !CanAfford(item))
                return ActionResult.CreateFailed("Cannot afford this.");

            switch (item)
            {
                case PurchasableItems.Road:
                    if (RoadsAvailable <= 0)
                        return ActionResult.CreateFailed("No more roads available.");
                    if (!isItemFree)
                    {
                        RemoveResources(ResourceTypes.Wood, 1);
                        RemoveResources(ResourceTypes.Brick, 1);
                    }
                    RoadsAvailable--;
                    break;
                case PurchasableItems.Settlement:
                    if (SettlementsAvailable <= 0)
                        return ActionResult.CreateFailed("No more settlements available.");
                    if (!isItemFree)
                    {
                        RemoveResources(ResourceTypes.Wood, 1);
                        RemoveResources(ResourceTypes.Brick, 1);
                        RemoveResources(ResourceTypes.Wheat, 1);
                        RemoveResources(ResourceTypes.Sheep, 1);
                    }
                    SettlementsAvailable--;
                    break;
                case PurchasableItems.City:
                    if (CitiesAvailable <= 0)
                        return ActionResult.CreateFailed("No more cities available.");
                    if (!isItemFree)
                    {
                        RemoveResources(ResourceTypes.Wheat, 2);
                        RemoveResources(ResourceTypes.Ore, 3);
                    }
                    SettlementsAvailable++;
                    CitiesAvailable--;
                    break;
                case PurchasableItems.DevelopmentCard:
                    if (!isItemFree)
                    {
                        RemoveResources(ResourceTypes.Wheat, 1);
                        RemoveResources(ResourceTypes.Sheep, 1);
                        RemoveResources(ResourceTypes.Ore, 1);
                    }
                    break;
            }
            return ActionResult.CreateSuccess();
        }
Beispiel #4
0
 /// <summary>
 /// Returns true if the player can afford a certain item.
 /// </summary>
 /// <param name="item"></param>
 /// <returns></returns>
 public bool CanAfford(PurchasableItems item)
 {
     switch (item)
     {
         case PurchasableItems.Road:
             return HasAtLeast(ResourceTypes.Wood, 1) &&
                    HasAtLeast(ResourceTypes.Brick, 1);
         case PurchasableItems.Settlement:
             return HasAtLeast(ResourceTypes.Wood, 1) &&
                    HasAtLeast(ResourceTypes.Brick, 1) &&
                    HasAtLeast(ResourceTypes.Wheat, 1) &&
                    HasAtLeast(ResourceTypes.Sheep, 1);
         case PurchasableItems.City:
             return HasAtLeast(ResourceTypes.Wheat, 2) &&
                    HasAtLeast(ResourceTypes.Ore, 3);
         case PurchasableItems.DevelopmentCard:
             return HasAtLeast(ResourceTypes.Wheat, 1) &&
                    HasAtLeast(ResourceTypes.Sheep, 1) &&
                    HasAtLeast(ResourceTypes.Ore, 1);
     }
     return false;
 }