glimmer-dsl-libui 0.2.22 → 0.2.23

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: 9ed417f87bfb329535969efe60a61a444d59c7b0e2bdb68196ecf29642b9d628
4
- data.tar.gz: b0cb2a08fe3ef7d666408bc2dbfa9f6a7ada5151257b55aca2cd11abda09253d
3
+ metadata.gz: 3e33c97761bce7909c5a48df2689cb8bd0a4745ac68a24c814c4938c36eb08e0
4
+ data.tar.gz: 604b2d6439ed510f6e30bae8f431c09fcd348f14afa71fa4707a3de0d71cae33
5
5
  SHA512:
6
- metadata.gz: 12e49121d599a00cdf5c3e6638081c8c3d2c6aea263428a1966ce221949d8602fe27c5a03f7506809e5ce877465c5b4b03b909909b8e8c2bba39e698b25f25da
7
- data.tar.gz: c0e345c1c9e3d1348a6add04910ecd6a4b58934094d2b688253688e8aa860af00613a0c275aac6ace4a97e46f7341b66dc2eebeec511eaa6e36feb4bcfe8d19b
6
+ metadata.gz: 66603e770e6135e08ea785ef46ac9158c6f14b1c3966175c7116f9a81cc3dbbfcc2ee495f16d367976174b2f8f0d9013640731713db3c9be65dd5b973dba12b5
7
+ data.tar.gz: 94ca555082c61042dd24ba0a36b75b5b401b8c63ef0c0f5acff6b3fcb2f822dd37e61ab3cd3660b5e657896a8209afe09760cf8c7fc9a092d00a6666d43a1c96
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.2.23
4
+
5
+ - Improve examples/tetris.rb by having high score dialog pause the game if running and resume after closed
6
+ - Adjust Area Gallery example text size to 11 in Windows/Linux
7
+ - Fix `Glimmer::LibUI::timer {}` behavior so that the block return value will not affect repetition outcome if it is `Integer` (only Booleans affect it)
8
+ - Fix Tetris down button for Windows (it was going too fast before making tetrominos invisible before they hit the bottom)
9
+ - Fix Tetris double-downs (or multiple downs) happening after game over (it was firing an additional down timer after game over by mistake before)
10
+ - Fix Tetris by prechecking Turn Left on Up radio menu item since it is the one selected upon launch of the game
11
+ - Fix Tic-Tac-Toe text-size for Windows/Linux
12
+
3
13
  ## 0.2.22
4
14
 
5
15
  - examples/snake.rb implemented test-first
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for LibUI 0.2.22
1
+ # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for LibUI 0.2.23
2
2
  ## Prerequisite-Free Ruby Desktop Development GUI Library
