示例#1
0
        public void DailyOperation(ItemForSale item)
        {
            if (item.IsLegendary)
            {
                return;
            }

            item.DecreaseSellIn();

            if (item.CanExpire && item.IsPastSellDate)
            {
                item.ResetItemQuality();
                return;
            }

            if (item.IncreasesIncrementallyBetterTowardsSellIn)
            {
                item.HandleIncrementalQualityIncrease();
            }

            if (item.GetsBetterWithAge)
            {
                item.UpdateIncreasedItemQuality();
            }
            else
            {
                item.UpdateDecreasedItemQuality();
            }
        }
    float CalculateSellPrice(ItemForSale item)
    {
        float       price;
        ItemForSale existingItem = itemsPurchasableHere.Find(x => x.item.id == item.item.id);

        if (existingItem != null)
        {
            price = existingItem.price * itemForPurchaseSellPriceFactor;
        }
        else
        {
            float priceTest1 = Random.Range(item.item.minValue, item.item.maxValue);
            float priceTest2 = Random.Range(item.item.minValue, item.item.maxValue);
            if (priceTest1 > priceTest2)
            {
                price = priceTest1;
            }
            else
            {
                price = priceTest2;
            }
        }

        price = Mathf.Round(price);

        return(price);
    }
		// commented since it is simply List.Add
		/*
		public bool addItemForSale(ItemForSale itemForSale)
		{

				itemsForSale.Add(itemForSale);
	
		}
		*/

		// can not check the input item since it is an instance
		// use a newly created enum class ItemForSale
		/*
        public bool buyItemForSale(Hero hero, Item item)
		{
			if (hero != null && item != null && itemsForSale.ContainsKey(item))
			{
				int price = itemsForSale[item];

                if(hero.getGold() >= price)
				{
					itemsForSale.Remove(item);
					hero.setGold(hero.getGold() - price);
					hero.addItem(item);
					return true;
				}
			}

			return false;
		}
		*/
		public bool buyItemForSale(Hero hero, ItemForSale item)
		{
			if (hero != null && itemsForSale.Contains(item))
			{
				int price = 2;
				if (isMine && hero.getHeroKind() == HeroKind.Dwarf && item == ItemForSale.SP) price = 1; // dwarf get a discount
				if (hero.getGold() >= price)
				{
					Item newItem=new Item(ItemWeight.Light);        //ItemWeight.Light as placehoder for initialization
					if (item== ItemForSale.SP)
                    {
						hero.setGold(hero.getGold() - price);
						hero.setStrengthPoints(hero.getStrengthPoints() + 1);
						return true; 
                    }
                    else
                    {
						if (item == ItemForSale.Wineskin) newItem = new Wineskin(ItemWeight.Light);
						if (item == ItemForSale.Falcon) newItem = new Falcon(ItemWeight.Heavy);
						if (item == ItemForSale.Telescope) newItem = new Telescope(ItemWeight.Light);
						if (item == ItemForSale.Helm) newItem = new Helm(ItemWeight.Light);
						if (item == ItemForSale.Shield) newItem = new Shield(ItemWeight.Heavy);
						if (item == ItemForSale.Bow) newItem = new Bow(ItemWeight.Heavy);
					}
					hero.setGold(hero.getGold() - price);
					hero.addItem(newItem);
					return true;
				}
			}
			return false;
		}
示例#4
0
 public void ConfirmItem(ItemForSale item, Item.TYPE itemType, string iTemName, int iTemPrice)
 {
     itemTypeToConfirm = itemType;
     itemNameToConfirm = iTemName;
     price             = iTemPrice;
     selectedItem      = item;
 }
示例#5
0
    float getSoldChance(ItemForSale item, BusinessData data, ref string message)
    {
        if (!data.workersAssigned.Contains(HireeType.Sales) && playerAtStall != data.name)
        {
            message = ("You should assign a sales assistant to your " + data.name + " so it can operate while you are busy.");
            return(0);
        }
        float soldChance = 0.6f;

        foreach (HireeType hireeData in data.workersAssigned)
        {
            if (hireeData == HireeType.Promoter)
            {
                soldChance *= 1.7f;
            }
            if (hireeData == HireeType.Sales)
            {
                soldChance *= 1.2f;
            }
        }

        soldChance *= item.item.baseValue / item.cost;

        return(soldChance);
    }
示例#6
0
 private static void SubtractItemQuality(this ItemForSale item)
 {
     item.Quality--;
     if (item.IsConjured)
     {
         item.Quality--;
     }
 }
示例#7
0
 public ItemForSaleDTO(ItemForSale item)
 {
     this.Id          = item.Id;
     this.Title       = item.Title;
     this.Description = item.Description;
     this.Price       = item.Price;
     this.SellerName  = item.Seller.Username;
     this.DateCreated = item.DateCreated;
 }
示例#8
0
        public static void UpdateIncreasedItemQuality(this ItemForSale item)
        {
            AddItemQuality(item);
            if (item.IsPastSellDate)
            {
                AddItemQuality(item);
            }

            AssureItemQualityMinMax(item);
        }
 void SetupItemsForPurchase()
 {
     itemsPurchasableHere = new List <ItemForSale>();
     foreach (InventoryItem item in inventoryItemsPurchasableHere)
     {
         ItemForSale newItem = new ItemForSale();
         newItem.item  = item;
         newItem.price = CalculatePurchasePrice(item.minValue, item.maxValue, item.baseValue);
         itemsPurchasableHere.Add(newItem);
     }
 }
