simplay/bofrev

View on GitHub
demos/tetris/tetris_achievement_system.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'achievement_system'
require 'achievement'

class TetrisAchievementSystem < AchievementSystem

  def initialize
    super
    @achievements = []
    @achievements << Achievement.new(:more_than_100p, lambda{|value| value > 100})
    @achievements << Achievement.new(:more_than_200p, lambda{|value| value > 200})
    @achievements.each do |achievement|
      register_achievement(achievement.identifier)
    end
  end

  def handle_event_with(message)
    if message.type == :score
      handle_score_event(message.content)
    end
  end

  protected

  def handle_score_event(value)
    @achievements.each do |achievement|
      achievement.check_rule(value)
      update_list_for(achievement.identifier) if achievement.achieved?
    end
  end

end