profilepic 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Manifest.txt +7 -7
- data/README.md +35 -2
- data/lib/profilepic/builder.rb +55 -99
- data/lib/profilepic/config/doge.rb +52 -0
- data/lib/profilepic/config/marcs.rb +163 -0
- data/lib/profilepic/config/saudis.rb +106 -0
- data/lib/profilepic/config/yeoldepunks.rb +204 -0
- data/lib/profilepic/helper.rb +162 -0
- data/lib/profilepic/public/spritesheet.js +7 -2
- data/lib/profilepic/public/style.css +19 -0
- data/lib/profilepic/service.rb +204 -417
- data/lib/profilepic/version.rb +1 -1
- data/lib/profilepic/views/doge.erb +5 -47
- data/lib/profilepic/views/index.erb +40 -13
- data/lib/profilepic/views/layout.erb +1 -1
- data/lib/profilepic/views/marcs.erb +5 -190
- data/lib/profilepic/views/more.erb +84 -0
- data/lib/profilepic/views/saudis.erb +33 -0
- data/lib/profilepic/views/yeoldepunks.erb +5 -202
- data/lib/profilepic.rb +9 -3
- metadata +9 -9
- data/lib/profilepic/public/doge-24x24.csv +0 -23
- data/lib/profilepic/public/doge-24x24.png +0 -0
- data/lib/profilepic/public/marcs-24x24.csv +0 -149
- data/lib/profilepic/public/marcs-24x24.png +0 -0
- data/lib/profilepic/public/yeoldepunks-24x24.csv +0 -134
- data/lib/profilepic/public/yeoldepunks-24x24.png +0 -0
- data/lib/profilepic/views/shared/_more_options.erb +0 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d9194ef8a921921733a83bef15c522456fd399d93e606e5d1e11e2252a2da80
|
4
|
+
data.tar.gz: 17e38b0c8108879aafe9313544a7dd97166024845017231658646fa4bd4840a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5ad1a98d1e65e7fa3f10c18226c474aa27a79802242b8eee7405444f6e2a3b5df9a313e3d91f2b5faba0358029377f175ac7bdc83431824938e633d9d4df961
|
7
|
+
data.tar.gz: dd1b25d565262e24fff04468f09fd60f933b0ad151a6e2628b4aa46efb7880e608713aebbfcfc56c9d9db472cd5f5552e202a79fa0aa7c530422f9e415a3d2b0
|
data/Manifest.txt
CHANGED
@@ -5,20 +5,20 @@ Rakefile
|
|
5
5
|
bin/profilepic
|
6
6
|
lib/profilepic.rb
|
7
7
|
lib/profilepic/builder.rb
|
8
|
-
lib/profilepic/
|
9
|
-
lib/profilepic/
|
10
|
-
lib/profilepic/
|
11
|
-
lib/profilepic/
|
8
|
+
lib/profilepic/config/doge.rb
|
9
|
+
lib/profilepic/config/marcs.rb
|
10
|
+
lib/profilepic/config/saudis.rb
|
11
|
+
lib/profilepic/config/yeoldepunks.rb
|
12
|
+
lib/profilepic/helper.rb
|
12
13
|
lib/profilepic/public/spritesheet.js
|
13
14
|
lib/profilepic/public/style.css
|
14
|
-
lib/profilepic/public/yeoldepunks-24x24.csv
|
15
|
-
lib/profilepic/public/yeoldepunks-24x24.png
|
16
15
|
lib/profilepic/service.rb
|
17
16
|
lib/profilepic/version.rb
|
18
17
|
lib/profilepic/views/doge.erb
|
19
18
|
lib/profilepic/views/index.erb
|
20
19
|
lib/profilepic/views/layout.erb
|
21
20
|
lib/profilepic/views/marcs.erb
|
22
|
-
lib/profilepic/views/
|
21
|
+
lib/profilepic/views/more.erb
|
22
|
+
lib/profilepic/views/saudis.erb
|
23
23
|
lib/profilepic/views/shared/_version.erb
|
24
24
|
lib/profilepic/views/yeoldepunks.erb
|
data/README.md
CHANGED
@@ -8,11 +8,44 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
+
## Command-Line Tool
|
11
12
|
|
12
|
-
|
13
|
+
Use the command line tool named - surprise, surpirse - `profilepic`
|
14
|
+
to run a zero-config / out-of-the-box profile pic(ture) as a service. Type:
|
13
15
|
|
14
|
-
|
16
|
+
$ profilepic
|
15
17
|
|
18
|
+
That will start-up a (local loopback) web server / service running on port 3000.
|
19
|
+
Open-up up the index page in your browser to get started e.g. <http://localhost:3000/>.
|
20
|
+
|
21
|
+
That's it.
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
## Usage in Your Scripts And/Or (Web) Apps
|
29
|
+
|
30
|
+
Yes, you can. The [`ProfilepicService` class](lib/profilepic/service.rb) is a "plain-vanilla" rack (web) app (powered by the [sinatra gem / library](https://github.com/sinatra/sinatra)). To run the app "standalone" use:
|
31
|
+
|
32
|
+
``` ruby
|
33
|
+
require 'profilepic'
|
34
|
+
|
35
|
+
# start-up the ProfilepicService (rack) app, that is, the profile pic(ure) as a service,
|
36
|
+
# using the WEBrick server running on port 3000 using the local loopback host e.g. 127.0.0.1
|
37
|
+
Rack::Handler::WEBrick.run ProfilepicService, :Port => 3000, :Host => '127.0.0.1'
|
38
|
+
```
|
39
|
+
|
40
|
+
Or mount the rack (web) app in your own scripts or web framework/library of choice.
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
## Install
|
45
|
+
|
46
|
+
Just install the gem:
|
47
|
+
|
48
|
+
$ gem install profilepic
|
16
49
|
|
17
50
|
|
18
51
|
|
data/lib/profilepic/builder.rb
CHANGED
@@ -13,13 +13,8 @@ class ImageReq ## (Generate) Image Request
|
|
13
13
|
name = _norm_key( params[:t] || 'punk' )
|
14
14
|
attributes = _parse_attributes( params[:attributes] || '' )
|
15
15
|
|
16
|
-
zoom = _parse_zoom( params[:z] || '1' )
|
17
|
-
background = _norm_key( params[:bg] || 'none' )
|
18
|
-
|
19
16
|
new( name: name,
|
20
|
-
attributes: attributes
|
21
|
-
zoom: zoom,
|
22
|
-
background: background )
|
17
|
+
attributes: attributes )
|
23
18
|
end
|
24
19
|
|
25
20
|
def self.build_marc( params )
|
@@ -27,59 +22,35 @@ class ImageReq ## (Generate) Image Request
|
|
27
22
|
pp params
|
28
23
|
|
29
24
|
name = 'marc'
|
30
|
-
|
31
|
-
more_attributes = _parse_attributes( params[:attributes] || '' )
|
32
|
-
|
33
|
-
eyes = _norm_key( params[:eyes] || 'none' )
|
34
|
-
face = _norm_key( params[:face] || 'none' )
|
35
|
-
beard = _norm_key( params[:beard] || 'none' )
|
36
|
-
hair = _norm_key( params[:hair] || 'none' )
|
37
|
-
headwear = _norm_key( params[:headwear] || 'none' )
|
38
|
-
eyewear = _norm_key( params[:eyewear] || 'none' )
|
39
|
-
mouth = _norm_key( params[:mouth] || 'none' )
|
40
|
-
|
41
|
-
zoom = _parse_zoom( params[:z] || '1' )
|
42
|
-
background = _norm_key( params[:bg] || 'none' )
|
43
|
-
|
44
|
-
attributes = [archetype]
|
45
|
-
attributes << eyes if eyes != 'none'
|
46
|
-
attributes << face if face != 'none'
|
47
|
-
attributes << hair if hair != 'none'
|
48
|
-
attributes << beard if beard != 'none'
|
49
|
-
attributes << headwear if headwear != 'none'
|
50
|
-
attributes << eyewear if eyewear != 'none'
|
51
|
-
attributes << mouth if mouth != 'none'
|
25
|
+
attributes = _build_attributes( params, MARC )
|
52
26
|
|
53
27
|
new( name: name,
|
54
|
-
attributes: attributes
|
55
|
-
zoom: zoom,
|
56
|
-
background: background )
|
28
|
+
attributes: attributes )
|
57
29
|
end
|
58
30
|
|
59
|
-
|
31
|
+
|
32
|
+
def self.build_saudi( params )
|
60
33
|
puts "==> image request params:"
|
61
34
|
pp params
|
62
35
|
|
63
|
-
name = '
|
64
|
-
|
65
|
-
|
36
|
+
name = 'saudi'
|
37
|
+
attributes = _build_attributes( params, SAUDI )
|
38
|
+
|
39
|
+
new( name: name,
|
40
|
+
attributes: attributes )
|
41
|
+
end
|
42
|
+
|
66
43
|
|
67
|
-
|
68
|
-
|
69
|
-
|
44
|
+
def self.build_doge( params )
|
45
|
+
puts "==> image request params:"
|
46
|
+
pp params
|
70
47
|
|
71
|
-
|
72
|
-
background = _norm_key( params[:bg] || 'none' )
|
48
|
+
name = 'doge'
|
73
49
|
|
74
|
-
attributes =
|
75
|
-
attributes << hair if hair != 'none'
|
76
|
-
attributes << headwear if headwear != 'none'
|
77
|
-
attributes << eyewear if eyewear != 'none'
|
50
|
+
attributes = _build_attributes( params, DOGE )
|
78
51
|
|
79
52
|
new( name: name,
|
80
|
-
attributes: attributes
|
81
|
-
zoom: zoom,
|
82
|
-
background: background )
|
53
|
+
attributes: attributes )
|
83
54
|
end
|
84
55
|
|
85
56
|
|
@@ -88,70 +59,37 @@ class ImageReq ## (Generate) Image Request
|
|
88
59
|
pp params
|
89
60
|
|
90
61
|
name = 'yeoldepunk'
|
91
|
-
|
92
|
-
|
93
|
-
hair = _norm_key( params[:hair] || 'none' )
|
94
|
-
beard = _norm_key( params[:beard] || 'none' )
|
95
|
-
eyes = _norm_key( params[:eyes] || 'none' )
|
96
|
-
eyewear = _norm_key( params[:eyewear] || 'none' )
|
97
|
-
blemish = _norm_key( params[:blemish] || 'none' )
|
98
|
-
nose = _norm_key( params[:nose] || 'none' )
|
99
|
-
mouth = _norm_key( params[:mouth] || 'none' )
|
100
|
-
mouthprop = _norm_key( params[:mouthprop] || 'none' )
|
101
|
-
earring = _norm_key( params[:earring] || 'none' )
|
102
|
-
headwear = _norm_key( params[:headwear] || 'none' )
|
103
|
-
neck = _norm_key( params[:neck] || 'none' )
|
104
|
-
|
105
|
-
zoom = _parse_zoom( params[:z] || '1' )
|
106
|
-
background = _norm_key( params[:bg] || 'none' )
|
107
|
-
|
108
|
-
attributes = [archetype]
|
109
|
-
attributes << hair if hair != 'none'
|
110
|
-
attributes << blemish if blemish != 'none'
|
111
|
-
attributes << beard if beard != 'none'
|
112
|
-
attributes << eyes if eyes != 'none'
|
113
|
-
attributes << eyewear if eyewear != 'none'
|
114
|
-
attributes << nose if nose != 'none'
|
115
|
-
attributes << mouth if mouth != 'none'
|
116
|
-
attributes << mouthprop if mouthprop != 'none'
|
117
|
-
attributes << earring if earring != 'none'
|
118
|
-
attributes << headwear if headwear != 'none'
|
119
|
-
attributes << neck if neck != 'none'
|
62
|
+
|
63
|
+
attributes = _build_attributes( params, YEOLDEPUNK )
|
120
64
|
|
121
65
|
new( name: name,
|
122
|
-
attributes: attributes
|
123
|
-
zoom: zoom,
|
124
|
-
background: background )
|
66
|
+
attributes: attributes )
|
125
67
|
end
|
126
68
|
|
127
69
|
|
128
70
|
|
129
71
|
attr_reader :name,
|
130
|
-
:attributes
|
131
|
-
|
132
|
-
:background
|
133
|
-
def initialize( name:, attributes:, zoom:, background: )
|
72
|
+
:attributes
|
73
|
+
def initialize( name:, attributes: )
|
134
74
|
@name = name
|
135
75
|
@attributes = attributes
|
136
|
-
@zoom = zoom
|
137
|
-
@background = background
|
138
76
|
end
|
139
77
|
|
140
78
|
def image
|
141
|
-
|
142
|
-
|
143
|
-
img = img.zoom( @zoom ) if [2,3,4,5,6,7,8,9,10,20].include?( @zoom )
|
144
|
-
img
|
79
|
+
## check - cache / memoize image - why? why not?
|
80
|
+
Original::Image.fabricate( @name, *@attributes )
|
145
81
|
end
|
146
82
|
|
83
|
+
def image_blob() image.to_blob; end
|
84
|
+
alias_method :blob, :image_blob ## keep (shortcut) alias - why? why not?
|
85
|
+
|
147
86
|
def image_key
|
148
|
-
@key ||=
|
149
|
-
key = "#{@name}#{Time.now.to_i}"
|
150
|
-
key << "@#{@zoom}x" if [2,3,4,5,6,7,8,9,10,20].include?( @zoom )
|
151
|
-
key
|
152
|
-
end
|
87
|
+
@key ||= "#{@name}#{Time.now.to_i}"
|
153
88
|
@key
|
154
89
|
end
|
90
|
+
alias_method :key, :image_key ## keep (shortcut) alias - why? why not?
|
91
|
+
|
92
|
+
|
155
93
|
|
156
94
|
#####
|
157
95
|
# (static) helpers
|
@@ -160,6 +98,28 @@ def self._norm_key( str )
|
|
160
98
|
str.downcase.strip
|
161
99
|
end
|
162
100
|
|
101
|
+
def self._build_attributes( params, spec )
|
102
|
+
attributes = []
|
103
|
+
spec.each do |name,h|
|
104
|
+
|
105
|
+
value = params[name]
|
106
|
+
|
107
|
+
if value.nil? || value.empty?
|
108
|
+
required = h[:none] == true ## check if value is required or optional
|
109
|
+
if required
|
110
|
+
raise ArgumentError, "required attribute/param >#{name}< missing"
|
111
|
+
else
|
112
|
+
next ## skip optional attributes
|
113
|
+
end
|
114
|
+
else
|
115
|
+
key = _norm_key( value )
|
116
|
+
attributes << key if key != 'none'
|
117
|
+
end
|
118
|
+
end
|
119
|
+
attributes
|
120
|
+
end
|
121
|
+
|
122
|
+
|
163
123
|
def self._parse_attributes( str )
|
164
124
|
# convert attributes to array
|
165
125
|
## allow various separators
|
@@ -169,9 +129,5 @@ def self._parse_attributes( str )
|
|
169
129
|
attributes
|
170
130
|
end
|
171
131
|
|
172
|
-
|
173
|
-
str.strip.to_i( 10 )
|
174
|
-
end
|
175
|
-
|
176
|
-
end
|
132
|
+
end # class ImageReq - (Generate) Image Request
|
177
133
|
|
@@ -0,0 +1,52 @@
|
|
1
|
+
|
2
|
+
DOGE = {
|
3
|
+
t: {
|
4
|
+
legend: 'Select a doge shiba inu base (archetype)',
|
5
|
+
options: [
|
6
|
+
'Classic',
|
7
|
+
'Dark',
|
8
|
+
'Zombie',
|
9
|
+
'Alien',
|
10
|
+
]
|
11
|
+
},
|
12
|
+
|
13
|
+
hair: {
|
14
|
+
legend: 'Select hair',
|
15
|
+
none: true,
|
16
|
+
options: [
|
17
|
+
'Crazy Hair',
|
18
|
+
],
|
19
|
+
},
|
20
|
+
|
21
|
+
headwear: {
|
22
|
+
legend: 'Select headwear',
|
23
|
+
none: true,
|
24
|
+
options: [
|
25
|
+
'Beanie',
|
26
|
+
'Cap',
|
27
|
+
'Cap Forward',
|
28
|
+
'Cowboy Hat',
|
29
|
+
'Fedora',
|
30
|
+
'Knitted Cap',
|
31
|
+
'Top Hat',
|
32
|
+
'Bandana',
|
33
|
+
'Headband',
|
34
|
+
'Tiara',
|
35
|
+
]
|
36
|
+
},
|
37
|
+
|
38
|
+
eyewear: {
|
39
|
+
legend: 'Select eyewear',
|
40
|
+
none: true,
|
41
|
+
options: [
|
42
|
+
'3D Glasses',
|
43
|
+
'Big Shades',
|
44
|
+
'Classic Shades',
|
45
|
+
'Regular Shades',
|
46
|
+
'Small Shades',
|
47
|
+
'Nerd Glasses',
|
48
|
+
'Eye Patch',
|
49
|
+
]
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
@@ -0,0 +1,163 @@
|
|
1
|
+
|
2
|
+
MARC = {
|
3
|
+
|
4
|
+
t: {
|
5
|
+
legend: 'Select a marc base (archetype)',
|
6
|
+
options: [
|
7
|
+
'Marc',
|
8
|
+
'Marc Mid',
|
9
|
+
'Marc Dark',
|
10
|
+
'Marc Albino',
|
11
|
+
'Marc Golden',
|
12
|
+
'Mad Lad',
|
13
|
+
'Zombie',
|
14
|
+
'Ape',
|
15
|
+
'Ape Golden',
|
16
|
+
'Ape Pink',
|
17
|
+
'Alien',
|
18
|
+
'Alien Green',
|
19
|
+
'Devil',
|
20
|
+
'Orc',
|
21
|
+
'Skeleton',
|
22
|
+
'Bot'],
|
23
|
+
},
|
24
|
+
|
25
|
+
eyes: {
|
26
|
+
legend: 'Select eyes (extras)',
|
27
|
+
none: true,
|
28
|
+
options: [
|
29
|
+
'Blue Eyes',
|
30
|
+
'Green Eyes',
|
31
|
+
],
|
32
|
+
},
|
33
|
+
|
34
|
+
face: {
|
35
|
+
legend: 'Select face (extras)',
|
36
|
+
none: true,
|
37
|
+
options: [
|
38
|
+
'Blue Eye Shadow',
|
39
|
+
'Green Eye Shadow',
|
40
|
+
'Purple Eye Shadow',
|
41
|
+
'Clown Eyes Blue',
|
42
|
+
'Clown Eyes Green',
|
43
|
+
'Bagner',
|
44
|
+
'Marc Tyson',
|
45
|
+
'Tears',
|
46
|
+
],
|
47
|
+
},
|
48
|
+
|
49
|
+
beard: {
|
50
|
+
legend: 'Select beard',
|
51
|
+
none: true,
|
52
|
+
options: [
|
53
|
+
'Big Beard White',
|
54
|
+
'Big Beard',
|
55
|
+
'Chinstrap',
|
56
|
+
'Front Beard',
|
57
|
+
'Front Beard Dark',
|
58
|
+
'Full Mustache',
|
59
|
+
'Full Mustache Dark',
|
60
|
+
'Goat',
|
61
|
+
'Goat Dark',
|
62
|
+
'Handlebar',
|
63
|
+
'Luxurious Beard',
|
64
|
+
'Mustache',
|
65
|
+
'Mutton Chop',
|
66
|
+
'Normal Beard',
|
67
|
+
'Normal Beard Black',
|
68
|
+
'Shadow Beard',
|
69
|
+
'Soul Patch',
|
70
|
+
],
|
71
|
+
},
|
72
|
+
|
73
|
+
hair: {
|
74
|
+
legend: 'Select hair',
|
75
|
+
none: true,
|
76
|
+
options: [
|
77
|
+
'Blonde Bob',
|
78
|
+
'Chad',
|
79
|
+
'Clown Hair',
|
80
|
+
'Crazy White Hair',
|
81
|
+
'Crazy Hair',
|
82
|
+
'Frumpy Hair',
|
83
|
+
'Marc Three',
|
84
|
+
'Purple Hair',
|
85
|
+
'Stringy Hair',
|
86
|
+
'Vampire Hair',
|
87
|
+
'Wild Blonde Hair',
|
88
|
+
'Wild Hair',
|
89
|
+
],
|
90
|
+
},
|
91
|
+
|
92
|
+
headwear: {
|
93
|
+
legend: 'Select headwear',
|
94
|
+
none: true,
|
95
|
+
options: [
|
96
|
+
'Bandana',
|
97
|
+
'Beanie',
|
98
|
+
'Bunny Ears',
|
99
|
+
'Cap',
|
100
|
+
'Skull Cap',
|
101
|
+
'Cap Forward',
|
102
|
+
'Police Cap',
|
103
|
+
'Cowboy Hat',
|
104
|
+
'Do Rag',
|
105
|
+
'Fast Food',
|
106
|
+
'Marcdonalds',
|
107
|
+
'Fedora',
|
108
|
+
'Headband',
|
109
|
+
'Roaring Headband',
|
110
|
+
'Hoodie',
|
111
|
+
'Purple Hoodie',
|
112
|
+
'Knitted Cap',
|
113
|
+
'Laurels',
|
114
|
+
'Shemagh',
|
115
|
+
'Tassle Hat',
|
116
|
+
'Tiarra',
|
117
|
+
'Top Hat',
|
118
|
+
'Uncle Sam',
|
119
|
+
'Viking',
|
120
|
+
'Welding Goggles',
|
121
|
+
],
|
122
|
+
},
|
123
|
+
|
124
|
+
eyewear: {
|
125
|
+
legend: 'Select eyewear',
|
126
|
+
none: true,
|
127
|
+
options: [
|
128
|
+
'3D Glasses',
|
129
|
+
'Aviators',
|
130
|
+
'Big Shades',
|
131
|
+
'Classic Shades',
|
132
|
+
'Deal With It',
|
133
|
+
'Glasses',
|
134
|
+
'Gold Glasses',
|
135
|
+
'Horned-Rim Glasses',
|
136
|
+
'Monocle',
|
137
|
+
'Nerd Glasses',
|
138
|
+
'Pink Shades',
|
139
|
+
'Polarized',
|
140
|
+
'Polarized White',
|
141
|
+
'Regular Shades',
|
142
|
+
'Small Shades',
|
143
|
+
'VR Headset',
|
144
|
+
'Eye Mask',
|
145
|
+
'Eye Patch',
|
146
|
+
'Lasers'],
|
147
|
+
},
|
148
|
+
|
149
|
+
mouth: {
|
150
|
+
legend: 'Select mouth prop',
|
151
|
+
none: true,
|
152
|
+
options: [
|
153
|
+
'Cigar',
|
154
|
+
'Cigarette',
|
155
|
+
'Hookah',
|
156
|
+
'Pipe',
|
157
|
+
'Vape',
|
158
|
+
'Medical Mask',
|
159
|
+
'Bubble Gum' ],
|
160
|
+
},
|
161
|
+
}
|
162
|
+
|
163
|
+
|
@@ -0,0 +1,106 @@
|
|
1
|
+
|
2
|
+
SAUDI = {
|
3
|
+
|
4
|
+
t: {
|
5
|
+
legend: 'Select a saudi/sheik base (archetype)',
|
6
|
+
options: [
|
7
|
+
'Light 1',
|
8
|
+
'Light 2',
|
9
|
+
'Medium 1',
|
10
|
+
'Medium 2',
|
11
|
+
'Dark 1',
|
12
|
+
'Dark 2',
|
13
|
+
],
|
14
|
+
},
|
15
|
+
|
16
|
+
headwear: {
|
17
|
+
legend: 'Select headwear',
|
18
|
+
none: true,
|
19
|
+
options: [
|
20
|
+
'White Shemagh',
|
21
|
+
'White Shemagh Agal',
|
22
|
+
'White Shemagh Gold Agal',
|
23
|
+
'White Shemagh Stylish Gold Agal',
|
24
|
+
'White Shemagh Crown',
|
25
|
+
'Brown Shemagh Agal',
|
26
|
+
'Brown Shemagh Crown',
|
27
|
+
'Red Shemagh',
|
28
|
+
'Red Shemagh Agal',
|
29
|
+
'Red Shemagh Crown',
|
30
|
+
],
|
31
|
+
},
|
32
|
+
|
33
|
+
|
34
|
+
beard: {
|
35
|
+
legend: 'Select beard',
|
36
|
+
none: true,
|
37
|
+
options: [
|
38
|
+
'messy white beard',
|
39
|
+
'short white beard',
|
40
|
+
'normal white beard',
|
41
|
+
'luxurious white beard',
|
42
|
+
'short grey beard',
|
43
|
+
'messy brown beard',
|
44
|
+
'normal brown beard',
|
45
|
+
'luxurious brown beard',
|
46
|
+
'shadow beard',
|
47
|
+
'shadow beard mustache',
|
48
|
+
'light beard',
|
49
|
+
'mustache',
|
50
|
+
'stylish mustache',
|
51
|
+
'sideburns',
|
52
|
+
'sideburns mustache',
|
53
|
+
'normal beard',
|
54
|
+
'normal brown beard mustache',
|
55
|
+
'luxurious beard',
|
56
|
+
],
|
57
|
+
},
|
58
|
+
|
59
|
+
|
60
|
+
eyewear: {
|
61
|
+
legend: 'Select eyewear',
|
62
|
+
none: true,
|
63
|
+
options: [
|
64
|
+
'horn rimmed glasses',
|
65
|
+
'rimless glasses',
|
66
|
+
'nerd glasses',
|
67
|
+
'stylish nerd glasses',
|
68
|
+
'classic shades',
|
69
|
+
'classic green shades',
|
70
|
+
'classic gold shades',
|
71
|
+
'regular pixel shades',
|
72
|
+
'regular reflective shades',
|
73
|
+
'big green shades',
|
74
|
+
'big pixel shades',
|
75
|
+
'big purple shades',
|
76
|
+
'big shades',
|
77
|
+
'small shades',
|
78
|
+
'regular shades',
|
79
|
+
'round shades',
|
80
|
+
'big round shades',
|
81
|
+
'square reflective shades',
|
82
|
+
'square shades',
|
83
|
+
'3d glasses',
|
84
|
+
'vr',
|
85
|
+
'laser eyes',
|
86
|
+
'max bidding',
|
87
|
+
|
88
|
+
],
|
89
|
+
},
|
90
|
+
|
91
|
+
mouth: {
|
92
|
+
legend: 'Select mouth prop',
|
93
|
+
none: true,
|
94
|
+
options: [
|
95
|
+
'cigarette',
|
96
|
+
'shadowless cigarette',
|
97
|
+
'miswak',
|
98
|
+
'vape',
|
99
|
+
'shadowless vape',
|
100
|
+
'cigar',
|
101
|
+
'pearwood pipe',
|
102
|
+
'rosewood pipe',
|
103
|
+
'bubble gum',
|
104
|
+
],
|
105
|
+
},
|
106
|
+
}
|