Class: Omega::Scoreboard

Inherits:
Base
  • Object
show all
Defined in:
lib/omega/scoreboard.rb

Instance Attribute Summary

Attributes inherited from Base

#data

Instance Method Summary collapse

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_displayObject



69
70
71
# File 'lib/omega/scoreboard.rb', line 69

def simple_display
  users.map(&:simple_display)
end

#to_hObject



56
57
58
# File 'lib/omega/scoreboard.rb', line 56

def to_h
  @data[:ranking].map { |username, entry| { username:, score: entry.to_h } }
end

#usersObject



77
78
79
# File 'lib/omega/scoreboard.rb', line 77

def users
  @data[:ranking].values.sort
end