cryptopunks 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 90c086c27ab6e20974bcb2c1777873eb0e6d61006ddcd72724f96e18687c9a13
4
- data.tar.gz: f91b82d1ae82abf305d3e95ef1e86f33fb2da3dab9b41ef6e18551b30202b845
3
+ metadata.gz: 40ec7d396eeeca8b4363ac52ca11cd4bb28c6ec9aa88c026e605378af16c8369
4
+ data.tar.gz: a111a3dbbec40626e42f86a295adc00b90979c53081b43ed8d96b30ef5e0bdba
5
5
  SHA512:
6
- metadata.gz: 5e4066e8746b234fa3ac7d25aad89f2bcd2ec15bce6f05c4c9b55d2cbcc56258778c412924c57024e24375ed326a784eba84fc1154676e8559a6d345b8990418
7
- data.tar.gz: 1262074a74f23d241e7ee5430a5a8b29911490183b98d2f27b3c2c76c04ee4e9f5b7492aeec75a4aaff15f3f809fab6501142f7814f58ac1cca7671d6853cc24
6
+ metadata.gz: 1c0b5c1ac7ffa4d0db4677f8541d1f03c72726b50abfbd2da62ef97c4047f43373f58234b8ad19b4a000c60d70f1881c2aa0719a0a3930a59387a67a6446a796
7
+ data.tar.gz: 8b8e1ab287df0f36543c23491e5727c688672dcc898b02086a4332bc6bcf6f46f8b5cf4ee159ad6ce7d09e344c04f5cd82510b5a7d1d697cd17626bc5914aab6
data/Manifest.txt CHANGED
@@ -24,11 +24,14 @@ config/original/ape-male.txt
24
24
  config/original/human-female.txt
25
25
  config/original/human-male.txt
26
26
  config/original/zombie-male.txt
27
+ config/spritesheet.csv
28
+ config/spritesheet.png
27
29
  lib/cryptopunks.rb
28
30
  lib/cryptopunks/attributes.rb
29
31
  lib/cryptopunks/colors.rb
30
32
  lib/cryptopunks/composite.rb
31
33
  lib/cryptopunks/dataset.rb
34
+ lib/cryptopunks/generator.rb
32
35
  lib/cryptopunks/image.rb
33
36
  lib/cryptopunks/structs.rb
34
37
  lib/cryptopunks/version.rb
