From 7320c608168dbb1a7ca46db18c790d364b02fd81 Mon Sep 17 00:00:00 2001 From: beatles Date: Mon, 31 Jul 2006 23:20:49 +0000 Subject: [PATCH] Add a command, %%RATING, to show a ranking sorted by rates. --- changelog | 4 ++++ shogi-server | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/changelog b/changelog index 246d9c4..6077b64 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,7 @@ +2006-08-01 Daigo Moriwaki + + * Add a command, %%RATING, to show a ranking sorted by rates. + 2006-07-31 Daigo Moriwaki * Add a simple rating system. diff --git a/shogi-server b/shogi-server index c4b8673..eed64c6 100755 --- a/shogi-server +++ b/shogi-server @@ -141,8 +141,24 @@ class League end hash end + + def rated_players + players = [] + @db.transaction(true) do + @db.roots.each do |id| + players << id + end + end + return players.collect do |id| + p = RatedPlayer.new(id, nil, nil) + self.load(p) + p + end + end end +class RatedPlayer < Struct.new(:id, :name, :rate); end + class Player def initialize(str, socket) @name = nil @@ -326,6 +342,11 @@ class Player end when /^%%HELP/ write_help + when /^%%RATING/ + players = LEAGUE.rated_players + players.sort {|a,b| b.rate <=> a.rate}.each do |p| + write_safe("%s (%s) \t %4d\n" % [p.name, p.id, p.rate]) + end when /^%%GAME\s*$/ if ((@status == "connected") || (@status == "game_waiting")) @status = "connected" -- 2.11.0