punkmaker 0.3.0 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -1
- data/Manifest.txt +6 -0
- data/README.md +230 -160
- data/config/alien-female.png +0 -0
- data/config/alien-male.png +0 -0
- data/config/human-female4.png +0 -0
- data/config/human-male4.png +0 -0
- data/config/skintone/color_me_human.csv +78 -0
- data/config/skintone/dr_ellis_monk.csv +11 -0
- data/config/skintone/punks_not_dead.csv +39 -0
- data/config/skintone/ye_olde_punks.csv +5 -0
- data/config/zombie-female.png +0 -0
- data/config/zombie-male.png +0 -0
- data/lib/punkmaker/alien.rb +49 -15
- data/lib/punkmaker/ape.rb +15 -12
- data/lib/punkmaker/colors.rb +60 -0
- data/lib/punkmaker/demon.rb +15 -11
- data/lib/punkmaker/human.rb +78 -42
- data/lib/punkmaker/mummy.rb +17 -12
- data/lib/punkmaker/orc.rb +14 -11
- data/lib/punkmaker/robot.rb +14 -11
- data/lib/punkmaker/skeleton.rb +14 -11
- data/lib/punkmaker/skintone.rb +16 -0
- data/lib/punkmaker/vampire.rb +14 -11
- data/lib/punkmaker/version.rb +1 -1
- data/lib/punkmaker/zombie.rb +49 -16
- data/lib/punkmaker.rb +4 -0
- metadata +8 -2
data/lib/punkmaker/zombie.rb
CHANGED
@@ -6,21 +6,61 @@ module Zombie ## make it a class - why? why not?
|
|
6
6
|
BASE_M = Image.read( "#{Pixelart::Module::Punkmaker.root}/config/zombie-male.png" )
|
7
7
|
BASE_F = Image.read( "#{Pixelart::Module::Punkmaker.root}/config/zombie-female.png" )
|
8
8
|
|
9
|
-
def self.make( color,
|
9
|
+
def self.make( color=nil,
|
10
|
+
shine: true,
|
10
11
|
gender: 'm' )
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
base = gender == 'm' ? BASE_M : BASE_F
|
13
|
+
|
14
|
+
## note: make a copy of base
|
15
|
+
punk = Image.new( base.width, base.height )
|
16
|
+
punk.compose!( base )
|
17
|
+
|
18
|
+
if color
|
19
|
+
color_map = derive_color_map( color )
|
20
|
+
punk = punk.change_colors( color_map )
|
21
|
+
end
|
22
|
+
|
23
|
+
if shine
|
24
|
+
shine_color = color ? derive_shine( color ) : 0x9bbc88ff
|
14
25
|
if gender == 'm'
|
15
|
-
|
16
|
-
|
17
|
-
|
26
|
+
punk[9,7] = shine_color
|
27
|
+
punk[8,8] = shine_color
|
28
|
+
else
|
29
|
+
punk[9,9] = shine_color
|
18
30
|
end
|
19
|
-
|
31
|
+
end
|
32
|
+
|
33
|
+
punk
|
20
34
|
end
|
35
|
+
|
36
|
+
|
37
|
+
def self.derive_shine( color )
|
38
|
+
## was before - reuse - why? why not?
|
39
|
+
## todo/check - check "formula" used in skintones script for humans!!!
|
40
|
+
## lighter = Color.from_hsl(
|
41
|
+
## (h+1)%360, # todo/check: make lighter by -1 on hue? or +1????
|
42
|
+
## [1.0,s+0.10].min,
|
43
|
+
## [1.0,l+0.25].min)
|
44
|
+
|
45
|
+
color = Color.from_hex( color ) if color.is_a?( String )
|
46
|
+
|
47
|
+
hsv = Color.to_hsv( color )
|
48
|
+
# pp hsv
|
49
|
+
|
50
|
+
h, s, v = hsv
|
51
|
+
h = h % 360 # make always positive (might be -50 or such)
|
52
|
+
## pp [h,s,v]
|
53
|
+
|
54
|
+
## add extra saturation if v(alue) / brightness is max 1.0 - why? why not?
|
55
|
+
sdiff = v >= 0.99 ? 0.25 : 0.15
|
56
|
+
|
57
|
+
lighter = Color.from_hsv( h, [0.0, s-sdiff].max, [v+0.1,1.0].min )
|
58
|
+
lighter
|
59
|
+
end
|
60
|
+
|
21
61
|
|
22
62
|
def self.derive_color_map( color )
|
23
|
-
color = Color.
|
63
|
+
color = Color.from_hex( color ) if color.is_a?( String )
|
24
64
|
|
25
65
|
# 2 pixels #9bbc88 / rgb(155 188 136) - hsl( 98° 28% 64%) - lighter
|
26
66
|
# 125 pixels #7da269 / rgb(125 162 105) - hsl( 99° 23% 52%) - base (use as base)
|
@@ -40,17 +80,10 @@ module Zombie ## make it a class - why? why not?
|
|
40
80
|
[0.0,s-0.05].max,
|
41
81
|
[0.0,l-0.12].max)
|
42
82
|
|
43
|
-
## todo/check - check "formula" used in skintones script for humans!!!
|
44
|
-
lighter = Color.from_hsl(
|
45
|
-
(h+1)%360, # todo/check: make lighter by -1 on hue? or +1????
|
46
|
-
[1.0,s+0.10].min,
|
47
|
-
[1.0,l+0.25].min)
|
48
|
-
|
49
83
|
|
50
84
|
color_map = {
|
51
85
|
'#7da269' => base,
|
52
86
|
'#5e7253' => darker,
|
53
|
-
'#9bbc88' => lighter
|
54
87
|
}
|
55
88
|
|
56
89
|
color_map
|
data/lib/punkmaker.rb
CHANGED
@@ -4,6 +4,10 @@ require 'spritesheet'
|
|
4
4
|
|
5
5
|
require_relative 'punkmaker/version' ## let version always go first
|
6
6
|
|
7
|
+
## support - move to ???
|
8
|
+
require_relative 'punkmaker/colors' ## ColorBundle (color by name lookup and mroe)
|
9
|
+
require_relative 'punkmaker/skintone'
|
10
|
+
|
7
11
|
## more base / archetypes
|
8
12
|
require_relative 'punkmaker/human'
|
9
13
|
require_relative 'punkmaker/alien'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: punkmaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.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: 2023-
|
11
|
+
date: 2023-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pixelart
|
@@ -102,6 +102,10 @@ files:
|
|
102
102
|
- config/robot-male.png
|
103
103
|
- config/skeleton-female.png
|
104
104
|
- config/skeleton-male.png
|
105
|
+
- config/skintone/color_me_human.csv
|
106
|
+
- config/skintone/dr_ellis_monk.csv
|
107
|
+
- config/skintone/punks_not_dead.csv
|
108
|
+
- config/skintone/ye_olde_punks.csv
|
105
109
|
- config/vampire-female.png
|
106
110
|
- config/vampire-male.png
|
107
111
|
- config/zombie-female.png
|
@@ -109,6 +113,7 @@ files:
|
|
109
113
|
- lib/punkmaker.rb
|
110
114
|
- lib/punkmaker/alien.rb
|
111
115
|
- lib/punkmaker/ape.rb
|
116
|
+
- lib/punkmaker/colors.rb
|
112
117
|
- lib/punkmaker/demon.rb
|
113
118
|
- lib/punkmaker/hair.rb
|
114
119
|
- lib/punkmaker/human.rb
|
@@ -116,6 +121,7 @@ files:
|
|
116
121
|
- lib/punkmaker/orc.rb
|
117
122
|
- lib/punkmaker/robot.rb
|
118
123
|
- lib/punkmaker/skeleton.rb
|
124
|
+
- lib/punkmaker/skintone.rb
|
119
125
|
- lib/punkmaker/vampire.rb
|
120
126
|
- lib/punkmaker/version.rb
|
121
127
|
- lib/punkmaker/zombie.rb
|