Class: Playable

Inherits:
Object
  • Object
show all
Defined in:
lib/player_stats.rb

Direct Known Subclasses

Jeff, Ness, Paula, Poo

Class Method Summary collapse

Class Method Details

.metaclassObject



3
# File 'lib/player_stats.rb', line 3

def self.metaclass; class << self; self; end; end

.traits(*arr) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/player_stats.rb', line 5

def self.traits(*arr)
  return @traits if arr.empty?
  attr_accessor *arr
  arr.each do |a|
    metaclass.instance_eval do
      define_method(a) do |val|
        @traits ||= {}
        @traits[a] = val
      end
    end
  end
  
  class_eval do
    define_method(:initialize) do
      self.class.traits.each do |k,v|
        instance_variable_set("@#{k}", v)
      end
    end
  end
  
end