@@ -0,0 +1,237 @@
1
+ id, name, gender, type, more_names
2
+ 0, Male 1, m, Archetype - Human,
3
+ 1, Male 2, m, Archetype - Human,
4
+ 2, Male 3, m, Archetype - Human,
5
+ 3, Male 4, m, Archetype - Human,
6
+ 4, Female 1, f, Archetype - Human,
7
+ 5, Female 2, f, Archetype - Human,
8
+ 6, Female 3, f, Archetype - Human,
9
+ 7, Female 4, f, Archetype - Human,
10
+ 8, Zombie, m, Archetype - Zombie,
11
+ 9, Zombie Female, f, Archetype - Zombie,
12
+ 10, Ape, m, Archetype - Ape,
13
+ 11, Ape Female, f, Archetype - Ape,
14
+ 12, Alien, m, Archetype - Alien,
15
+ 13, Alien Female, f, Archetype - Alien,
16
+ 14, Demon, m, Archetype - Demon,
17
+ 15, Demon Female, f, Archetype - Demon,
18
+ 16, Mummy, m, Archetype - Mummy,
19
+ 17, Mummy Female, f, Archetype - Mummy,
20
+ 18, Orc, m, Archetype - Orc,
21
+ 19, Orc Female, f, Archetype - Orc,
22
+ 20, Robot, m, Archetype - Robot,
23
+ 21, Robot Female, f, Archetype - Robot,
24
+ 22, Skeleton, m, Archetype - Skeleton,
25
+ 23, Skeleton Female, f, Archetype - Skeleton,
26
+ 24, Vampire, m, Archetype - Vampire,
27
+ 25, Vampire Female, f, Archetype - Vampire,
28
+ 26, Zombie (Ape), m, Archetype - Zombie,
29
+ 27, Alien (Ape), m, Archetype - Alien,
30
+ 28, Alien 0°, m, Archetype - Alien,
31
+ 29, Alien 30°, m, Archetype - Alien,
32
+ 30, Alien 60°, m, Archetype - Alien,
33
+ 31, Alien 90°, m, Archetype - Alien,
34
+ 32, Alien 120°, m, Archetype - Alien,
35
+ 33, Alien 150°, m, Archetype - Alien,
36
+ 34, Alien 180°, m, Archetype - Alien,
37
+ 35, Alien 210°, m, Archetype - Alien,
38
+ 36, Alien 240°, m, Archetype - Alien,
39
+ 37, Alien 270°, m, Archetype - Alien,
40
+ 38, Alien 300°, m, Archetype - Alien,
41
+ 39, Alien 330°, m, Archetype - Alien,
42
+ 40, Alien (Ape) 0°, m, Archetype - Alien,
43
+ 41, Alien (Ape) 30°, m, Archetype - Alien,
44
+ 42, Alien (Ape) 60°, m, Archetype - Alien,
45
+ 43, Alien (Ape) 90°, m, Archetype - Alien,
46
+ 44, Alien (Ape) 120°, m, Archetype - Alien,
47
+ 45, Alien (Ape) 150°, m, Archetype - Alien,
48
+ 46, Alien (Ape) 180°, m, Archetype - Alien,
49
+ 47, Alien (Ape) 210°, m, Archetype - Alien,
50
+ 48, Alien (Ape) 240°, m, Archetype - Alien,
51
+ 49, Alien (Ape) 270°, m, Archetype - Alien,
52
+ 50, Alien (Ape) 300°, m, Archetype - Alien,
53
+ 51, Alien (Ape) 330°, m, Archetype - Alien,
54
+ 52, Alien Female 0°, f, Archetype - Alien,
55
+ 53, Alien Female 30°, f, Archetype - Alien,
56
+ 54, Alien Female 60°, f, Archetype - Alien,
57
+ 55, Alien Female 90°, f, Archetype - Alien,
58
+ 56, Alien Female 120°, f, Archetype - Alien,
59
+ 57, Alien Female 150°, f, Archetype - Alien,
60
+ 58, Alien Female 180°, f, Archetype - Alien,
61
+ 59, Alien Female 210°, f, Archetype - Alien,
62
+ 60, Alien Female 240°, f, Archetype - Alien,
63
+ 61, Alien Female 270°, f, Archetype - Alien,
64
+ 62, Alien Female 300°, f, Archetype - Alien,
65
+ 63, Alien Female 330°, f, Archetype - Alien,
66
+ 64, 3D Glasses, m, Attribute,
67
+ 65, 3D Glasses, f, Attribute,
68
+ 66, Bandana, m, Attribute,
69
+ 67, Bandana, f, Attribute,
70
+ 68, Beanie, m, Attribute,
71
+ 69, Beanie, f, Attribute,
72
+ 70, Big Beard, m, Attribute,
73
+ 71, Big Shades, m, Attribute,
74
+ 72, Big Shades, f, Attribute,
75
+ 73, Black Lipstick, f, Attribute,
76
+ 74, Blonde Bob, f, Attribute,
77
+ 75, Blonde Short, f, Attribute,
78
+ 76, Blue Eye Shadow, f, Attribute,
79
+ 77, Buck Teeth, m, Attribute,
80
+ 78, Cap, m, Attribute,
81
+ 79, Cap, f, Attribute,
82
+ 80, Cap Forward, m, Attribute,
83
+ 81, Cap Forward, f, Attribute,
84
+ 82, Chinstrap, m, Attribute,
85
+ 83, Choker, f, Attribute,
86
+ 84, Cigarette, m, Attribute,
87
+ 85, Cigarette, f, Attribute,
88
+ 86, Classic Shades, m, Attribute,
89
+ 87, Classic Shades, f, Attribute,
90
+ 88, Clown Eyes Blue, m, Attribute,
91
+ 89, Clown Eyes Blue, f, Attribute,
92
+ 90, Clown Eyes Green, m, Attribute,
93
+ 91, Clown Eyes Green, f, Attribute,
94
+ 92, Clown Hair Green, m, Attribute,
95
+ 93, Clown Hair Green, f, Attribute,
96
+ 94, Clown Nose, m, Attribute,
97
+ 95, Clown Nose, f, Attribute,
98
+ 96, Cowboy Hat, m, Attribute,
99
+ 97, Cowboy Hat, f, Attribute,
100
+ 98, Crazy Hair, m, Attribute,
101
+ 99, Crazy Hair, f, Attribute,
102
+ 100, Dark Hair, f, Attribute,
103
+ 101, Do-rag, m, Attribute,
104
+ 102, Do-rag, f, Attribute,
105
+ 103, Earring, m, Attribute,
106
+ 104, Earring, f, Attribute,
107
+ 105, Eye Mask, m, Attribute,
108
+ 106, Eye Mask, f, Attribute,
109
+ 107, Eye Patch, m, Attribute,
110
+ 108, Eye Patch, f, Attribute,
111
+ 109, Fedora, m, Attribute,
112
+ 110, Fedora, f, Attribute,
113
+ 111, Front Beard, m, Attribute,
114
+ 112, Front Beard Dark, m, Attribute,
115
+ 113, Frown, m, Attribute,
116
+ 114, Frumpy Hair, m, Attribute,
117
+ 115, Frumpy Hair, f, Attribute,
118
+ 116, Green Eye Shadow, f, Attribute,
119
+ 117, Goat, m, Attribute,
120
+ 118, Gold Chain, m, Attribute,
121
+ 119, Gold Chain, f, Attribute,
122
+ 120, Half Shaved, f, Attribute,
123
+ 121, Handlebars, m, Attribute,
124
+ 122, Headband, m, Attribute,
125
+ 123, Headband, f, Attribute,
126
+ 124, Hoodie, m, Attribute,
127
+ 125, Hoodie, f, Attribute,
128
+ 126, Horned Rim Glasses, m, Attribute,
129
+ 127, Horned Rim Glasses, f, Attribute,
130
+ 128, Hot Lipstick, f, Attribute,
131
+ 129, Knitted Cap, m, Attribute,
132
+ 130, Knitted Cap, f, Attribute,
133
+ 131, Luxurious Beard, m, Attribute,
134
+ 132, Medical Mask, m, Attribute,
135
+ 133, Medical Mask, f, Attribute,
136
+ 134, Messy Hair, m, Attribute,
137
+ 135, Messy Hair, f, Attribute,
138
+ 136, Mohawk, m, Attribute,
139
+ 137, Mohawk, f, Attribute,
140
+ 138, Mohawk Dark, m, Attribute,
141
+ 139, Mohawk Dark, f, Attribute,
142
+ 140, Mohawk Thin, m, Attribute,
143
+ 141, Mohawk Thin, f, Attribute,
144
+ 142, Mole, m, Attribute,
145
+ 143, Mole, f, Attribute,
146
+ 144, Mustache, m, Attribute,
147
+ 145, Muttonchops, m, Attribute,
148
+ 146, Nerd Glasses, m, Attribute,
149
+ 147, Nerd Glasses, f, Attribute,
150
+ 148, Normal Beard, m, Attribute,
151
+ 149, Normal Beard Black, m, Attribute,
152
+ 150, Orange Side, f, Attribute,
153
+ 151, Peak Spike, m, Attribute,
154
+ 152, Pigtails, f, Attribute,
155
+ 153, Pilot Helmet, f, Attribute,
156
+ 154, Pink with Hat, f, Attribute,
157
+ 155, Pipe, m, Attribute,
158
+ 156, Pipe, f, Attribute,
159
+ 157, Police Cap, m, Attribute,
160
+ 158, Police Cap, f, Attribute,
161
+ 159, Purple Eye Shadow, f, Attribute,
162
+ 160, Purple Hair, m, Attribute,
163
+ 161, Purple Hair, f, Attribute,
164
+ 162, Purple Lipstick, f, Attribute,
165
+ 163, Red Mohawk, f, Attribute,
166
+ 164, Regular Shades, m, Attribute,
167
+ 165, Regular Shades, f, Attribute,
168
+ 166, Rosy Cheeks, m, Attribute,
169
+ 167, Rosy Cheeks, f, Attribute,
170
+ 168, Shadow Beard, m, Attribute,
171
+ 169, Shaved Head, m, Attribute,
172
+ 170, Shaved Head, f, Attribute,
173
+ 171, Silver Chain, m, Attribute,
174
+ 172, Silver Chain, f, Attribute,
175
+ 173, Small Shades, m, Attribute,
176
+ 174, Small Shades, f, Attribute,
177
+ 175, Smile, m, Attribute,
178
+ 176, Spots, m, Attribute,
179
+ 177, Spots, f, Attribute,
180
+ 178, Straight Hair, f, Attribute,
181
+ 179, Straight Hair Blonde, f, Attribute,
182
+ 180, Straight Hair Dark, f, Attribute,
183
+ 181, Stringy Hair, m, Attribute,
184
+ 182, Stringy Hair, f, Attribute,
185
+ 183, Tassle Hat, f, Attribute,
186
+ 184, Tiara, f, Attribute,
187
+ 185, Top Hat, m, Attribute,
188
+ 186, Top Hat, f, Attribute,
189
+ 187, Vampire Hair, m, Attribute,
190
+ 188, Vape, m, Attribute,
191
+ 189, Vape, f, Attribute,
192
+ 190, VR, m, Attribute,
193
+ 191, VR, f, Attribute,
194
+ 192, Welding Goggles, f, Attribute,
195
+ 193, Wild Blonde, f, Attribute,
196
+ 194, Wild Hair, m, Attribute,
197
+ 195, Wild Hair, f, Attribute,
198
+ 196, Wild White Hair, f, Attribute,
199
+ 197, Bear Hood, m, Attribute,
200
+ 198, Bear Hood, f, Attribute,
201
+ 199, Birthday Hat, m, Attribute,
202
+ 200, Birthday Hat, f, Attribute,
203
+ 201, Bow, f, Attribute,
204
+ 202, Cigar, m, Attribute,
205
+ 203, Cigar, f, Attribute,
206
+ 204, Crown, m, Attribute,
207
+ 205, Crown, f, Attribute,
208
+ 206, Flowers, f, Attribute,
209
+ 207, Frog Hood, m, Attribute,
210
+ 208, Frog Hood, f, Attribute,
211
+ 209, Gold Diamond Necklace, m, Attribute,
212
+ 210, Gold Diamond Necklace, f, Attribute,
213
+ 211, Heart Shades, m, Attribute,
214
+ 212, Heart Shades, f, Attribute,
215
+ 213, Jester Hat, m, Attribute,
216
+ 214, Jester Hat, f, Attribute,
217
+ 215, Laser Eyes, m, Attribute,
218
+ 216, Laser Eyes Gold, m, Attribute,
219
+ 217, Pink Lipstick, f, Attribute,
220
+ 218, Red Lipstick, f, Attribute,
221
+ 219, Santa Hat, m, Attribute,
222
+ 220, Santa Hat, f, Attribute,
223
+ 221, Silver Earring, m, Attribute,
224
+ 222, Silver Earring, f, Attribute,
225
+ 223, Ski Googles, m, Attribute,
226
+ 224, Ski Googles, f, Attribute,
227
+ 225, Sombrero, m, Attribute,
228
+ 226, Sombrero, f, Attribute,
229
+ 227, Sun Hat, m, Attribute,
230
+ 228, Sun Hat, f, Attribute,
231
+ 229, Superhero Tiara, f, Attribute,
232
+ 230, Tears, m, Attribute,
233
+ 231, Tears, f, Attribute,
234
+ 232, Viking Helmet, m, Attribute,
235
+ 233, Viking Helmet, f, Attribute,
236
+ 234, Winter Hat, m, Attribute,
237
+ 235, Winter Hat, f, Attribute,
Binary file
@@ -9,7 +9,11 @@ module Cryptopunks
9
9
  Digest::SHA256.digest( data ).unpack( 'H*' )[0]
