From 80f8ff91bae08ae73abb1eca6a68dfdb2d304bef Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Tue, 9 May 2023 12:20:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E8=A1=8C=E6=A6=9C=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/builtin/ranking_list.go | 9 +++++++++ game/ranking_list.go | 3 +++ 2 files changed, 12 insertions(+) diff --git a/game/builtin/ranking_list.go b/game/builtin/ranking_list.go index d8059a5..c467d3c 100644 --- a/game/builtin/ranking_list.go +++ b/game/builtin/ranking_list.go @@ -52,6 +52,15 @@ func (slf *RankingList[CompetitorID, Score]) Competitor(competitorId CompetitorI } } +func (slf *RankingList[CompetitorID, Score]) CompetitorIncrease(competitorId CompetitorID, score Score) { + oldScore, err := slf.GetScore(competitorId) + if err != nil { + slf.Competitor(competitorId, score) + } else { + slf.Competitor(competitorId, oldScore+score) + } +} + func (slf *RankingList[CompetitorID, Score]) RemoveCompetitor(competitorId CompetitorID) { if !slf.competitors.Exist(competitorId) { return diff --git a/game/ranking_list.go b/game/ranking_list.go index fa3365b..ba90076 100644 --- a/game/ranking_list.go +++ b/game/ranking_list.go @@ -5,6 +5,9 @@ type RankingList[CompetitorID comparable, Score comparable] interface { // Competitor 声明排行榜竞争者 // - 如果竞争者存在的情况下,会更新已有成绩,否则新增竞争者 Competitor(competitorId CompetitorID, score Score) + // CompetitorIncrease 积分增量的形式竞争排行榜 + // - 如果竞争者存在的情况下,会更新已有成绩为增加score后的成绩,否则新增竞争者 + CompetitorIncrease(competitorId CompetitorID, score Score) // RemoveCompetitor 删除特定竞争者 RemoveCompetitor(competitorId CompetitorID) // GetRank 获取竞争者排名