コード例 #1
0
ファイル: TradeBlackManager.cs プロジェクト: chenchungit/ky
        /// <summary>
        /// 当完成交易
        /// </summary>
        /// <param name="ed"></param>
        public void OnExchange(int roleid1, int roleid2, List <GoodsData> gdList1, List <GoodsData> gdList2, int zuanshi1, int zuanshi2)
        {
            long price1 = zuanshi1 > 0 ? zuanshi1 : 0; // roleid1 的支出
            long price2 = zuanshi2 > 0 ? zuanshi2 : 0; // roleid2 的支出

            Func <List <GoodsData>, Dictionary <int, int>, long> _GetGoodsPrice = (gdList, priceDict) =>
            {
                long totalPrice = 0;
                if (gdList != null && priceDict != null)
                {
                    gdList.ForEach(_g => totalPrice += priceDict.ContainsKey(_g.GoodsID) ? priceDict[_g.GoodsID] * _g.GCount : 0);
                }
                return(totalPrice);
            };

            price1 += _GetGoodsPrice(gdList1, this.GoodsPriceDict);
            price2 += _GetGoodsPrice(gdList2, this.GoodsPriceDict);

            DateTime         now  = TimeUtil.NowDateTime();
            TradeBlackObject obj1 = LoadTradeBlackObject(roleid1);

            if (obj1 != null)
            {
                lock (obj1)
                {
                    TradeBlackHourItem item = GetBlackHourItem(obj1, now);
                    item.TradeTimes++;
                    item.TradeOutPrice += price1;
                    item.TradeInPrice  += price2;
                    if (!item.TradeRoles.Contains(roleid2))
                    {
                        item.TradeRoles.Add(roleid2);
                        item.TradeDistinctRoleCount++;
                    }

                    TradeBlackHourItem itemCopy = item.SimpleClone();
                    SaveTradeBlackObject(itemCopy);
                }
            }

            TradeBlackObject obj2 = LoadTradeBlackObject(roleid2);

            if (obj2 != null)
            {
                lock (obj2)
                {
                    TradeBlackHourItem item = GetBlackHourItem(obj2, now);
                    item.TradeTimes++;
                    item.TradeInPrice  += price1;
                    item.TradeOutPrice += price2;
                    if (!item.TradeRoles.Contains(roleid1))
                    {
                        item.TradeRoles.Add(roleid1);
                        item.TradeDistinctRoleCount++;
                    }
                    TradeBlackHourItem itemCopy = item.SimpleClone();
                    SaveTradeBlackObject(itemCopy);
                }
            }

            CheckBanTrade(roleid1);
            CheckBanTrade(roleid2);
        }
コード例 #2
0
        public void OnExchange(int roleid1, int roleid2, List <GoodsData> gdList1, List <GoodsData> gdList2, int zuanshi1, int zuanshi2)
        {
            long price  = (long)((zuanshi1 > 0) ? zuanshi1 : 0);
            long price2 = (long)((zuanshi2 > 0) ? zuanshi2 : 0);
            Func <List <GoodsData>, Dictionary <int, int>, long> _GetGoodsPrice = delegate(List <GoodsData> gdList, Dictionary <int, int> priceDict)
            {
                long totalPrice = 0L;
                if (gdList != null && priceDict != null)
                {
                    gdList.ForEach(delegate(GoodsData _g)
                    {
                        totalPrice += (long)(priceDict.ContainsKey(_g.GoodsID) ? (priceDict[_g.GoodsID] * _g.GCount) : 0);
                    });
                }
                return(totalPrice);
            };

            price  += _GetGoodsPrice(gdList1, this.GoodsPriceDict);
            price2 += _GetGoodsPrice(gdList2, this.GoodsPriceDict);
            DateTime         now = TimeUtil.NowDateTime();
            TradeBlackObject obj = this.LoadTradeBlackObject(roleid1, true);

            if (obj != null)
            {
                lock (obj)
                {
                    TradeBlackHourItem item = this.GetBlackHourItem(obj, now);
                    item.TradeTimes++;
                    item.TradeOutPrice += price;
                    item.TradeInPrice  += price2;
                    if (!item.TradeRoles.Contains(roleid2))
                    {
                        item.TradeRoles.Add(roleid2);
                        item.TradeDistinctRoleCount++;
                    }
                    TradeBlackHourItem itemCopy = item.SimpleClone();
                    this.SaveTradeBlackObject(itemCopy);
                }
            }
            TradeBlackObject obj2 = this.LoadTradeBlackObject(roleid2, true);

            if (obj2 != null)
            {
                lock (obj2)
                {
                    TradeBlackHourItem item = this.GetBlackHourItem(obj2, now);
                    item.TradeTimes++;
                    item.TradeInPrice  += price;
                    item.TradeOutPrice += price2;
                    if (!item.TradeRoles.Contains(roleid1))
                    {
                        item.TradeRoles.Add(roleid1);
                        item.TradeDistinctRoleCount++;
                    }
                    TradeBlackHourItem itemCopy = item.SimpleClone();
                    this.SaveTradeBlackObject(itemCopy);
                }
            }
            this.CheckBanTrade(roleid1);
            this.CheckBanTrade(roleid2);
        }