Sha256: 10b3cda4d6850eaa043e1727c8977f025e5dd36c181eec233c93e8ed3ea53ab1

Contents?: true

Size: 1.94 KB

Versions: 16

Compression:

Stored size: 1.94 KB

Contents

module ClassMethods
  def default_type_id
    @@default_type_id ||= Card[:all].fetch( :trait=>:default ).type_id
  end
end

def type_card
  return if type_id.nil?
  Card.fetch type_id.to_i, :skip_modules=>true
end

def type_code
  Card::Codename[ type_id.to_i ]
end

def type_name
  type_card.try :name
end

def type_cardname
  type_card.try :cardname
end

def type= type_name
  self.type_id = Card.fetch_id type_name
end

def get_type_id args={}
  return if args[:type_id] # type_id was set explicitly.  no need to set again.
  
  type_id = case
    when args[:type_code]
      if code=args[:type_code]
        Card::Codename[code] || ( c=Card[code] and c.id)
      end
    when args[:type]
      Card.fetch_id args[:type]
    else :noop
    end

  case type_id
  when :noop
  when false, nil
    errors.add :type, "#{args[:type] || args[:type_code]} is not a known type."
  else
    return type_id
  end

  if name && t=template
    reset_patterns #still necessary even with new template handling?
    t.type_id
  end
end


event :validate_type_change, :before=>:approve, :on=>:update, :changed=>:type_id do
  if c = dup and c.action == :create and !c.valid?
    errors.add :type, "of #{ name } can't be changed; errors creating new #{ type_id }: #{ c.errors.full_messages * ', ' }"
  end
end

event :validate_type, :before=>:approve, :changed=>:type_id do    
  if !type_name
    errors.add :type, "No such type"
  end
  
  if rt = structure and rt.assigns_type? and type_id!=rt.type_id
    errors.add :type, "can't be changed because #{name} is hard templated to #{rt.type_name}"
  end
end

event :reset_type_specific_fields, :after=>:store do
  Auth.as_bot do
    Card.search :left=>{ :left=>type_name }, :right=>{:codename=>'type_plus_right'} do |set_card|
      set_card.reset_set_patterns
    end
  end
end

#    Card.search :left_plus=>[ type_name, :right_plus=>{:codename=>'type_plus_right'}] do |right_anchor|
#      Card["#{lef}"]
#      set_card.reset_set_patterns
#    end
  

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
card-1.16.3 mod/01_core/set/all/type.rb
card-1.16.2 mod/01_core/set/all/type.rb
card-1.16.1 mod/01_core/set/all/type.rb
card-1.16.0 mod/01_core/set/all/type.rb
card-1.15.7 mod/01_core/set/all/type.rb
card-1.15.6 mod/01_core/set/all/type.rb
card-1.15.5 mod/01_core/set/all/type.rb
card-1.15.4 mod/01_core/set/all/type.rb
card-1.15.3 mod/01_core/set/all/type.rb
card-1.15.2 mod/01_core/set/all/type.rb
card-1.15.1 mod/01_core/set/all/type.rb
card-1.15.0 mod/01_core/set/all/type.rb
card-1.15.pre2 mod/01_core/set/all/type.rb
card-1.15.pre mod/01_core/set/all/type.rb
wagn-1.14.9 mod/01_core/set/all/type.rb
wagn-1.14.8 mod/01_core/set/all/type.rb