コード例 #1
0
        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);
        }
コード例 #2
0
        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)"ショップスペシャルアイテム更新");
        }