3
3
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-libui.svg)](http://badge.fury.io/rb/glimmer-dsl-libui)
4
4
  [![Join the chat at https://gitter.im/AndyObtiva/glimmer](https://badges.gitter.im/AndyObtiva/glimmer.svg)](https://gitter.im/AndyObtiva/glimmer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
@@ -143,7 +143,7 @@ window('Area Gallery', 400, 400) {
143
143
  }
144
144
  text(161, 40, 100) { # x, y, width
145
145
  string('Area Gallery') {
146
- font family: 'Arial', size: 14
146
+ font family: 'Arial', size: (OS.mac? ? 14 : 11)
147
147
  color :black
148
148
  }
149
149
  }
@@ -219,7 +219,7 @@ Other [Glimmer](https://rubygems.org/gems/glimmer) DSL gems you might be interes
219
219
  - [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt): Glimmer DSL for SWT (JRuby Desktop Development GUI Framework)
220
220
  - [glimmer-dsl-opal](https://github.com/AndyObtiva/glimmer-dsl-opal): Glimmer DSL for Opal (Pure Ruby Web GUI and Auto-Webifier of Desktop Apps)
221
221
  - [glimmer-dsl-tk](https://github.com/AndyObtiva/glimmer-dsl-tk): Glimmer DSL for Tk (MRI Ruby Desktop Development GUI Library)
222
- - [glimmer-dsl-gtk](https://github.com/AndyObtiva/glimmer-dsl-gtk): Ruby-GNOME Desktop Development GUI Library
222
+ - [glimmer-dsl-gtk](https://github.com/AndyObtiva/glimmer-dsl-gtk): Glimmer DSL for GTK (Ruby-GNOME Desktop Development GUI Library)
223
223
  - [glimmer-dsl-xml](https://github.com/AndyObtiva/glimmer-dsl-xml): Glimmer DSL for XML (& HTML)
224
224
  - [glimmer-dsl-css](https://github.com/AndyObtiva/glimmer-dsl-css): Glimmer DSL for CSS
225
225
 
@@ -373,7 +373,7 @@ gem install glimmer-dsl-libui
373
373
  Or install via Bundler `Gemfile`:
374
374
 
375
375
  ```ruby
376
- gem 'glimmer-dsl-libui', '~> 0.2.22'
376
+ gem 'glimmer-dsl-libui', '~> 0.2.23'
377
377
  ```
378
378
 
379
379
  Add `require 'glimmer-dsl-libui'` at the top, and then `include Glimmer` into the top-level main object for testing or into an actual class for serious usage.
@@ -1760,11 +1760,11 @@ class TinyMidiPlayer
1760
1760
 
1761
1761
  UI.new_horizontal_box.tap do |hbox|
1762
1762
  UI.new_vertical_box.tap do |vbox|
1763
- UI.new_button('').tap do |button1|
1763
+ UI.new_button('â–¶').tap do |button1|
1764
1764
  UI.button_on_clicked(button1) { play_midi }
1765
1765
  UI.box_append(vbox, button1, 1)
1766
1766
  end
1767
- UI.new_button('').tap do |button2|
1767
+ UI.new_button('â– ').tap do |button2|
1768
1768
  UI.button_on_clicked(button2) { stop_midi }
1769
1769
  UI.box_append(vbox, button2, 1)
1770
1770
  end
@@ -1858,12 +1858,12 @@ class TinyMidiPlayer
1858
1858
  vertical_box {
1859
1859
  stretchy false
1860
1860
 
1861
- button('') {
1861
+ button('â–¶') {
1862
1862
  on_clicked do
1863
1863
  play_midi
1864
1864
  end
1865
1865
  }
1866
- button('') {
1866
+ button('â– ') {
1867
1867
  on_clicked do
1868
1868
  stop_midi
1869
1869
  end
@@ -4129,7 +4129,7 @@ window('Area Gallery', 400, 400) {
4129
4129
  }
4130
4130
  text(161, 40, 100) { # x, y, width
4131
4131
  string('Area Gallery') {
4132
- font family: 'Arial', size: 14
4132
+ font family: 'Arial', size: (OS.mac? ? 14 : 11)
4133
4133
  color :black
4134
4134
  }
4135
4135
  }
@@ -4339,7 +4339,7 @@ window('Area Gallery', 400, 400) {
4339
4339
  width 100
4340
4340
 
4341
4341
  string {
4342
- font family: 'Arial', size: 14
4342
+ font family: 'Arial', size: (OS.mac? ? 14 : 11)
4343
4343
  color :black
4344
4344
 
4345
4345
  'Area Gallery'
@@ -4452,7 +4452,7 @@ window('Area Gallery', 400, 400) {
4452
4452
  }
4453
4453
  text(161, 40, 100) { # x, y, width
4454
4454
  string('Area Gallery') {
4455
- font family: 'Arial', size: 14
4455
+ font family: 'Arial', size: (OS.mac? ? 14 : 11)
4456
4456
  color :black
4457
4457
  }
4458
4458
  }
@@ -4664,7 +4664,7 @@ window('Area Gallery', 400, 400) {
4664
4664
  width 100
4665
4665
 
4666
4666
  string {
4667
- font family: 'Arial', size: 14
4667
+ font family: 'Arial', size: (OS.mac? ? 14 : 11)
4668
4668
  color :black
4669
4669
 
4670
4670
  'Area Gallery'
@@ -6292,6 +6292,22 @@ Mac
6292
6292
 
6293
6293
  ![glimmer-dsl-libui-mac-tetris-high-scores.png](images/glimmer-dsl-libui-mac-tetris-high-scores.png)
6294
6294
 
6295
+ Windows
6296
+
6297
+ ![glimmer-dsl-libui-windows-tetris.png](images/glimmer-dsl-libui-windows-tetris.png)
6298
+
6299
+ ![glimmer-dsl-libui-windows-tetris-game-over.png](images/glimmer-dsl-libui-windows-tetris-game-over.png)
6300
+
6301
+ ![glimmer-dsl-libui-windows-tetris-high-scores.png](images/glimmer-dsl-libui-windows-tetris-high-scores.png)
6302
+
6303
+ Linux
6304
+
6305
+ ![glimmer-dsl-libui-linux-tetris.png](images/glimmer-dsl-libui-linux-tetris.png)
6306
+
6307
+ ![glimmer-dsl-libui-linux-tetris-game-over.png](images/glimmer-dsl-libui-linux-tetris-game-over.png)
6308
+
6309
+ ![glimmer-dsl-libui-linux-tetris-high-scores.png](images/glimmer-dsl-libui-linux-tetris-high-scores.png)
6310
+
6295
6311
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
6296
6312
 
6297
6313
  ```ruby
@@ -6532,7 +6548,19 @@ class Tetris
6532
6548
  on_key_down do |key_event|
6533
6549
  case key_event
6534
6550
  in ext_key: :down
6535
- @game.down!
6551
+ if OS.windows?
6552
+ # rate limit downs in Windows as they go too fast when key is held
6553
+ @queued_downs ||= 0
6554
+ if @queued_downs < 2
6555
+ @queued_downs += 1
6556
+ Glimmer::LibUI.timer(0.01, repeat: false) do
6557
+ @game.down! if @queued_downs < 2
6558
+ @queued_downs -= 1
6559
+ end
6560
+ end
6561
+ else
6562
+ @game.down!
6563
+ end
6536
6564
  in key: ' '
6537
6565
  @game.down!(instant: true)
6538
6566
  in ext_key: :up
@@ -6616,8 +6644,11 @@ class Tetris
6616
6644
  end
6617
6645
 
6618
6646
  def start_moving_tetrominos_down
6619
- Glimmer::LibUI.timer(@game.delay) do
6620
- @game.down! if !@game.game_over? && !@game.paused?
6647
+ unless @tetrominos_start_moving_down
6648
+ @tetrominos_start_moving_down = true
6649
+ Glimmer::LibUI.timer(@game.delay) do
6650
+ @game.down! if !@game.game_over? && !@game.paused?
6651
+ end
6621
6652
  end
6622
6653
  end
6623
6654
 
@@ -6630,6 +6661,8 @@ class Tetris
6630
6661
 
6631
6662
  def show_high_scores
6632
6663
  Glimmer::LibUI.queue_main do
6664
+ game_paused = !!@game.paused
6665
+ @game.paused = true
6633
6666
  if @game.high_scores.empty?
6634
6667
  high_scores_string = "No games have been scored yet."
6635
6668
  else
@@ -6638,6 +6671,7 @@ class Tetris
6638
6671
  end.join("\n")
6639
6672
  end
6640
6673
  msg_box('High Scores', high_scores_string)
6674
+ @game.paused = game_paused
6641
6675
  end
6642
6676
  end
6643
6677
 
@@ -6677,6 +6711,26 @@ Mac
6677
6711
 
6678
6712
  ![glimmer-dsl-libui-mac-tic-tac-toe-draw.png](images/glimmer-dsl-libui-mac-tic-tac-toe-draw.png)
6679
6713
 
6714
+ Windows
6715
+
6716
+ ![glimmer-dsl-libui-windows-tic-tac-toe.png](images/glimmer-dsl-libui-windows-tic-tac-toe.png)
6717
+
6718
+ ![glimmer-dsl-libui-windows-tic-tac-toe-player-o-wins.png](images/glimmer-dsl-libui-windows-tic-tac-toe-player-o-wins.png)
6719
+
6720
+ ![glimmer-dsl-libui-windows-tic-tac-toe-player-x-wins.png](images/glimmer-dsl-libui-windows-tic-tac-toe-player-x-wins.png)
6721
+
6722
+ ![glimmer-dsl-libui-windows-tic-tac-toe-draw.png](images/glimmer-dsl-libui-windows-tic-tac-toe-draw.png)
6723
+
6724
+ Linux
6725
+
6726
+ ![glimmer-dsl-libui-linux-tic-tac-toe.png](images/glimmer-dsl-libui-linux-tic-tac-toe.png)
6727
+
6728
+ ![glimmer-dsl-libui-linux-tic-tac-toe-player-o-wins.png](images/glimmer-dsl-libui-linux-tic-tac-toe-player-o-wins.png)
6729
+
6730
+ ![glimmer-dsl-libui-linux-tic-tac-toe-player-x-wins.png](images/glimmer-dsl-libui-linux-tic-tac-toe-player-x-wins.png)
6731
+
6732
+ ![glimmer-dsl-libui-linux-tic-tac-toe-draw.png](images/glimmer-dsl-libui-linux-tic-tac-toe-draw.png)
6733
+
6680
6734
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
6681
6735
 
6682
6736
  ```ruby
@@ -6791,6 +6845,18 @@ Mac
6791
6845
 
6792
6846
  ![glimmer-dsl-libui-mac-snake-game-over.png](images/glimmer-dsl-libui-mac-snake-game-over.png)
6793
6847
 
6848
+ Windows
6849
+
6850
+ ![glimmer-dsl-libui-windows-snake.png](images/glimmer-dsl-libui-windows-snake.png)
6851
+
6852
+ ![glimmer-dsl-libui-windows-snake-game-over.png](images/glimmer-dsl-libui-windows-snake-game-over.png)
6853
+
6854
+ Linux
6855
+
6856
+ ![glimmer-dsl-libui-linux-snake.png](images/glimmer-dsl-libui-linux-snake.png)
6857
+
6858
+ ![glimmer-dsl-libui-linux-snake-game-over.png](images/glimmer-dsl-libui-linux-snake-game-over.png)
6859
+
6794
6860
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
6795
6861
 
6796
6862
  ```ruby
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.22
1
+ 0.2.23
@@ -49,7 +49,7 @@ window('Area Gallery', 400, 400) {
49
49
  }
50
50
  text(161, 40, 100) { # x, y, width
51
51
  string('Area Gallery') {
52
- font family: 'Arial', size: 14
52
+ font family: 'Arial', size: (OS.mac? ? 14 : 11)
53
53
  color :black
54
54
  }
55
55
  }
@@ -149,7 +149,7 @@ window('Area Gallery', 400, 400) {
149
149
  width 100
150
150
 
151
151
  string {
152
- font family: 'Arial', size: 14
152
+ font family: 'Arial', size: (OS.mac? ? 14 : 11)
153
153
  color :black
154
154
 
155
155
  'Area Gallery'
@@ -50,7 +50,7 @@ window('Area Gallery', 400, 400) {
50
50
  }
51
51
  text(161, 40, 100) { # x, y, width
52
52
  string('Area Gallery') {
53
- font family: 'Arial', size: 14
53
+ font family: 'Arial', size: (OS.mac? ? 14 : 11)
54
54
  color :black
55
55
  }
56
56
  }
@@ -150,7 +150,7 @@ window('Area Gallery', 400, 400) {
150
150
  width 100
151
151
 
152
152
  string {
153
- font family: 'Arial', size: 14
153
+ font family: 'Arial', size: (OS.mac? ? 14 : 11)
154
154
  color :black
155
155
 
156
156
  'Area Gallery'
@@ -13,7 +13,6 @@ class Snake
13
13
  attr_reader :width, :height
14
14
  attr_accessor :snake, :apple, :over, :score, :high_score
15
15
  alias over? over
16
- # TODO implement scoring on snake eating apples
17
16
 
18
17
  def initialize(width = WIDTH_DEFAULT, height = HEIGHT_DEFAULT)
19
18
  @width = width
data/examples/tetris.rb CHANGED
@@ -153,6 +153,8 @@ class Tetris
153
153
  end
154
154
  }
155
155
  radio_menu_item('Rotate Left on Up Arrow') {
156
+ checked true
157
+
156
158
  on_clicked do
157
159
  @game.rotate_left_on_up = true
158
160
  end
@@ -235,7 +237,19 @@ class Tetris
235
237
  on_key_down do |key_event|
236
238
  case key_event
237
239
  in ext_key: :down
238
- @game.down!
240
+ if OS.windows?
241
+ # rate limit downs in Windows as they go too fast when key is held
242
+ @queued_downs ||= 0
243
+ if @queued_downs < 2
244
+ @queued_downs += 1
245
+ Glimmer::LibUI.timer(0.01, repeat: false) do
246
+ @game.down! if @queued_downs < 2
247
+ @queued_downs -= 1
248
+ end
249
+ end
250
+ else
251
+ @game.down!
252
+ end
239
253
  in key: ' '
240
254
  @game.down!(instant: true)
241
255
  in ext_key: :up
@@ -319,8 +333,11 @@ class Tetris
319
333
  end
320
334
 
321
335
  def start_moving_tetrominos_down
322
- Glimmer::LibUI.timer(@game.delay) do
323
- @game.down! if !@game.game_over? && !@game.paused?
336
+ unless @tetrominos_start_moving_down
337
+ @tetrominos_start_moving_down = true
338
+ Glimmer::LibUI.timer(@game.delay) do
339
+ @game.down! if !@game.game_over? && !@game.paused?
340
+ end
324
341
  end
325
342
  end
326
343
 
@@ -333,6 +350,8 @@ class Tetris
333
350
 
334
351
  def show_high_scores
335
352
  Glimmer::LibUI.queue_main do
353
+ game_paused = !!@game.paused
354
+ @game.paused = true
336
355
  if @game.high_scores.empty?
337
356
  high_scores_string = "No games have been scored yet."
338
357
  else
@@ -341,6 +360,7 @@ class Tetris
341
360
  end.join("\n")
342
361
  end
343
362
  msg_box('High Scores', high_scores_string)
363
+ @game.paused = game_paused
344
364
  end
345
365
  end
346
366
 
@@ -52,7 +52,7 @@ class TicTacToe
52
52
  }
53
53
  text(23, 19) {
54
54
  @cells[row] << string('') {
55
- font family: 'Arial', size: 20
55
+ font family: 'Arial', size: OS.mac? ? 20 : 16
56
56
  }
57
57
  }
58
58
  on_mouse_up do
Binary file
data/lib/glimmer/libui.rb CHANGED
@@ -26,12 +26,12 @@ module Glimmer
26
26
  class << self
27
27
  include Glimmer::FiddleConsumer
28
28
 
29
- def integer_to_boolean(int, allow_nil: true)
30
- int.nil? ? (allow_nil ? nil : false) : ((int.is_a?(TrueClass) || int.is_a?(FalseClass)) ? int : (int.is_a?(Integer) ? int == 1 : (allow_nil ? nil : false)))
29
+ def integer_to_boolean(int, allow_nil: true, allow_boolean: true)
30
+ int.nil? ? (allow_nil ? nil : false) : (allow_boolean && (int.is_a?(TrueClass) || int.is_a?(FalseClass)) ? int : (int.is_a?(Integer) ? int == 1 : (allow_nil ? nil : false)))
31
31
  end
32
32
 
33
- def boolean_to_integer(bool, allow_nil: true)
34
- bool.nil? ? (allow_nil ? nil : 0) : (bool.is_a?(Integer) ? bool : (bool.is_a?(TrueClass) || bool.is_a?(FalseClass) ? (bool == true ? 1 : 0) : (allow_nil ? nil : 0)))
33
+ def boolean_to_integer(bool, allow_nil: true, allow_integer: true)
34
+ bool.nil? ? (allow_nil ? nil : 0) : (allow_integer && bool.is_a?(Integer) ? bool : (bool.is_a?(TrueClass) || bool.is_a?(FalseClass) ? (bool == true ? 1 : 0) : (allow_nil ? nil : 0)))
35
35
  end
36
36
 
37
37
  def degrees_to_radians(degrees)
@@ -173,7 +173,7 @@ module Glimmer
173
173
  # If block returns true at any point, the timer continues for another repetition regardless of `repeat:` keyword arg value
174
174
  def timer(time_in_seconds = 0.1, repeat: true, &block)
175
175
  closure = fiddle_closure_block_caller(4, [0]) do
176
- result = boolean_to_integer(block.call)
176
+ result = boolean_to_integer(block.call, allow_integer: false)
177
177
  repeat -= 1 if repeat.is_a?(Integer)
178
178
  if result.nil?
179
179
  if (repeat == true || (repeat.is_a?(Integer) && repeat > 0))
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-libui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.22
4
+ version: 0.2.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-08 00:00:00.000000000 Z
11
+ date: 2021-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glimmer