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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0deb6c6d04586f92d01c22a4228072fcfa145359121f33d92265c580fc1abd91
4
- data.tar.gz: fc11c74ce51115dc92548debd2bf3a1d590ba638915de71f33455ee62a82c5fb
3
+ metadata.gz: e1bec8104295a4c2f4a5b3f6d1464c9e0b0f5175092e93b7dd9508a5c4feabd0
4
+ data.tar.gz: 778f2026c647b7454d0586cf2310297d143d122a4b8937ec6189abdba260667d
5
5
  SHA512:
6
- metadata.gz: e7849b84f8ee8c749c69636abbe7490a3ac2585957fa7c526b1a2a322eb40d7d1bfdba66e344c8f1f3b76095fb1a2ed5210ae62c08db093828be823f10fd9e33
7
- data.tar.gz: 12125b86cdd30f321311e3909b8f50e4383eb2fea2938b4983d02a5860f0d3a056d50dce9d94abe7a68f557d1c374d998e3fcfb25de90edc1d3b936cc033f1b6
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.25.4 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))
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.25.4'
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.0
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) {event.which}
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) {event.which}
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.key_code != 13 && (event.key_code == 127 || event.key_code <= 31)
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
@@ -29,7 +29,7 @@ class Tetris
29
29
  options :game_playfield, :playfield_width, :playfield_height, :block_size
30
30
 
31
31
  body {
32
- composite((:double_buffered unless OS.mac?)) {
32
+ composite {
33
33
  grid_layout {
34
34
  num_columns playfield_width
35
35
  make_columns_equal_width true
@@ -39,10 +39,6 @@ class Tetris
39
39
  row_layout {
40
40
  type :vertical
41
41
  center true
42
- # fill true
43
- # margin_width 0
44
- # margin_right block_size
45
- # margin_height block_size
46
42
  }
47
43
  label(:center) {
48
44
  text 'Next'
@@ -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
- # Tetris App View Custom Shell (represents `tetris` keyword)
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! # unless @game.paused?
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.0
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-23 00:00:00.000000000 Z
11
+ date: 2021-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glimmer