reight 0.1.6 → 0.1.8

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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.github/PULL_REQUEST_TEMPLATE.md +12 -0
  3. data/CONTRIBUTING.md +7 -0
  4. data/ChangeLog.md +76 -0
  5. data/README.md +6 -5
  6. data/Rakefile +5 -2
  7. data/VERSION +1 -1
  8. data/bin/r8 +18 -8
  9. data/lib/reight/all.rb +7 -2
  10. data/lib/reight/app/chips.rb +124 -0
  11. data/lib/reight/app/map/brush.rb +1 -1
  12. data/lib/reight/app/map/brush_base.rb +3 -3
  13. data/lib/reight/app/map/canvas.rb +10 -15
  14. data/lib/reight/app/map/editor.rb +44 -17
  15. data/lib/reight/app/map/line.rb +5 -5
  16. data/lib/reight/app/map/rect.rb +2 -2
  17. data/lib/reight/app/map.rb +0 -1
  18. data/lib/reight/app/navigator.rb +33 -47
  19. data/lib/reight/app/runner.rb +123 -86
  20. data/lib/reight/app/sound/brush.rb +32 -0
  21. data/lib/reight/app/sound/canvas.rb +190 -0
  22. data/lib/reight/app/sound/editor.rb +170 -10
  23. data/lib/reight/app/sound/eraser.rb +28 -0
  24. data/lib/reight/app/sound/tool.rb +29 -0
  25. data/lib/reight/app/sound.rb +4 -0
  26. data/lib/reight/app/sprite/canvas.rb +23 -18
  27. data/lib/reight/app/sprite/color.rb +3 -1
  28. data/lib/reight/app/sprite/editor.rb +58 -47
  29. data/lib/reight/app/sprite/line.rb +1 -1
  30. data/lib/reight/app/sprite/shape.rb +1 -1
  31. data/lib/reight/app/sprite.rb +0 -1
  32. data/lib/reight/app.rb +24 -5
  33. data/lib/reight/button.rb +10 -7
  34. data/lib/reight/chip.rb +32 -6
  35. data/lib/reight/context.rb +168 -0
  36. data/lib/reight/helpers.rb +2 -2
  37. data/lib/reight/index.rb +87 -0
  38. data/lib/reight/map.rb +141 -11
  39. data/lib/reight/project.rb +45 -6
  40. data/lib/reight/reight.rb +11 -15
  41. data/lib/reight/sound.rb +238 -0
  42. data/lib/reight/sprite.rb +42 -0
  43. data/lib/reight/text.rb +124 -0
  44. data/lib/reight.rb +7 -3
  45. data/reight.gemspec +7 -7
  46. data/res/icons.png +0 -0
  47. data/test/helper.rb +16 -0
  48. data/test/test_map.rb +7 -7
  49. data/test/test_map_chunk.rb +6 -6
  50. data/test/test_sprite.rb +28 -0
  51. metadata +42 -32
  52. data/lib/reight/app/map/chips.rb +0 -84
  53. data/lib/reight/app/music/editor.rb +0 -25
  54. data/lib/reight/app/music.rb +0 -1
  55. data/lib/reight/app/sprite/chips.rb +0 -92
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reight
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-29 00:00:00.000000000 Z
11
+ date: 2025-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xot
@@ -16,100 +16,100 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.3.3
19
+ version: 0.3.5
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.3.3
22
+ version: 0.3.5
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 0.3.3
29
+ version: 0.3.5
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.3.3
32
+ version: 0.3.5
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rucy
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.3.3
39
+ version: 0.3.5
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 0.3.3
42
+ version: 0.3.5
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: 0.3.3
49
+ version: 0.3.5
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 0.3.3
52
+ version: 0.3.5
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: beeps
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: 0.3.3
59
+ version: 0.3.5
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 0.3.3
62
+ version: 0.3.5
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: 0.3.3
69
+ version: 0.3.5
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: 0.3.3
72
+ version: 0.3.5
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: rays
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
77
  - - "~>"
78
78
  - !ruby/object:Gem::Version