10
10
  end
11
11
 
12
- def self.read( path='./punks.png' )
12
+
13
+ PUNK_HEIGHT = 24
14
+ PUNK_WIDTH = 24
15
+
16
+ def self.read( path='./punks.png', width: PUNK_WIDTH, height: PUNK_HEIGHT )
13
17
  data = File.open( path, 'rb' ) { |f| f.read }
14
18
 
15
19
  hexdigest = sha256( data ) ## check sha256 checksum
@@ -21,13 +25,10 @@ module Cryptopunks
21
25
  end
22
26
 
23
27
  img = ChunkyPNG::Image.from_blob( data )
24
- new( img )
28
+ new( img, width: width, height: height )
25
29
  end
26
30
 
27
31
 
28
- PUNK_HEIGHT = 24
29
- PUNK_WIDTH = 24
30
-
31
32
  def initialize( *args, width: PUNK_WIDTH,
32
33
  height: PUNK_HEIGHT )
33
34
  super
@@ -0,0 +1,204 @@
1
+
2
+ module Cryptopunks
3
+
4
+ class Metadata
5
+ ### todo/fix:
6
+ ## move into Punks::Metadata or such
7
+ class Sprite
8
+ attr_reader :id, :name, :type, :gender
9
+
10
+
11
+ def initialize( id:,
12
+ name:,
13
+ type:,
14
+ gender: )
15
+ @id = id # zero-based index eg. 0,1,2,3, etc.
16
+ @name = name
17
+ @type = type
18
+ @gender = gender
19
+ end
20
+
21
+ ## todo/check - find better names for type attribute/archetypes?
22
+ ## use (alternate name/alias) base or face for archetypes? any others?
23
+ def attribute?() @type.downcase.start_with?( 'attribute' ); end
24
+ def archetype?() @type.downcase.start_with?( 'archetype' ); end
25
+ end # class Metadata::Sprite
26
+ end # class Metadata
27
+
28
+
29
+
30
+
31
+ class Generator
32
+
33
+ ######
34
+ # static helpers - (turn into "true" static self.class methods - why? why not?)
35
+ #
36
+ def normalize_key( str )
37
+ str.downcase.gsub(/[ ()°_-]/, '').strip
38
+ end
39
+
40
+ def normalize_gender( str )
41
+ ## e.g. Female => f
42
+ ## F => f
43
+ ## always return f or m
44
+ str.downcase[0]
45
+ end
46
+
47
+
48
+ def build_attributes_by_name( recs )
49
+ h = {}
50
+ recs.each_with_index do |rec|
51
+ key = normalize_key( rec.name )
52
+ key << "_(#{rec.gender})" if rec.attribute?
53
+
54
+ if h[ key ]
55
+ puts "!!! ERROR - attribute name is not unique:"
56
+ pp rec
57
+ puts "duplicate:"
58
+ pp h[key]
59
+ exit 1
60
+ end
61
+ h[ key ] = rec
62
+ end
63
+ ## pp h
64
+ h
65
+ end
66
+
67
+
68
+ def build_recs( recs ) ## build and normalize (meta data) records
69
+
70
+ ## sort by id
71
+ recs = recs.sort do |l,r|
72
+ l['id'].to_i( 10 ) <=> r['id'].to_i( 10 ) # use base10 (decimal)
73
+ end
74
+
75
+ ## assert all recs are in order by id (0 to size)
76
+ recs.each_with_index do |rec, exp_id|
77
+ id = rec['id'].to_i(10)
78
+ if id != exp_id
79
+ puts "!! ERROR - meta data record ids out-of-order - expected id #{exp_id}; got #{id}"
80
+ exit 1
81
+ end
82
+ end
83
+
84
+ ## convert to "wrapped / immutable" kind-of struct
85
+ recs = recs.map do |rec|
86
+ id = rec['id'].to_i( 10 )
87
+ name = rec['name']
88
+ gender = normalize_gender( rec['gender'] )
89
+ type = rec['type']
90
+
91
+ Metadata::Sprite.new(
92
+ id: id,
93
+ name: name,
94
+ type: type,
95
+ gender: gender)
96
+ end
97
+ recs
98
+ end # method build_recs
99
+
100
+
101
+
102
+
103
+ def initialize( image_path="./spritesheet.png",
104
+ meta_path="./spritesheet.csv" )
105
+ @sheet = Pixelart::ImageComposite.read( image_path )
106
+ recs = CsvHash.read( meta_path )
107
+
108
+ @recs = build_recs( recs )
109
+
110
+ ## lookup by "case/space-insensitive" name / key
111
+ @attributes_by_name = build_attributes_by_name( @recs )
112
+ end
113
+
114
+
115
+ def spritesheet() @sheet; end
116
+ alias_method :sheet, :spritesheet
117
+
118
+
119
+
120
+
121
+
122
+ def find_meta( q, gender: nil ) ## gender (m/f) required for attributes!!!
123
+
124
+ key = normalize_key( q ) ## normalize q(uery) string/symbol
125
+ key << "_(#{normalize_gender( gender )})" if gender
126
+
127
+ rec = @attributes_by_name[ key ]
128
+ if rec
129
+ puts " lookup >#{key}< => #{rec.id}: #{rec.name} / #{rec.type} (#{rec.gender})"
130
+ # pp rec
131
+ else
132
+ puts "!! WARN - no lookup found for key >#{key}<"
133
+ end
134
+ rec
135
+ end
136
+
137
+
138
+ def find( q, gender: nil ) ## gender (m/f) required for attributes!!!
139
+ rec = find_meta( q, gender: gender )
140
+
141
+ ## return image if record found
142
+ rec ? @sheet[ rec.id ] : nil
143
+ end
144
+
145
+
146
+
147
+
148
+ def to_recs( *values )
149
+ archetype_name = values[0]
150
+
151
+ ### todo/fix: check for nil/not found!!!!
152
+ archetype = find_meta( archetype_name )
153
+ if archetype.nil?
154
+ puts "!! ERROR - archetype >#{archetype}< not found; sorry"
155
+ exit 1
156
+ end
157
+
158
+ recs = [archetype]
159
+
160
+ attribute_names = values[1..-1]
161
+ ## note: attribute lookup requires gender from archetype!!!!
162
+ attribute_gender = archetype.gender
163
+
164
+ attribute_names.each do |attribute_name|
165
+ attribute = find_meta( attribute_name, gender: attribute_gender )
166
+ if attribute.nil?
167
+ puts "!! ERROR - attribute >#{attribute_name}< for (#{attribute_gender}) not found; sorry"
168
+ exit 1
169
+ end
170
+ recs << attribute
171
+ end
172
+
173
+ recs
174
+ end
175
+
176
+
177
+
178
+
179
+ def generate_image( *values, background: nil )
180
+
181
+ ids = if values[0].is_a?( Integer ) ## assume integer number (indexes)
182
+ values
183
+ else ## assume strings (names)
184
+ to_recs( *values ).map { |rec| rec.id }
185
+ end
186
+
187
+
188
+ punk = Pixelart::Image.new( 24, 24 )
189
+
190
+ if background ## for now assume background is (simply) color
191
+ punk.compose!( Pixelart::Image.new( 24, 24, background ) )
192
+ end
193
+
194
+ ids.each do |id|
195
+ punk.compose!( @sheet[ id ] )
196
+ end
197
+
198
+ punk
199
+ end
200
+ alias_method :generate, :generate_image
201
+
202
+ end # class Generator
203
+
204
+ end # module Cryptopunks
@@ -53,7 +53,7 @@ def initialize( initial=nil, design: nil,
53
53
  colors: nil )
