Exemplo n.º 1
0
        //获得一个某等级的下个物品
        private DBExchangeOne GetNextItem(int level, int stopLevel, int stopIndex, ref bool isEnd)
        {
            if (ExchangeManager.MaxLenth == 0)
            {
                return(null);
            }
            var           beginlevel   = ExchangeManager.FindLevel[level];
            var           beginIndex   = ExchangeManager.FindIndex[level];
            var           nowLookLevel = beginlevel;
            var           nowLookIndex = beginIndex;
            DBExchangeOne result       = null;

            while (true)
            {
                var list = ExchangeManager.ItemList[nowLookLevel];
                if (nowLookIndex < list.Count)
                {
                    result = list[nowLookIndex];
                }
                if (nowLookLevel >= level)
                {
                    nowLookLevel = 0;
                    nowLookIndex = nowLookIndex + 1;
                    if (nowLookIndex >= ExchangeManager.MaxLenth)
                    {
                        nowLookIndex = 0;
                    }
                    //else if (nowLookIndex == beginIndex && nowLookLevel == beginlevel)
                    //{//如果饶了一圈,则返回空
                    //    return null;
                    //}
                }
                else
                {
                    nowLookLevel++;
                }
                if (result != null)
                {
                    break;
                }
                if (nowLookIndex == stopIndex && nowLookLevel == stopLevel)
                {
//如果饶了一圈,则返回空
                    isEnd = true;
                    return(null);
                }
            }
            ExchangeManager.FindLevel[level] = nowLookLevel;
            ExchangeManager.FindIndex[level] = nowLookIndex;
            if (nowLookIndex == stopIndex && nowLookLevel == stopLevel)
            {
//如果饶了一圈,则返回空
                isEnd = true;
            }
            return(result);
        }
Exemplo n.º 2
0
        //移除一个道具
        private void RemoveItem(DBExchangeOne item)
        {
            var tbItem = Table.GetItemBase(item.ItemData.ItemId);

            ExchangeManager.ItemList[tbItem.LevelLimit - 1].Remove(item); //等级物品 的快速查询中移除
            ExchangeManager.mDbData.StoreItems.Remove(item.Id);           //数据库引用移除
            ExchangeManager.mTriggers.Remove(item.Id);                    //该物品定时器移除
            if (tbItem.LevelLimit == ExchangeManager.MaxLenIndex)
            {
                ResetMaxLen(); //重新计算最大长度
            }
        }
Exemplo n.º 3
0
        public static StoreBroadcastOne GetConverNetData(this DBExchangeOne dbExchangeOne)
        {
            var temp = new StoreBroadcastOne
            {
                Id                = dbExchangeOne.Id,
                StartTime         = dbExchangeOne.OverTime,
                ItemData          = dbExchangeOne.ItemData,
                NeedCount         = dbExchangeOne.NeedCount,
                SellCharacterId   = dbExchangeOne.SellCharacterId,
                SellCharacterName = dbExchangeOne.SellCharacterName
            };

            return(temp);
        }
Exemplo n.º 4
0
        //添加一个道具
        private void AddItem(DBExchangeOne item)
        {
            var tbItem   = Table.GetItemBase(item.ItemData.ItemId);
            var tempList = ExchangeManager.ItemList[tbItem.LevelLimit - 1];

            tempList.Add(item);
            var trigger = TeamServerControl.tm.CreateTrigger(DateTime.FromBinary(item.OverTime),
                                                             () => { RemoveItem(item); });

            ExchangeManager.mTriggers.Add(item.Id, trigger);
            if (tempList.Count >= ExchangeManager.MaxLenth)
            {
                ExchangeManager.MaxLenth    = tempList.Count;
                ExchangeManager.MaxLenIndex = tbItem.LevelLimit - 1;
            }
        }
Exemplo n.º 5
0
        //添加广播道具
        public long PushItem(ulong characterId,
                             string characterName,
                             ItemBaseData itemBaseData,
                             int needCount,
                             int ContinueMinutes)
        {
            var temp = new DBExchangeOne();

            temp.Id = GetNextId();
            temp.SellCharacterName = characterName;
            temp.SellCharacterId   = characterId;
            temp.NeedCount         = needCount;
            temp.ItemData          = itemBaseData;
            temp.OverTime          = DateTime.Now.AddMinutes(ContinueMinutes).ToBinary();
            ExchangeManager.mDbData.StoreItems.Add(temp.Id, temp);
            AddItem(temp);
            //tbItem.
            return(temp.Id);
        }