예제 #1
0
        public void AddProduct(int barcode)
        {
            if (!ProductService.ProductExist(barcode))
            {
                return;
            }

            if (DiscountDictionary.ContainsKey(barcode))
            {
                CheckDiscount(barcode);
            }
            else
            {
                if (BuyProductList.ContainsKey(barcode))
                {
                    BuyProductList[barcode].Amount += 1;
                    BuyProductList[barcode].Price  += ProductService.GetProduct(barcode).Price;
                    DiscountDictionary.Add(barcode, 1);
                }
                else
                {
                    BuyProductList.Add(barcode, ProductService.GetProduct(barcode));
                    DiscountDictionary.Add(barcode, 1);
                }
            }
        }
예제 #2
0
            protected override List <IGenericValueOption <string> > GetAllOptions()
            {
                List <IGenericValueOption <string> > results = new List <IGenericValueOption <string> >();

                BuyProductList list = null;

                try
                {
                    list = new BuyProductList(Manager, BuildBuyProduct.eBuyCategory.kBuyCategoryVehicles, BuildBuyProduct.eBuySubCategory.kBuySubCategoryCars | BuildBuyProduct.eBuySubCategory.kBuySubCategoryMiscellaneousVehicles, 0, int.MaxValue);
                }
                catch (Exception e)
                {
                    Common.DebugException(ToString(), e);
                }

                foreach (BuildBuyProduct product in list.GetProducts())
                {
                    if (product.IsWallObject || !product.IsStealable)
                    {
                        continue;
                    }
                    results.Add(new ListItem(this, product.CatalogName, product.ProductResourceKey.ToString()));
                }

                return(results);
            }
예제 #3
0
        protected override bool PrivateUpdate(ScenarioFrame frame)
        {
            int availableFunds = Funds;

            int minimum = Minimum;

            if (minimum > availableFunds)
            {
                AddStat("High Min", availableFunds);
                return(false);
            }

            AddStat("Minimum", minimum);

            int maximum = Maximum;

            if (maximum > availableFunds)
            {
                maximum = availableFunds;
            }

            AddStat("Maximum", maximum);

            if (minimum > maximum)
            {
                IncStat("Min Bigger");
                return(false);
            }

            BuyProductList list = null;

            try
            {
                list = new BuyProductList(this, Category, SubCategory, minimum, maximum);
            }
            catch (Exception e)
            {
                Common.DebugException(ToString(), e);
            }

            if ((list == null) || (list.Count == 0))
            {
                IncStat("No Choices");
                return(false);
            }

            int price = 0;

            mObject = list.Get <T>(this, UnlocalizedName, Test, out price);
            if (mObject == null)
            {
                IncStat("No Object");
                return(false);
            }

            if (!Inventories.TryToMove(mObject, Sim.CreatedSim))
            {
                IncStat("Inventory Fail");

                mObject.Destroy();

                mObject = null;

                return(false);
            }

            Money.AdjustFunds(Sim, "BuyItem", -price);

            AddStat("Purchased", price);
            return(true);
        }