79
- version: 0.3.3
79
+ version: 0.3.5
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 0.3.3
82
+ version: 0.3.5
83
83
  type: :runtime
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.3.3
89
+ version: 0.3.5
90
90
  - - ">="
91
91
  - !ruby/object:Gem::Version
92
- version: 0.3.3
92
+ version: 0.3.5
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: reflexion
95
95
  requirement: !ruby/object:Gem::Requirement
96
96
  requirements:
97
97
  - - "~>"
98
98
  - !ruby/object:Gem::Version
99
- version: 0.3.3
99
+ version: 0.3.5
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: 0.3.3
102
+ version: 0.3.5
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: 0.3.3
109
+ version: 0.3.5
110
110
  - - ">="
111
111
  - !ruby/object:Gem::Version
112
- version: 0.3.3
112
+ version: 0.3.5
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: processing
115
115
  requirement: !ruby/object:Gem::Requirement
@@ -119,7 +119,7 @@ dependencies:
119
119
  version: '1.1'
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
- version: 1.1.5
122
+ version: 1.1.7
123
123
  type: :runtime
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
@@ -129,27 +129,27 @@ dependencies:
129
129
  version: '1.1'
130
130
  - - ">="
131
131
  - !ruby/object:Gem::Version
132
- version: 1.1.5
132
+ version: 1.1.7
133
133
  - !ruby/object:Gem::Dependency
134
134
  name: rubysketch
135
135
  requirement: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: 0.7.6
139
+ version: 0.7.8
140
140
  - - ">="
141
141
  - !ruby/object:Gem::Version
142
- version: 0.7.6
142
+ version: 0.7.8
143
143
  type: :runtime
144
144
  prerelease: false
145
145
  version_requirements: !ruby/object:Gem::Requirement
146
146
  requirements:
147
147
  - - "~>"
148
148
  - !ruby/object:Gem::Version
149
- version: 0.7.6
149
+ version: 0.7.8
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: 0.7.6
152
+ version: 0.7.8
153
153
  description: A Retro Game Engine for Ruby.
154
154
  email: xordog@gmail.com
155
155
  executables:
@@ -157,11 +157,13 @@ executables:
157
157
  extensions: []
158
158
  extra_rdoc_files: []
159
159
  files:
160
+ - ".github/PULL_REQUEST_TEMPLATE.md"
160
161
  - ".github/workflows/release-gem.yml"
161
162
  - ".github/workflows/tag.yml"
162
163
  - ".github/workflows/test.yml"
163
164
  - ".github/workflows/utils.rb"
164
165
  - ".gitignore"
166
+ - CONTRIBUTING.md
165
167
  - ChangeLog.md
166
168
  - Gemfile
167
169
  - LICENSE
@@ -172,25 +174,26 @@ files:
172
174
  - lib/reight.rb
173
175
  - lib/reight/all.rb
174
176
  - lib/reight/app.rb
177
+ - lib/reight/app/chips.rb
175
178
  - lib/reight/app/map.rb
176
179
  - lib/reight/app/map/brush.rb
177
180
  - lib/reight/app/map/brush_base.rb
178
181
  - lib/reight/app/map/canvas.rb
179
- - lib/reight/app/map/chips.rb
180
182
  - lib/reight/app/map/editor.rb
181
183
  - lib/reight/app/map/line.rb
182
184
  - lib/reight/app/map/rect.rb
183
185
  - lib/reight/app/map/tool.rb
184
- - lib/reight/app/music.rb
185
- - lib/reight/app/music/editor.rb
186
186
  - lib/reight/app/navigator.rb
187
187
  - lib/reight/app/runner.rb
188
188
  - lib/reight/app/sound.rb
189
+ - lib/reight/app/sound/brush.rb
190
+ - lib/reight/app/sound/canvas.rb
189
191
  - lib/reight/app/sound/editor.rb
192
+ - lib/reight/app/sound/eraser.rb
193
+ - lib/reight/app/sound/tool.rb
190
194
  - lib/reight/app/sprite.rb
191
195
  - lib/reight/app/sprite/brush.rb
192
196
  - lib/reight/app/sprite/canvas.rb
