class ActiveGenie::Ranking::Player
def draw!
def draw! @ffa_draw_count += 1 ActiveGenie::Logger.debug({ code: :new_ffa_score, player_id: id, result: 'draw', ffa_score: }) end
def eliminated=(value)
def eliminated=(value) ActiveGenie::Logger.debug({ code: :new_eliminated, player_id: id, eliminated: value }) if value != @eliminated @eliminated = value end
def elo=(value)
def elo=(value) ActiveGenie::Logger.debug({ code: :new_elo, player_id: id, elo: value }) if value != @elo @elo = value end
def ffa_score
def ffa_score @ffa_win_count * 3 + @ffa_draw_count end
def generate_elo_by_score
def generate_elo_by_score BASE_ELO + ((@score || 0) - 50) end
def initialize(params)
def initialize(params) params = { content: params } if params.is_a?(String) @content = params.dig(:content) || params @id = params.dig(:id) || Digest::MD5.hexdigest(@content) @score = params.dig(:score) || nil @elo = params.dig(:elo) || nil @ffa_win_count = params.dig(:ffa_win_count) || 0 @ffa_lose_count = params.dig(:ffa_lose_count) || 0 @ffa_draw_count = params.dig(:ffa_draw_count) || 0 @eliminated = params.dig(:eliminated) || nil end
def lose!
def lose! @ffa_lose_count += 1 ActiveGenie::Logger.debug({ code: :new_ffa_score, player_id: id, result: 'lose', ffa_score: }) end
def method_missing(method_name, *args, &block)
def method_missing(method_name, *args, &block) if method_name == :[] && args.size == 1 attr_name = args.first.to_sym if respond_to?(attr_name) return send(attr_name) else return nil end end super end
def respond_to_missing?(method_name, include_private = false)
def respond_to_missing?(method_name, include_private = false) method_name == :[] || super end
def score=(value)
def score=(value) ActiveGenie::Logger.debug({ code: :new_score, player_id: id, score: value }) if value != @score @score = value @elo = generate_elo_by_score end
def to_h
def to_h { id:, content:, score:, elo:, ffa_win_count:, ffa_lose_count:, ffa_draw_count:, eliminated:, ffa_score: } end
def win!
def win! @ffa_win_count += 1 ActiveGenie::Logger.debug({ code: :new_ffa_score, player_id: id, result: 'win', ffa_score: }) end