Class: Trait

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**kwargs) ⇒ Trait

Returns a new instance of Trait.



52
53
54
# File 'lib/kittyverse/traits.rb', line 52

def initialize( **kwargs )
  update( kwargs )
end

Instance Attribute Details

#kaiObject

Returns the value of attribute kai.



48
49
50
# File 'lib/kittyverse/traits.rb', line 48

def kai
  @kai
end

#nameObject

Returns the value of attribute name.



48
49
50
# File 'lib/kittyverse/traits.rb', line 48

def name
  @name
end

#typeObject

Returns the value of attribute type.



48
49
50
# File 'lib/kittyverse/traits.rb', line 48

def type
  @type
end

Class Method Details

.[](key) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/kittyverse/traits.rb', line 38

def self.[]( key )
  if key.size == 4 && key =~ /^[A-Za-z]{2}[0-9]{2}$/
    Trait.find_by_code( key )
  else
    Trait.find_by_name( key )
  end
end

.find_by(**kwargs) ⇒ Object

add “generic” convenience find helpers



27
28
29
30
31
32
33
34
35
36
# File 'lib/kittyverse/traits.rb', line 27

def self.find_by( **kwargs )
  if kwargs[ :code ]
    find_by_code( kwargs[ :code] )
  elsif kwargs[ :name ]
    find_by_name( kwargs[ :name ] )
  else
    ## todo/fix: throw argument except!!!
    nil
  end
end

.find_by_code(code) ⇒ Object



9
10
11
12
13
# File 'lib/kittyverse/traits.rb', line 9

def self.find_by_code( code )
  ## note: allow string AND symbols (thus, use .to_s)
  ##  e.g. allow 'FU01', 'fu01', :fu01, :FU01, etc.
  @@traits_by_code[ code.upcase.to_s ]
end

.find_by_name(name) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/kittyverse/traits.rb', line 15

def self.find_by_name( name )
  ## note: allow string AND symbols (thus, use .to_s !!!)
  ## note: downcase name e.g. allow Savannah too (not just savannah)

  name = name.to_s.downcase
  name = ALT_TRAIT_NAMES[ name ]  if ALT_TRAIT_NAMES[ name ]

  @@traits_by_name[ name ]
end

.traits_by_codeObject



6
# File 'lib/kittyverse/traits.rb', line 6

def self.traits_by_code()  @@traits_by_code ||= {}; end

.traits_by_nameObject



7
# File 'lib/kittyverse/traits.rb', line 7

def self.traits_by_name()  @@traits_by_name ||= {}; end

Instance Method Details

#base?Boolean

base level 0 - no mutation

Returns:

  • (Boolean)


85
# File 'lib/kittyverse/traits.rb', line 85

def base?() tier == 0; end

#binaryObject Also known as: bin



65
# File 'lib/kittyverse/traits.rb', line 65

def binary() "%05b" % num; end

#codeObject



64
# File 'lib/kittyverse/traits.rb', line 64

def code()   "#{@type.code}#{Kai::CODE[@kai]}"; end

#m1?Boolean

m1 - mutation level 1

Returns:

  • (Boolean)


86
# File 'lib/kittyverse/traits.rb', line 86

def m1?()   tier == 1; end

#m2?Boolean

m2 - mutation level 2

Returns:

  • (Boolean)


87
# File 'lib/kittyverse/traits.rb', line 87

def m2?()   tier == 2; end

#m3?Boolean

m3 - mutation level 3

Returns:

  • (Boolean)


88
# File 'lib/kittyverse/traits.rb', line 88

def m3?()   tier == 3; end

#m4?Boolean

m4 - mutation level 4

Returns:

  • (Boolean)


89
# File 'lib/kittyverse/traits.rb', line 89

def m4?()   tier == 4; end

#numObject



63
# File 'lib/kittyverse/traits.rb', line 63

def num()    Kai::NUMBER[@kai]; end

#tier(format = :num) ⇒ Object Also known as: level, m



69
70
71
72
73
74
75
76
77
78
# File 'lib/kittyverse/traits.rb', line 69

def tier( format=:num )
  ## num   =>  0,1,2,3,4,nil                 : Integer|Nil
  ## roman => "","I","II","III","IIII",nil   : String|Nil

  if format == :roman
    MUTATION_TIER_ROMAN[@kai]
  else   ## assume integer num(ber)
    MUTATION_TIER[@kai]
  end
end

#tier_romanObject



80
# File 'lib/kittyverse/traits.rb', line 80

def tier_roman() tier(:roman); end

#update(**kwargs) ⇒ Object



56
57
58
59
60
61
# File 'lib/kittyverse/traits.rb', line 56

def update( **kwargs )
  kwargs.each do |name,value|
    send( "#{name}=", value ) ## use "regular" plain/classic attribute setter
  end
  self   ## return self for chaining
end