示例#10
0
 public static void HandleIncrementalQualityIncrease(this ItemForSale item)
 {
     if (item.SellIn < 10)
     {
         AddItemQuality(item);
     }
     if (item.SellIn < 5)
     {
         AddItemQuality(item);
     }
 }
示例#11
0
        private static void AssureItemQualityMinMax(this ItemForSale item)
        {
            if (item.Quality > ItemForSale.MAX_QUALITY)
            {
                item.Quality = ItemForSale.MAX_QUALITY;
            }

            if (item.Quality < ItemForSale.MIN_QUALITY)
            {
                item.Quality = ItemForSale.MIN_QUALITY;
            }
        }
    void SetUpBuyList()
    {
        itemsSellPricesHere = new List <ItemForSale>();

        foreach (InventoryItem item in inventoryItemController.itemTypes)
        {
            ItemForSale newItem = new ItemForSale();
            newItem.item  = item;
            newItem.price = CalculateSellPrice(newItem);

            itemsSellPricesHere.Add(newItem);
        }
    }
示例#13
0
    public void PlayerSellItem()
    {
        ItemForSale itemForSale = currentPort.GetComponent <PortInventory>().itemsSellPricesHere.Find(x => x.item == shipInventory.selectedSlot.GetComponent <InventorySlot>().item);

        if (itemForSale == null)
        {
            Debug.LogError("ItemforSale not found!");
        }
        shipInventory.GainDucats((int)itemForSale.price);
        shipInventory.selectedSlot.GetComponent <InventorySlot>().RemoveItem();

        UpdateItemSaleView();
    }
示例#14
0
        public async Task <IActionResult> OnPost(ItemForSale itemObj)
        {
            if (ModelState.IsValid)
            {
                await _db.ItemForSale.AddAsync(ItemForSale);

                await _db.SaveChangesAsync();

                return(RedirectToPage("Index"));
            }
            else
            {
                return(Page());
            }
        }
示例#15
0
    public void UpdateItemSaleView()
    {
        if (shipInventory.selectedSlot != null && shipInventory.selectedSlot.GetComponent <InventorySlot>().item != null)
        {
            ItemForSale itemForSale = currentPort.GetComponent <PortInventory>().itemsSellPricesHere.Find(x => x.item == shipInventory.selectedSlot.GetComponent <InventorySlot>().item);

            itemBeingSoldName.text = itemForSale.item.itemName;
            itemBeingSoldCost.text = itemForSale.price.ToString();
            playerSellButton.SetActive(true);
        }
        else
        {
            itemBeingSoldName.text = "No item selected";
            itemBeingSoldCost.text = "";
            playerSellButton.SetActive(false);
        }
    }
示例#16
0
        public bool Create(string title, string description, decimal price, int sellerId)
        {
            using (var db = new ArtStoreDbContext())
            {
                var item = new ItemForSale
                {
                    Title       = title,
                    Description = description,
                    Price       = price,
                    SellerId    = sellerId,
                    DateCreated = DateTime.Now
                };

                db.Add(item);
                db.SaveChanges();
            }

            return(true);
        }
        public async Task CreateAsync(CreateItemInputModel input, string userId, string imagePath)
        {
            var item = new ItemForSale()
            {
                Name        = input.Name,
                Description = input.Description,
                Price       = input.Price,
                UserId      = userId,
            };

            var category = this.categoryRepository.All().FirstOrDefault(x => x.Id == input.CategoryId);

            item.Category = category;

            Directory.CreateDirectory($"{imagePath}/itemsForSale/");
            foreach (var image in input.Images)
            {
                var extension = Path.GetExtension(image.FileName).TrimStart('.');
                if (!this.allowedExtensions.Any(x => extension.EndsWith(x)))
                {
                    throw new Exception($"Invalid image extension {extension}");
                }

                var dbImage = new Image
                {
                    Extension = extension,
                    UserId    = userId,
                };
                item.Images.Add(dbImage);

                var physicalPath = $"{imagePath}/itemsForSale/{dbImage.Id}.{extension}";
                using Stream fileStream = new FileStream(physicalPath, FileMode.Create);
                await image.CopyToAsync(fileStream);
            }

            await this.itemsRepository.AddAsync(item);

            await this.itemsRepository.SaveChangesAsync();
        }
示例#18
0
        public ActionResult CreateItem([Bind(Include = "ID,ItemName,Price")] ItemForSale itemForSale)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    //User would be the user who is logged in
                    itemForSale.User = "******";
                    itemForSale.Date = DateTime.Now;

                    // TODO: Add insert logic here (usually to db)
                    ModelCollections.ItemsForSaleList.Add(itemForSale);

                    return(RedirectToAction("Index", "Items"));
                }

                return(View(itemForSale));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(String.Empty, "An Error occurred: " + ex.Message); //ex.Message is usually written to log, not displayed to users
                return(View());
            }
        }
示例#19
0
 public async Task OnGet(int id)
 {
     ItemForSale = await _db.ItemForSale.FindAsync(id);
 }
示例#20
0
 public static void ResetItemQuality(this ItemForSale item)
 {
     item.Quality = ItemForSale.MIN_QUALITY;
 }
示例#21
0
 private static void AddItemQuality(this ItemForSale item)
 {
     item.Quality++;
 }
示例#22
0
 public static void DecreaseSellIn(this ItemForSale item)
 {
     item.SellIn--;
 }