54
54
  if initial
55
55
  ## pass image through as-is
56
- img = inital
56
+ img = initial
57
57
  else
58
58
 
59
59
  ## todo/fix:
@@ -4,7 +4,7 @@ module Cryptopunks
4
4
 
5
5
  MAJOR = 1
6
6
  MINOR = 2
7
- PATCH = 1
7
+ PATCH = 2
8
8
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
9
 
10
10
  def self.version
data/lib/cryptopunks.rb CHANGED
@@ -5,7 +5,7 @@ require 'csvreader'
5
5
 
6
6
 
7
7
  ## extra stdlibs
8
- require 'digest'
8
+ require 'digest' ## move/add to pixelart upstream - why? why not?
9
9
  require 'optparse'
10
10
 
11
11
 
@@ -27,6 +27,30 @@ require 'cryptopunks/dataset'
27
27
  require 'cryptopunks/colors'
28
28
  require 'cryptopunks/image'
29
29
 
30
+ require 'cryptopunks/generator'
31
+
32
+ ###
33
+ ## add convenience pre-configurated generatored with build-in spritesheet (see config)
34
+
35
+ module Cryptopunks
36
+
37
+ def self.generator
38
+ @generator ||= Generator.new( "#{root}/config/spritesheet.png",
39
+ "#{root}/config/spritesheet.csv" )
40
+ end
41
+
42
+ class Image
43
+ def self.generate( *values )
44
+ img = Cryptopunks.generator.generate( *values )
45
+ ## note: unwrap inner image before passing on to c'tor (requires ChunkyPNG image for now)
46
+ new( img.image )
47
+ end
48
+ end # class Image
49
+ end # module Cryptopunks
50
+
51
+
52
+
53
+
30
54
 
31
55
 
32
56
  module Cryptopunks
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cryptopunks
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-15 00:00:00.000000000 Z
11
+ date: 2021-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pixelart
@@ -131,11 +131,14 @@ files:
131
131
  - config/original/human-female.txt
132
132
  - config/original/human-male.txt
133
133
  - config/original/zombie-male.txt
134
+ - config/spritesheet.csv
135
+ - config/spritesheet.png
134
136
  - lib/cryptopunks.rb
135
137
  - lib/cryptopunks/attributes.rb
136
138
  - lib/cryptopunks/colors.rb
137
139
  - lib/cryptopunks/composite.rb
138
140
  - lib/cryptopunks/dataset.rb
141
+ - lib/cryptopunks/generator.rb
139
142
  - lib/cryptopunks/image.rb
140
143
  - lib/cryptopunks/structs.rb
141
144
  - lib/cryptopunks/version.rb