glimmer-dsl-opal 0.26.0 → 0.26.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +2 -2
- data/VERSION +1 -1
- data/lib/glimmer/swt/display_proxy.rb +18 -5
- data/lib/glimmer-dsl-opal/samples/elaborate/tetris/view/block.rb +0 -5
- data/lib/glimmer-dsl-opal/samples/elaborate/tetris/view/playfield.rb +1 -1
- data/lib/glimmer-dsl-opal/samples/elaborate/tetris/view/score_lane.rb +0 -4
- data/lib/glimmer-dsl-opal/samples/elaborate/tetris.rb +12 -28
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1bec8104295a4c2f4a5b3f6d1464c9e0b0f5175092e93b7dd9508a5c4feabd0
|
4
|
+
data.tar.gz: 778f2026c647b7454d0586cf2310297d143d122a4b8937ec6189abdba260667d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33e3f1b4bd51b3cfdc34d9f24403bb47d0a889c235e169232a3e8b8dae6db26617110dd55f8ed4a40d752c2e5f60569ea70c2b95db7a4435f1a2fddac25e3d7f
|
7
|
+
data.tar.gz: 8fafbadda7e92fcf19ac96b994e3dcb67ed25febcdd521a97e94f57a66f272312cbc6763a341c30b1f1cf46e27ff62928eaed02cf8f1aa91c72590794e6ec7ee
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.26.1
|
4
|
+
|
5
|
+
- Support display on_swt_keydown event keyCode/key_code values for arrow keys and alt/shift/ctrl
|
6
|
+
- Use arrow keys for movement in Tetris
|
7
|
+
- Use alt/shift keys for rotate right in Tetris
|
8
|
+
|
3
9
|
## 0.26.0
|
4
10
|
|
5
11
|
- Tetris elaborate sample (minimal initial version of the one in Glimmer DSL for SWT)
|
data/README.md
CHANGED
@@ -145,7 +145,7 @@ Hello, Table! Game Booked
|
|
145
145
|
|
146
146
|
NOTE: Glimmer DSL for Opal is an alpha project. Please help make better by contributing, adopting for small or low risk projects, and providing feedback. It is still an early alpha, so the more feedback and issues you report the better.
|
147
147
|
|
148
|
-
**Alpha Version** 0.
|
148
|
+
**Alpha Version** 0.26.1 only supports bare-minimum capabilities for the included [samples](https://github.com/AndyObtiva/glimmer-dsl-opal#samples) (originally written for [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt))
|
149
149
|
|
150
150
|
Other [Glimmer](https://github.com/AndyObtiva/glimmer) DSL gems:
|
151
151
|
- [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt): Glimmer DSL for SWT (JRuby Desktop Development GUI Framework)
|
@@ -269,7 +269,7 @@ gem 'opal', '1.0.5'
|
|
269
269
|
gem 'opal-rails', '1.1.2'
|
270
270
|
gem 'opal-async', '~> 1.4.0'
|
271
271
|
gem 'opal-jquery', '~> 0.4.4'
|
272
|
-
gem 'glimmer-dsl-opal', '~> 0.
|
272
|
+
gem 'glimmer-dsl-opal', '~> 0.26.1'
|
273
273
|
gem 'glimmer-dsl-xml', '~> 1.2.0', require: false
|
274
274
|
gem 'glimmer-dsl-css', '~> 1.2.0', require: false
|
275
275
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.26.
|
1
|
+
0.26.1
|
@@ -1,8 +1,19 @@
|
|
1
1
|
require 'glimmer/swt/widget_proxy'
|
2
|
+
require 'glimmer/swt/swt_proxy'
|
2
3
|
|
3
4
|
module Glimmer
|
4
5
|
module SWT
|
5
6
|
class DisplayProxy < WidgetProxy
|
7
|
+
JS_KEY_CODE_TO_SWT_KEY_CODE_MAP = {
|
8
|
+
16 => SWTProxy[:shift],
|
9
|
+
17 => SWTProxy[:ctrl],
|
10
|
+
18 => SWTProxy[:alt],
|
11
|
+
37 => SWTProxy[:arrow_left],
|
12
|
+
38 => SWTProxy[:arrow_up],
|
13
|
+
39 => SWTProxy[:arrow_right],
|
14
|
+
40 => SWTProxy[:arrow_down],
|
15
|
+
}
|
16
|
+
|
6
17
|
class << self
|
7
18
|
def instance
|
8
19
|
@instance ||= new
|
@@ -95,9 +106,10 @@ module Glimmer
|
|
95
106
|
event.singleton_class.define_method(:character) do
|
96
107
|
which || key_code
|
97
108
|
end
|
98
|
-
event.define_singleton_method(:keyCode) {
|
109
|
+
event.define_singleton_method(:keyCode) {
|
110
|
+
JS_KEY_CODE_TO_SWT_KEY_CODE_MAP[event.which] || event.which
|
111
|
+
}
|
99
112
|
event.define_singleton_method(:key_code, &event.method(:keyCode))
|
100
|
-
# TODO support alt/ctrl/shift/command & arrow keys in keyCode
|
101
113
|
event.define_singleton_method(:character) {event.which.chr}
|
102
114
|
event.define_singleton_method(:stateMask) do
|
103
115
|
state_mask = 0
|
@@ -134,9 +146,10 @@ module Glimmer
|
|
134
146
|
event.singleton_class.define_method(:character) do
|
135
147
|
which || key_code
|
136
148
|
end
|
137
|
-
event.define_singleton_method(:keyCode) {
|
149
|
+
event.define_singleton_method(:keyCode) {
|
150
|
+
JS_KEY_CODE_TO_SWT_KEY_CODE_MAP[event.which] || event.which
|
151
|
+
}
|
138
152
|
event.define_singleton_method(:key_code, &event.method(:keyCode))
|
139
|
-
# TODO support alt/ctrl/shift/command & arrow keys in keyCode
|
140
153
|
event.define_singleton_method(:character) {event.which.chr}
|
141
154
|
event.define_singleton_method(:stateMask) do
|
142
155
|
state_mask = 0
|
@@ -152,7 +165,7 @@ module Glimmer
|
|
152
165
|
doit = value
|
153
166
|
end
|
154
167
|
event.define_singleton_method(:doit) { doit }
|
155
|
-
event_listener.call(event) if event.
|
168
|
+
event_listener.call(event) if event.which != 13 && (event.which == 127 || event.which <= 40)
|
156
169
|
|
157
170
|
# TODO Fix doit false, it's not stopping input
|
158
171
|
unless doit
|
@@ -19,8 +19,6 @@
|
|
19
19
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
20
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
21
|
|
22
|
-
# require_relative 'bevel'
|
23
|
-
|
24
22
|
class Tetris
|
25
23
|
module View
|
26
24
|
class Block
|
@@ -31,9 +29,6 @@ class Tetris
|
|
31
29
|
body {
|
32
30
|
canvas { |canvas_proxy|
|
33
31
|
background <= [game_playfield[row][column], :color]
|
34
|
-
# bevel(size: block_size) {
|
35
|
-
# base_color <= [game_playfield[row][column], :color]
|
36
|
-
# }
|
37
32
|
}
|
38
33
|
}
|
39
34
|
end
|
@@ -25,8 +25,11 @@ require_relative 'tetris/view/playfield'
|
|
25
25
|
require_relative 'tetris/view/score_lane'
|
26
26
|
require_relative 'tetris/view/high_score_dialog'
|
27
27
|
require_relative 'tetris/view/tetris_menu_bar'
|
28
|
-
|
29
|
-
|
28
|
+
class Event
|
29
|
+
def location
|
30
|
+
`#@native.location`
|
31
|
+
end
|
32
|
+
end
|
30
33
|
class Tetris
|
31
34
|
include Glimmer::UI::CustomShell
|
32
35
|
|
@@ -49,7 +52,7 @@ class Tetris
|
|
49
52
|
display {
|
50
53
|
on_swt_keydown do |key_event|
|
51
54
|
case key_event.keyCode
|
52
|
-
when 'w'.bytes.first
|
55
|
+
when swt(:arrow_up), 'w'.bytes.first
|
53
56
|
case game.up_arrow_action
|
54
57
|
when :instant_down
|
55
58
|
game.down!(instant: true)
|
@@ -58,16 +61,18 @@ class Tetris
|
|
58
61
|
when :rotate_left
|
59
62
|
game.rotate!(:left)
|
60
63
|
end
|
61
|
-
when 's'.bytes.first
|
64
|
+
when swt(:arrow_down), 's'.bytes.first
|
62
65
|
game.down!
|
63
|
-
when 'a'.bytes.first
|
66
|
+
when swt(:arrow_left), 'a'.bytes.first
|
64
67
|
game.left!
|
65
|
-
when 'd'.bytes.first
|
68
|
+
when swt(:arrow_right), 'd'.bytes.first
|
66
69
|
game.right!
|
67
70
|
when 'q'.bytes.first
|
68
71
|
game.rotate!(:left)
|
69
72
|
when 'e'.bytes.first
|
70
73
|
game.rotate!(:right)
|
74
|
+
when swt(:shift), swt(:alt)
|
75
|
+
game.rotate!(:right)
|
71
76
|
end
|
72
77
|
end
|
73
78
|
}
|
@@ -102,8 +107,6 @@ class Tetris
|
|
102
107
|
}
|
103
108
|
|
104
109
|
text 'Glimmer Tetris'
|
105
|
-
# minimum_size 475, 500
|
106
|
-
# image tetris_icon
|
107
110
|
background rgb(236, 236, 236)
|
108
111
|
|
109
112
|
tetris_menu_bar(game: game)
|
@@ -119,30 +122,11 @@ class Tetris
|
|
119
122
|
}
|
120
123
|
}
|
121
124
|
}
|
122
|
-
|
123
|
-
# def tetris_icon
|
124
|
-
# icon_block_size = 64
|
125
|
-
# icon_bevel_size = icon_block_size.to_f / 25.to_f
|
126
|
-
# icon_bevel_pixel_size = 0.16*icon_block_size.to_f
|
127
|
-
# icon_size = 8
|
128
|
-
# icon_pixel_size = icon_block_size * icon_size
|
129
|
-
# image(icon_pixel_size, icon_pixel_size) {
|
130
|
-
# icon_size.times { |row|
|
131
|
-
# icon_size.times { |column|
|
132
|
-
# colored = row >= 1 && column.between?(1, 6)
|
133
|
-
# color = colored ? color(([:white] + Model::Tetromino::LETTER_COLORS.values).sample) : color(:white)
|
134
|
-
# x = column * icon_block_size
|
135
|
-
# y = row * icon_block_size
|
136
|
-
# bevel(x: x, y: y, base_color: color, size: icon_block_size)
|
137
|
-
# }
|
138
|
-
# }
|
139
|
-
# }
|
140
|
-
# end
|
141
125
|
|
142
126
|
def start_moving_tetrominos_down
|
143
127
|
Async::Task.new do
|
144
128
|
work = lambda do
|
145
|
-
@game.down!
|
129
|
+
@game.down!
|
146
130
|
Async::Task.new(delay: @game.delay * 1000.0, &work) unless @game.game_over? || body_root.disposed?
|
147
131
|
end
|
148
132
|
Async::Task.new(delay: @game.delay * 1000.0, &work)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer-dsl-opal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.26.
|
4
|
+
version: 0.26.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- AndyMaleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: glimmer
|