public void LeaveShop() { _nowShop = null; int sumPrice = 0; List <Item.ItemSuper> buyable_items = new List <Item.ItemSuper>(); foreach (var i in _basket) { //代金以上のお金が財布に残っていたら if (_wallet.IsBuyable(sumPrice + Item.ItemSuper.GetPriceSum(i))) { sumPrice += Item.ItemSuper.GetPriceSum(i); buyable_items.Add(i); //プレイヤー全体の総所持数に追加 i.AddPlayerDistribution(i.GetNum()); //総在庫数からマイナス i.SubShopDistribution(i.GetNum()); } else { break; } } _wallet.Pay(sumPrice); foreach (var i in buyable_items) { Item.ItemSuper tmp_item = _inventry.AddItem(i, 0); //アイテムがインベントリに収まらずあふれた時 if (tmp_item != Item.ItemSuper.Null) { //超過分のお金の払い戻し _wallet.Receipt(Item.ItemSuper.GetPriceSum(tmp_item)); //プレイヤー全体の総所持数からマイナス tmp_item.SubPlayerDistribution(tmp_item.GetNum()); //総在庫数に追加 _nowShop.ReturnItem(tmp_item); break; } } _basket.Clear(); }
//アイテムの購入金額 買値 * 個数 public static int GetPriceSum(ItemSuper item) { return(item.GetBuyPrice() * item.GetNum()); }