排名改变事件实现
This commit is contained in:
parent
360f07d9ae
commit
4e75282d01
|
@ -50,6 +50,13 @@ func (slf *RankingList[CompetitorID, Score]) Competitor(competitorId CompetitorI
|
|||
} else {
|
||||
slf.competitor(competitorId, score, rank, len(slf.scores)-1)
|
||||
}
|
||||
if len(slf.rankChangeEventHandles) > 0 {
|
||||
newRank, err := slf.GetRank(competitorId)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
slf.OnRankChangeEvent(competitorId, rank, newRank, v, score)
|
||||
}
|
||||
} else {
|
||||
if slf.rankCount > 0 && len(slf.scores) >= slf.rankCount {
|
||||
last := slf.scores[len(slf.scores)-1]
|
||||
|
@ -58,6 +65,13 @@ func (slf *RankingList[CompetitorID, Score]) Competitor(competitorId CompetitorI
|
|||
}
|
||||
}
|
||||
slf.competitor(competitorId, score, 0, len(slf.scores)-1)
|
||||
if len(slf.rankChangeEventHandles) > 0 {
|
||||
newRank, err := slf.GetRank(competitorId)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
slf.OnRankChangeEvent(competitorId, newRank, newRank, score, score)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ type RankingList[CompetitorID comparable, Score generic.Ordered] interface {
|
|||
Clear()
|
||||
|
||||
// RegRankChangeEvent 排名改变时将立即执行注册的事件处理函数
|
||||
// - 当竞争者为新加入时,oldRank 和 oldScore 均与 newRank 和 newScore 相同
|
||||
RegRankChangeEvent(handle RankChangeEventHandle[CompetitorID, Score])
|
||||
OnRankChangeEvent(competitorId CompetitorID, oldRank, newRank int, oldScore, newScore Score)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue