Class: Punkme::Image

Inherits:
Pixelart::Image
  • Object
show all
Defined in:
lib/punkme.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(img, gender:, skintone: nil) ⇒ Image

Returns a new instance of Image.



49
50
51
52
53
54
55
# File 'lib/punkme.rb', line 49

def initialize( img, gender:, 
                     skintone: nil )
   @gender   = gender
   @skintone = skintone
   @accessories = []
   super( nil, nil, img )  ### fix Image#initialze to accept "raw" image only
end

Instance Attribute Details

#accessoriesObject (readonly)

Returns the value of attribute accessories.



45
46
47
# File 'lib/punkme.rb', line 45

def accessories
  @accessories
end

#genderObject (readonly)

Returns the value of attribute gender.



45
46
47
# File 'lib/punkme.rb', line 45

def gender
  @gender
end

#skintoneObject (readonly)

Returns the value of attribute skintone.



45
46
47
# File 'lib/punkme.rb', line 45

def skintone
  @skintone
end

Class Method Details

.generate(skintone: SKINTONE_DARK, gender: 'm') ⇒ Object

change/rename generate to make - why? why not?

 or add/use alias - why? why not?

names (attributes) MUST go first -
 check if possible after keyword args ???


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/punkme.rb', line 28

def self.generate( 
                    skintone: SKINTONE_DARK,
                     gender:  'm' )

    skintone = Color.parse( skintone )  unless skintone.is_a?( Integer )

    punk = if gender == 'm'
              Punk::Human.make( skintone, gender: 'm' )
           else  ## assume f/female
              Punk::Human.make( skintone, gender: 'f' )
           end
    ## wrap as Punkme image (keeps metadata) - why? why not?
    new( punk.image, gender: gender,
                     skintone: skintone )
end

Instance Method Details

#add(*names) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/punkme.rb', line 57

def add( *names )      
    punk = Image.new( Pixelart::Image.new( width, height ).image,   
                       gender: @gender,
                       skintone: @skintone )
    punk.compose!( self ) ## add ourselves (that is, base punk) here

    ## add (optional) attributes
    names.each do |name|
      img = if gender == 'm'
              Punk::Sheet.find_by( name: name, gender: 'm', size: 'l' )
            else
              Punk::Sheet.find_by( name: name, gender: 'f', size: 's' )
           end
       punk.compose!( img )
       @accessories << name
    end
    punk
end