private static List <VendItemInfo> GetSaleChoice( IReadOnlyCollection <VendItemInfo> vendor, int num) { List <VendItemInfo> vendItemInfoList = new List <VendItemInfo>(); Dictionary <VendItemInfo, int> dictionary = ((IEnumerable <VendItemInfo>)vendor).ToDictionary <VendItemInfo, VendItemInfo, int>((Func <VendItemInfo, VendItemInfo>)(p => p), (Func <VendItemInfo, int>)(p => p.Percent)); if (!dictionary.Any <KeyValuePair <VendItemInfo, int> >()) { return(vendItemInfoList); } for (int index = 0; index < num; ++index) { VendItemInfo fromDict = Illusion.Utils.ProbabilityCalclator.DetermineFromDict <VendItemInfo>(dictionary); if (dictionary.Remove(fromDict)) { vendItemInfoList.Add(fromDict); } else { break; } } return(vendItemInfoList); }
public void ResetSpecialVendor( IReadOnlyDictionary <int, VendItemInfo> specialTable) { if (this.isSpecialVendorLoad) { return; } if (this.vendorSpItemTable == null) { this.vendorSpItemTable = new Dictionary <int, MerchantData.VendorItem>(); } HashSet <int> intSet = new HashSet <int>((IEnumerable <int>) this.vendorSpItemTable.Keys); foreach (KeyValuePair <int, VendItemInfo> keyValuePair in (IEnumerable <KeyValuePair <int, VendItemInfo> >)specialTable) { VendItemInfo vendItemInfo = keyValuePair.Value; intSet.Remove(keyValuePair.Key); int num = Mathf.Max(1, vendItemInfo.Stocks[0]); MerchantData.VendorItem vendorItem; if (this.vendorSpItemTable.TryGetValue(keyValuePair.Key, out vendorItem)) { vendorItem.CategoryID = vendItemInfo.CategoryID; vendorItem.ID = vendItemInfo.ID; vendorItem.Rate = vendItemInfo.Rate; vendorItem.Count += num - Mathf.Max(1, vendorItem.Stock); vendorItem.Count = Mathf.Max(0, vendorItem.Count); vendorItem.Stock = num; } else { this.vendorSpItemTable[keyValuePair.Key] = new MerchantData.VendorItem(vendItemInfo.CategoryID, vendItemInfo.ID, num, vendItemInfo.Rate, num); } } foreach (int key in intSet) { this.vendorSpItemTable.Remove(key); } this.vendorSpItemTable = this.vendorSpItemTable.OrderBy <KeyValuePair <int, MerchantData.VendorItem>, int>((Func <KeyValuePair <int, MerchantData.VendorItem>, int>)(v => v.Key)).ToDictionary <KeyValuePair <int, MerchantData.VendorItem>, int, MerchantData.VendorItem>((Func <KeyValuePair <int, MerchantData.VendorItem>, int>)(v => v.Key), (Func <KeyValuePair <int, MerchantData.VendorItem>, MerchantData.VendorItem>)(v => v.Value)); this.isSpecialVendorLoad = true; Debug.Log((object)"ショップスペシャルアイテム更新"); }