193
- - lib/reight/app/sprite/chips.rb
194
197
  - lib/reight/app/sprite/color.rb
195
198
  - lib/reight/app/sprite/editor.rb
196
199
  - lib/reight/app/sprite/fill.rb
@@ -200,12 +203,17 @@ files:
200
203
  - lib/reight/app/sprite/tool.rb
201
204
  - lib/reight/button.rb
202
205
  - lib/reight/chip.rb
206
+ - lib/reight/context.rb
203
207
  - lib/reight/extension.rb
204
208
  - lib/reight/helpers.rb
205
209
  - lib/reight/history.rb
210
+ - lib/reight/index.rb
206
211
  - lib/reight/map.rb
207
212
  - lib/reight/project.rb
208
213
  - lib/reight/reight.rb
214
+ - lib/reight/sound.rb
215
+ - lib/reight/sprite.rb
216
+ - lib/reight/text.rb
209
217
  - reight.gemspec
210
218
  - res/icons.png
211
219
  - test/helper.rb
@@ -213,6 +221,7 @@ files:
213
221
  - test/test_chip_list.rb
214
222
  - test/test_map.rb
215
223
  - test/test_map_chunk.rb
224
+ - test/test_sprite.rb
216
225
  homepage: https://github.com/xord/reight
217
226
  licenses:
218
227
  - MIT
@@ -242,3 +251,4 @@ test_files:
242
251
  - test/test_chip_list.rb
243
252
  - test/test_map.rb
244
253
  - test/test_map_chunk.rb
