示例#1
0
 public void CreateClearTrigger(Ranking _this, DateTime triggerTime, int autoInterval)
 {
     RankServerControl.Timer.CreateTrigger(triggerTime, _this.Clear, autoInterval);
 }
示例#2
0
 //获得排行榜已排次序的数量
 public int GetRankListCount(Ranking _this)
 {
     return(_this.RankUUIDList.Count);
 }
示例#3
0
        //排序
        public List <KeyValuePair <ulong, DBRank_One> > Sort(Ranking _this, bool IsMustDo = false)
        {
            if (!IsMustDo)
            {
                if (_this.RankType == 3)
                {
                    _this.Dirty = false;
                    return(null);
                }
                if (!_this.Dirty)
                {
                    return(null);
                }
            }
            var sortArray = _this.DBRankCache.OrderBy(item => item.Value.Value).ToList();
            var count     = sortArray.Count();
            var nowCount  = count;

            if (_this.MaxRankMemberCount < count)
            {
                //移除多余的
                nowCount = _this.MaxRankMemberCount;
                var delCount = count - _this.MaxRankMemberCount;
                for (var i = 0; i < delCount; ++i)
                {
                    RemoveOne(_this, sortArray[0].Value);
                    sortArray.Remove(sortArray[0]);
                    count--;
                }
            }
            var listCout = _this.RankUUIDList.Count;

            if (listCout > nowCount)
            {
                for (var i = nowCount; i < listCout; i++)
                {
                    _this.RankUUIDList.RemoveAt(nowCount);
                }
            }
            else
            {
                for (var i = listCout; i < nowCount; i++)
                {
                    _this.RankUUIDList.Add(0);
                }
            }
            //RankUUIDIndex.Clear();
            _this.SaveOldValueByUUID.Clear();
            foreach (var rankOne in sortArray)
            {
                var rank = _this.DBRankCache[rankOne.Value.Guid];
                _this.RankUUIDList[count - 1] = rankOne.Value.Guid;
                //RankUUIDIndex[count] = rankOne.Value.Guid;
                rank.OldRank = rankOne.Value.Rank;
                rank.Rank    = count;
                _this.SaveOldValueByUUID[rankOne.Key] = rankOne.Value.Value;
                count--;
                if (_this.RankType == 3)
                {
                    rank.Value = 1000000 / rank.Rank;
                }
            }
            _this.Dirty = false;

            return(sortArray);
        }
示例#4
0
 //获得排行榜人数
 public int GetRankCount(Ranking _this)
 {
     return(_this.DBRankCache.Count);
 }
示例#5
0
 public void FlushAll(Ranking _this)
 {
     SortAndSave(_this);
 }