ehb_game_lib 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42ec189978ad34c8ab1c64d5ba99e63ae27099553310cfa380e1cb2eec9bb19d
|
4
|
+
data.tar.gz: aabf62f8fcb17570c9088b3c94dc9d6c47c5900916cb7630e113f3672a3e8f1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1964fd37af7244749fc0303dbe7c9504e2df777574ada1fb5cd7db174705e485363f45bbeacefb66c27ef2436b3f8c5c8b3926bcdc9004f37c81e0740f816fe0
|
7
|
+
data.tar.gz: e8de637269a0de65b42668c04df1632268689cbb26476803b2681d347e1b7ba49525272e5960697b5aca6cbe83f4f1d9a74aee32b7216b34e3c609c2b7217b98
|
@@ -1,99 +1,50 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
3
5
|
module EhbGameLib
|
4
6
|
module Math
|
5
7
|
module RectableObject
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
8
|
+
require_sub __FILE__
|
9
|
+
|
10
|
+
[%i[ax x width x_anchor left center right], # rubocop:disable Metrics/BlockLength
|
11
|
+
%i[ay y height y_anchor top middle bottom]].each do |aa|
|
12
|
+
a = ::OpenStruct.new(
|
13
|
+
%i[name coord size anchor floor mean ceil]
|
14
|
+
.each_with_index.map { |k, i| [k, aa[i]] }.to_h
|
15
|
+
)
|
16
|
+
|
17
|
+
define_method a.name do
|
18
|
+
@data ||= {}
|
19
|
+
@data[a.name] ||=
|
20
|
+
Axis.new(
|
21
|
+
-> { send(a.coord) },
|
22
|
+
->(v) { send("#{a.coord}=", v) },
|
23
|
+
-> { send(a.size) }
|
18
24
|
)
|
19
|
-
end
|
20
|
-
RUBY_EVAL
|
21
|
-
|
22
|
-
%i[floor mean ceil].each do |m|
|
23
|
-
class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
|
24
|
-
def #{a[m]}
|
25
|
-
#{a[:name]}.#{m}
|
26
|
-
end
|
27
|
-
|
28
|
-
def #{a[m]}=(v)
|
29
|
-
#{a[:name]}.#{m} = v
|
30
|
-
end
|
31
|
-
RUBY_EVAL
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def rect
|
36
|
-
::Chingu::Rect.new(left, top, width, height)
|
37
|
-
end
|
38
|
-
|
39
|
-
class Axis
|
40
|
-
attr_accessor :anchor
|
41
|
-
|
42
|
-
def initialize(coord_get, coord_set, size_get)
|
43
|
-
@coord_get = coord_get
|
44
|
-
@coord_set = coord_set
|
45
|
-
@size_get = size_get
|
46
25
|
end
|
47
26
|
|
48
|
-
|
49
|
-
|
50
|
-
|
27
|
+
%i[anchor floor mean ceil].each do |m|
|
28
|
+
define_method a[m] do |*args|
|
29
|
+
if args.count.zero?
|
30
|
+
send(a.name).send(m)
|
31
|
+
elsif args.count == 1
|
32
|
+
send(a.name).send("#{m}=", args[0])
|
51
33
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
def size
|
57
|
-
@size_get.call
|
58
|
-
end
|
59
|
-
|
60
|
-
%w[floor mean ceil].each do |m|
|
61
|
-
class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
|
62
|
-
def #{m}
|
63
|
-
coord + #{m}_delta
|
34
|
+
self
|
35
|
+
else
|
36
|
+
raise ::ArgumentError, "Invalid number of arguments (#{args.count} for 0..1)"
|
64
37
|
end
|
65
|
-
|
66
|
-
def #{m}=(v)
|
67
|
-
self.coord = v - #{m}_delta
|
68
|
-
end
|
69
|
-
RUBY_EVAL
|
70
|
-
end
|
71
|
-
|
72
|
-
private
|
73
|
-
|
74
|
-
def floor_delta
|
75
|
-
case anchor
|
76
|
-
when :mean then - size / 2
|
77
|
-
when :ceil then - size
|
78
|
-
else 0
|
79
38
|
end
|
80
|
-
end
|
81
39
|
|
82
|
-
|
83
|
-
|
84
|
-
when :mean then 0
|
85
|
-
when :ceil then - size / 2
|
86
|
-
else size / 2
|
40
|
+
define_method "#{a[m]}=" do |v|
|
41
|
+
send(a.name).send("#{m}=", v)
|
87
42
|
end
|
88
43
|
end
|
44
|
+
end
|
89
45
|
|
90
|
-
|
91
|
-
|
92
|
-
when :mean then size / 2
|
93
|
-
when :ceil then 0
|
94
|
-
else size
|
95
|
-
end
|
96
|
-
end
|
46
|
+
def rect
|
47
|
+
::Chingu::Rect.new(left, top, width, height)
|
97
48
|
end
|
98
49
|
end
|
99
50
|
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EhbGameLib
|
6
|
+
module Math
|
7
|
+
module RectableObject
|
8
|
+
class Axis
|
9
|
+
attr_accessor :anchor
|
10
|
+
|
11
|
+
common_constructor :coord_get, :coord_set, :size_get
|
12
|
+
|
13
|
+
def coord
|
14
|
+
coord_get.call
|
15
|
+
end
|
16
|
+
|
17
|
+
def coord=(v)
|
18
|
+
coord_set.call(v)
|
19
|
+
end
|
20
|
+
|
21
|
+
def size
|
22
|
+
size_get.call
|
23
|
+
end
|
24
|
+
|
25
|
+
%w[floor mean ceil].each do |m|
|
26
|
+
define_method m do
|
27
|
+
coord + send("#{m}_delta")
|
28
|
+
end
|
29
|
+
|
30
|
+
define_method "#{m}=" do |v|
|
31
|
+
self.coord = v - send("#{m}_delta")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def floor_delta
|
38
|
+
case anchor
|
39
|
+
when :mean then - size / 2
|
40
|
+
when :ceil then - size
|
41
|
+
else 0
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def mean_delta
|
46
|
+
case anchor
|
47
|
+
when :mean then 0
|
48
|
+
when :ceil then - size / 2
|
49
|
+
else size / 2
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def ceil_delta
|
54
|
+
case anchor
|
55
|
+
when :mean then size / 2
|
56
|
+
when :ceil then 0
|
57
|
+
else size
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -19,8 +19,10 @@ module EhbGameLib
|
|
19
19
|
quantum
|
20
20
|
end
|
21
21
|
|
22
|
-
def quantum_to_magick_range(quantum)
|
23
|
-
((quantum / QUANTUM_MAX.to_f) * ::Magick::QuantumRange).floor
|
22
|
+
def quantum_to_magick_range(quantum, invert = false)
|
23
|
+
r = ((quantum / QUANTUM_MAX.to_f) * ::Magick::QuantumRange).floor
|
24
|
+
r = ::Magick::QuantumRange - r if invert
|
25
|
+
r
|
24
26
|
end
|
25
27
|
|
26
28
|
# @return [Array<EhbGameLib::Palettes::Color>]
|
@@ -54,7 +56,8 @@ module EhbGameLib
|
|
54
56
|
# @return [Magick::Pixel]
|
55
57
|
def magick_pixel
|
56
58
|
@magick_pixel ||= ::Magick::Pixel.new(
|
57
|
-
*[red, green, blue
|
59
|
+
*[red, green, blue].map { |n| self.class.quantum_to_magick_range(n) },
|
60
|
+
self.class.quantum_to_magick_range(alpha, true)
|
58
61
|
)
|
59
62
|
end
|
60
63
|
|
data/lib/ehb_game_lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ehb_game_lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eduardo H. Bogoni
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01-
|
11
|
+
date: 2021-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chingu
|
@@ -154,6 +154,7 @@ files:
|
|
154
154
|
- lib/ehb_game_lib/math/line_segment.rb
|
155
155
|
- lib/ehb_game_lib/math/quadratic_equation.rb
|
156
156
|
- lib/ehb_game_lib/math/rectable_object.rb
|
157
|
+
- lib/ehb_game_lib/math/rectable_object/axis.rb
|
157
158
|
- lib/ehb_game_lib/math/vector.rb
|
158
159
|
- lib/ehb_game_lib/media_path.rb
|
159
160
|
- lib/ehb_game_lib/nes.rb
|