From 4e75282d01f542d2b18a5657af6636148ac9c8d3 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Tue, 30 May 2023 15:21:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E5=90=8D=E6=94=B9=E5=8F=98=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/builtin/ranking_list.go | 14 ++++++++++++++ game/ranking_list.go | 1 + 2 files changed, 15 insertions(+) diff --git a/game/builtin/ranking_list.go b/game/builtin/ranking_list.go index dcf0b38..18ddfca 100644 --- a/game/builtin/ranking_list.go +++ b/game/builtin/ranking_list.go @@ -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) + } } } diff --git a/game/ranking_list.go b/game/ranking_list.go index 3841567..7821348 100644 --- a/game/ranking_list.go +++ b/game/ranking_list.go @@ -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) }