class PlaylyfeClient::V2::PlayerEvent::Base

Attributes

action_id[R]
action_name[R]
actor_alias[R]
actor_id[R]
changes[R]
count[R]
player_alias[R]
player_id[R]
process_id[R]
process_name[R]
rule_id[R]
rule_name[R]

Public Class Methods

build(ev_hash, game, player=nil) click to toggle source
# File lib/playlyfe_client/v2/event/player_event.rb, line 96
def self.build(ev_hash, game, player=nil)      
  case ev_hash["event"] 
    when "level"
      klass= LevelChangedEvent
    when  "action"
      klass= ActionPlayedEvent
    when "achievement"  
      klass= AchievementEvent
    when "custom_rule"  
      klass= CustomRuleAppliedEvent
    when "score"
      klass= ScoreUpdatedByAdminEvent
    else  
      return nil  
  end  

  return klass.new(ev_hash, game, player)
end
new(ev_hash,game,player=nil) click to toggle source
Calls superclass method PlaylyfeClient::V2::Event::new
# File lib/playlyfe_client/v2/event/player_event.rb, line 30
def initialize(ev_hash,game,player=nil)
  super(ev_hash,game)

  
  if @ev_hash.has_key?("actor")
    @actor_id=@ev_hash["actor"]["id"]
    @actor_alias=@ev_hash["actor"]["alias"]
  else  
    if player.nil?
      raise "cannot create actor from hash #{@ev_hash} and player #{player}"
    else
      @actor_id=player.id
      @actor_alias=player.alias
    end  
  end  

  ["action", "rule", "process"].each do |att|
    unless @ev_hash[att].nil?  
      instance_variable_set("@#{att}_id", @ev_hash[att]["id"])
      instance_variable_set("@#{att}_name", @ev_hash[att]["name"])
    end
  end  
 

  @count= @ev_hash["count"] || 0

  @player_id=@actor_id
  @player_alias=@actor_alias
  if @ev_hash.has_key?("player")
    @player_id=@ev_hash["player"]["id"]
    @player_alias=@ev_hash["player"]["alias"]
  end  

  set_changes

end

Public Instance Methods

action() click to toggle source
# File lib/playlyfe_client/v2/event/player_event.rb, line 23
def action
  return nil if action_id.nil?
  game.actions.find(action_id)
end
player() click to toggle source
# File lib/playlyfe_client/v2/event/player_event.rb, line 11
def player
  game.players.find(player_id)
end
process() click to toggle source
# File lib/playlyfe_client/v2/event/player_event.rb, line 19
def process
  process_id #todo
end
rule() click to toggle source
# File lib/playlyfe_client/v2/event/player_event.rb, line 15
def rule
  rule_id #todo
end

Private Instance Methods

set_changes() click to toggle source
# File lib/playlyfe_client/v2/event/player_event.rb, line 67
def set_changes
  @changes=[]
  return @changes if @ev_hash["changes"].nil?

  for ch in @ev_hash["changes"]
    
    if ch["delta"].has_key?("old")
      chng={delta: [ ch["delta"]["old"], ch["delta"]["new"] ]}
    else
      k=ch["delta"].keys.first
      chng={delta: [ ch["delta"][k]["old"], ch["delta"][k]["new"], k ]}
    end  
    chng[:metric]=game.metrics.find(ch["metric"]["id"])
    
    @changes <<  chng
  end  
end