Class: Omega::Scoreboard
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#initialize(client, data) ⇒ Scoreboard
constructor
A new instance of Scoreboard.
- #merge(board) ⇒ Object
- #score_for(user) ⇒ Object
- #simple_display ⇒ Object
- #to_h ⇒ Object
- #users ⇒ Object
Constructor Details
#initialize(client, data) ⇒ Scoreboard
Returns a new instance of Scoreboard.
47 48 49 50 51 52 53 54 |
# File 'lib/omega/scoreboard.rb', line 47 def initialize(client, data) @client = client @data = data.dup @data[:ranking] = {} data[:ranking].each do |entry| @data[:ranking][entry[:username]] = ScoreboardEntry.new(client, entry) end end |
Instance Method Details
#merge(board) ⇒ Object
60 61 62 63 64 65 66 67 |
# File 'lib/omega/scoreboard.rb', line 60 def merge(board) result = clone board.data[:ranking].each do |user, score| result.data[:ranking][user] = result.data[:ranking][user].nil? ? score : result.data[:ranking][user].merge(score) end result end |
#score_for(user) ⇒ Object
73 74 75 |
# File 'lib/omega/scoreboard.rb', line 73 def score_for(user) @data[:ranking][user] end |
#simple_display ⇒ Object
69 70 71 |
# File 'lib/omega/scoreboard.rb', line 69 def simple_display users.map(&:simple_display) end |
#to_h ⇒ Object
56 57 58 |
# File 'lib/omega/scoreboard.rb', line 56 def to_h @data[:ranking].map { |username, entry| { username:, score: entry.to_h } } end |
#users ⇒ Object
77 78 79 |
# File 'lib/omega/scoreboard.rb', line 77 def users @data[:ranking].values.sort end |