254
+ - test/test_sprite.rb
@@ -1,84 +0,0 @@
1
- using Reight
2
-
3
-
4
- class Reight::MapEditor::Chips
5
-
6
- def initialize(app, chips, size = 8)
7
- @app, @chips = app, chips
8
- @offset = create_vector
9
-
10
- @app.history.disable do
11
- set_frame 0, 0, size, size
12
- end
13
- end
14
-
15
- attr_reader :x, :y, :size
16
-
17
- def chip = @chips.at(x, y, size, size)
18
-
19
- def set_frame(x, y, w, h)
20
- raise 'Chips: width != height' if w != h
21
- @x = align_to_grid(x).clamp(0..@chips.image.width)
22
- @y = align_to_grid(y).clamp(0..@chips.image.height)
23
- @size = w
24
- end
25
-
26
- def draw()
27
- sp = sprite
28
-
29
- clip sp.x, sp.y, sp.w, sp.h
30
- translate(*clamp_offset(@offset).to_a)
31
- image @chips.image, 0, 0
32
-
33
- no_fill
34
- stroke 255, 255, 255
35
- stroke_weight 1
36
- rect @x, @y, @size, @size
37
- end
38
-
39
- def mouse_pressed(x, y)
40
- @prev_pos = create_vector x, y
41
- end
42
-
43
- def mouse_released(x, y)
44
- @offset = clamp_offset @offset
45
- end
46
-
47
- def mouse_dragged(x, y)
48
- pos = create_vector x, y
49
- @offset += pos - @prev_pos if @prev_pos
50
- @prev_pos = pos
51
- end
52
-
53
- def mouse_clicked(x, y)
54
- set_frame(
55
- -@offset.x + align_to_grid(x),
56
- -@offset.y + align_to_grid(y),
57
- size,
58
- size)
59
- end
60
-
61
- def sprite()
62
- @sprite ||= Sprite.new.tap do |sp|
63
- sp.draw {draw}
64
- sp.mouse_pressed {mouse_pressed sp.mouse_x, sp.mouse_y}
65
- sp.mouse_released {mouse_released sp.mouse_x, sp.mouse_y}
66
- sp.mouse_dragged {mouse_dragged sp.mouse_x, sp.mouse_y}
67
- sp.mouse_clicked {mouse_clicked sp.mouse_x, sp.mouse_y}
68
- end
69
- end
70
-
71
- private
72
-
73
- def clamp_offset(offset)
74
- sp = sprite
75
- x = offset.x.clamp([-(@chips.image.width - sp.w), 0].min..0)
76
- y = offset.y.clamp([-(@chips.image.height - sp.h), 0].min..0)
77
- create_vector align_to_grid(x), align_to_grid(y)
78
- end
79
-
80
- def align_to_grid(n)
81
- n.to_i / 8 * 8
82
- end
83
-
84
- end# Chips
@@ -1,25 +0,0 @@
1
- using Reight
2
-
3
-
4
- class Reight::MusicEditor < Reight::App
5
-
6
- def draw()
7
- background 200
8
-
9
- push do
10
- text_align LEFT, CENTER
11
-
12
- text_size 10
13
- fill 220; text "Music Editor", 150, 1, 200, height
14
- fill 150; text "Music Editor", 150, 0, 200, height
15
-
16
- text_size 8
17
- dots = '.' * (frame_count / 60 % 4).to_i
18
- fill 220; text "is under construction#{dots}", 150, 11, 200, height
19
- fill 150; text "is under construction#{dots}", 150, 10, 200, height
20
- end
21
-
22
- super
23
- end
24
-
25
- end# MusicEditor
@@ -1 +0,0 @@
1
- require 'reight/app/music/editor'
@@ -1,92 +0,0 @@
1
- using Reight
2
-
3
-
4
- class Reight::SpriteEditor::Chips
5
-
6
- include Reight::Hookable
7
-
8
- def initialize(app, image, size = 8, &block)
9
- hook :frame_changed
10
-
11
- @app, @image = app, image
12
- @offset = create_vector
13
-
14
- @app.history.disable do
15
- set_frame 0, 0, size, size
16
- end
17
-
18
- frame_changed(&block)
19
- end
20
-
21
- attr_reader :x, :y, :size
22
-
23
- def set_frame(x, y, w, h)
24
- raise 'Chips: width != height' if w != h
25
- @x = align_to_grid(x).clamp(0..@image.width)
26
- @y = align_to_grid(y).clamp(0..@image.height)
27
- @size = w
28
- frame_changed! @x, @y, @size, @size
29
- end
30
-
31
- def draw()
32
- sp = sprite
33
- clip sp.x, sp.y, sp.w, sp.h
34
- translate(*clamp_offset(@offset).to_a)
35
- image @image, 0, 0
36
-
37
- no_fill
38
- stroke 255, 255, 255
39
- stroke_weight 1
40
- rect @x, @y, @size, @size
41
- end
42
-
43
- def mouse_pressed(x, y)
44
- @prev_pos = create_vector x, y
45
- end
46
-
47
- def mouse_released(x, y)
48
- @offset = clamp_offset @offset
49
- end
50
-
51
- def mouse_dragged(x, y)
52
- pos = create_vector x, y
53
- @offset += pos - @prev_pos if @prev_pos
54
- @prev_pos = pos
55
- end
56
-
57
- def mouse_clicked(x, y)
58
- set_frame(
59
- -@offset.x + align_to_grid(x),
60
- -@offset.y + align_to_grid(y),
61
- size,
62
- size)
63
- end
64
-
65
- def sprite()
66
- @sprite ||= Sprite.new.tap do |sp|
67
- sp.draw {draw}
68
- sp.mouse_pressed {mouse_pressed sp.mouse_x, sp.mouse_y}
69
- sp.mouse_released {mouse_released sp.mouse_x, sp.mouse_y}
70
- sp.mouse_dragged {mouse_dragged sp.mouse_x, sp.mouse_y}
71
- sp.mouse_clicked {mouse_clicked sp.mouse_x, sp.mouse_y}
72
- end
73
- end
74
-
75
- private
76
-
77
- def clamp_offset(offset)
78
- sp = sprite
79
- x = offset.x.clamp([-(@image.width - sp.w), 0].min..0)
80
- y = offset.y.clamp([-(@image.height - sp.h), 0].min..0)
81
- create_vector align_to_grid(x), align_to_grid(y)
82
- end
83
-
84
- def align_to_grid(n)
85
- n.to_i / 8 * 8
86
- end
87
-
88
- def selected()
89
- @selected.call @x, @y, @size, @size
90
- end
91
-
92
- end# Chips