rubysketch-solitaire 0.1.0 → 0.9.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.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +3 -0
  3. data/.gitignore +2 -0
  4. data/.hooks/post-commit +37 -0
  5. data/.hooks/pre-commit +69 -0
  6. data/ChangeLog.md +27 -0
  7. data/Gemfile.lock +10 -10
  8. data/Podfile.lock +33 -33
  9. data/README.md +8 -0
  10. data/Rakefile +107 -10
  11. data/RubySolitaire/Ad.swift +88 -0
  12. data/RubySolitaire/Assets.xcassets/AppIcon.appiconset/AppIcon.png +0 -0
  13. data/RubySolitaire/Assets.xcassets/AppIcon.appiconset/Contents.json +3 -87
  14. data/RubySolitaire/Base.lproj/Localizable.strings +6 -0
  15. data/RubySolitaire/Extensions.swift +5 -0
  16. data/RubySolitaire/GameView.swift +75 -13
  17. data/RubySolitaire/Helper.swift +70 -0
  18. data/RubySolitaire/MenuScreen.swift +141 -0
  19. data/RubySolitaire/RubySolitaireApp.swift +188 -1
  20. data/RubySolitaire/SafariView.swift +16 -0
  21. data/RubySolitaire/Strings.swift +48 -0
  22. data/RubySolitaire/ja.lproj/InfoPlist.strings +4 -0
  23. data/RubySolitaire/ja.lproj/Localizable.strings +6 -0
  24. data/VERSION +1 -1
  25. data/data/card.png +0 -0
  26. data/data/classicPSPWave.glsl +94 -0
  27. data/data/colorfulUnderwaterBubbles2.glsl +113 -0
  28. data/data/cosmic2.glsl +121 -0
  29. data/data/reflectiveHexes.glsl +219 -0
  30. data/fastlane/Fastfile +76 -0
  31. data/fastlane/metadata/copyright.txt +1 -0
  32. data/fastlane/metadata/en-US/apple_tv_privacy_policy.txt +1 -0
  33. data/fastlane/metadata/en-US/description.txt +5 -0
  34. data/fastlane/metadata/en-US/keywords.txt +1 -0
  35. data/fastlane/metadata/en-US/marketing_url.txt +1 -0
  36. data/fastlane/metadata/en-US/name.txt +1 -0
  37. data/fastlane/metadata/en-US/privacy_url.txt +1 -0
  38. data/fastlane/metadata/en-US/promotional_text.txt +1 -0
  39. data/fastlane/metadata/en-US/release_notes.txt +1 -0
  40. data/fastlane/metadata/en-US/subtitle.txt +1 -0
  41. data/fastlane/metadata/en-US/support_url.txt +1 -0
  42. data/fastlane/metadata/ja/apple_tv_privacy_policy.txt +1 -0
  43. data/fastlane/metadata/ja/description.txt +5 -0
  44. data/fastlane/metadata/ja/keywords.txt +1 -0
  45. data/fastlane/metadata/ja/marketing_url.txt +1 -0
  46. data/fastlane/metadata/ja/name.txt +1 -0
  47. data/fastlane/metadata/ja/privacy_url.txt +1 -0
  48. data/fastlane/metadata/ja/promotional_text.txt +1 -0
  49. data/fastlane/metadata/ja/release_notes.txt +1 -0
  50. data/fastlane/metadata/ja/subtitle.txt +1 -0
  51. data/fastlane/metadata/ja/support_url.txt +1 -0
  52. data/fastlane/metadata/primary_category.txt +1 -0
  53. data/fastlane/metadata/primary_first_sub_category.txt +1 -0
  54. data/fastlane/metadata/primary_second_sub_category.txt +1 -0
  55. data/fastlane/metadata/review_information/demo_password.txt +1 -0
  56. data/fastlane/metadata/review_information/demo_user.txt +1 -0
  57. data/fastlane/metadata/review_information/email_address.txt +1 -0
  58. data/fastlane/metadata/review_information/first_name.txt +0 -0
  59. data/fastlane/metadata/review_information/last_name.txt +0 -0
  60. data/fastlane/metadata/review_information/notes.txt +1 -0
  61. data/fastlane/metadata/review_information/phone_number.txt +0 -0
  62. data/fastlane/metadata/secondary_category.txt +1 -0
  63. data/fastlane/metadata/secondary_first_sub_category.txt +1 -0
  64. data/fastlane/metadata/secondary_second_sub_category.txt +1 -0
  65. data/lib/rubysketch/solitaire/background.rb +115 -12
  66. data/lib/rubysketch/solitaire/card.rb +10 -87
  67. data/lib/rubysketch/solitaire/common/animation.rb +34 -34
  68. data/lib/rubysketch/solitaire/common/button.rb +49 -19
  69. data/lib/rubysketch/solitaire/common/dialog.rb +78 -21
  70. data/lib/rubysketch/solitaire/common/scene.rb +15 -4
  71. data/lib/rubysketch/solitaire/common/settings.rb +15 -3
  72. data/lib/rubysketch/solitaire/common/timer.rb +2 -2
  73. data/lib/rubysketch/solitaire/common/transitions.rb +12 -6
  74. data/lib/rubysketch/solitaire/common/utils.rb +15 -0
  75. data/lib/rubysketch/solitaire/klondike.rb +382 -81
  76. data/lib/rubysketch/solitaire/places.rb +12 -102
  77. data/lib/rubysketch/solitaire/skin.rb +151 -0
  78. data/lib/rubysketch/solitaire.rb +33 -9
  79. data/main.rb +1 -0
  80. data/project.yml +85 -4
  81. metadata +55 -2
@@ -14,6 +14,12 @@ class Scene
14
14
 
15
15
  attr_reader :name, :parent
16
16
 
17
+ def pause()
18
+ end
19
+
20
+ def resume()
21
+ end
22
+
17
23
  def add(scene)
18
24
  @scenes.push scene
19
25
  scene.parent = self
@@ -28,12 +34,13 @@ class Scene
28
34
  scene
29
35
  end
30
36
 
31
- def transition(to, effect = nil, *args, **kwargs)
37
+ def transition(to, effect = nil, *args, **kwargs, &block)
32
38
  if effect
33
- add effect.new(to, *args, **kwargs)
39
+ add effect.new(to, *args, **kwargs, &block)
34
40
  else
35
41
  parent.add to
36
42
  parent.remove self
43
+ block.call if block
37
44
  end
38
45
  to
39
46
  end
@@ -61,6 +68,10 @@ class Scene
61
68
  @particle ||= Particle.new
62
69
  end
63
70
 
71
+ def active?()
72
+ @active
73
+ end
74
+
64
75
  def update()
65
76
  size = [width, height]
66
77
  if size != @prevSize
@@ -95,8 +106,8 @@ class Scene
95
106
  @active = false
96
107
  end
97
108
 
98
- def active?()
99
- @active
109
+ def focusChanged(focus)
110
+ @scenes.each {|scene| scene.focusChanged focus}
100
111
  end
101
112
 
102
113
  def mousePressed(x, y, button)
@@ -5,15 +5,27 @@ class Settings
5
5
  @hash = load path
6
6
  end
7
7
 
8
- def []=(key, value)
9
- hash[key] = value
8
+ def clear()
9
+ hash.clear
10
10
  save @path
11
11
  end
12
12
 
13
+ def []=(key, value)
14
+ if value != hash[key]
15
+ hash[key] = value
16
+ save @path
17
+ end
18
+ value
19
+ end
20
+
13
21
  def [](key)
14
22
  hash[key]
15
23
  end
16
24
 
25
+ def to_json()
26
+ hash.to_json
27
+ end
28
+
17
29
  private
18
30
 
19
31
  def hash()
@@ -21,7 +33,7 @@ class Settings
21
33
  end
22
34
 
23
35
  def save(path)
24
- File.write path, hash.to_json
36
+ File.write path, to_json
25
37
  end
26
38
 
27
39
  def load(path)
@@ -29,7 +29,7 @@ def fireTimers()
29
29
  now_ = now
30
30
  blocks = []
31
31
  $timers.delete_if do |_, (time, block)|
32
- (now_ >= time).tap { blocks.push block if _1 }
32
+ (now_ >= time).tap {|t| blocks.push block if t}
33
33
  end
34
- blocks.each { _1.call }
34
+ blocks.each &:call
35
35
  end
@@ -7,10 +7,12 @@ class TransitionEffect < Scene
7
7
  nextScene, sec: 1,
8
8
  secOut: nil, secIn: nil,
9
9
  easeOut: :expoOut, easeIn: :expoIn,
10
+ showAd: false,
10
11
  &block)
11
12
 
12
13
  super()
13
- @nextScene, @easeOut, @easeIn = nextScene, easeOut, easeIn
14
+ @nextScene, @easeOut, @easeIn, @showAd, @block =
15
+ nextScene, easeOut, easeIn, showAd, block
14
16
  @secOut = secOut || sec / 2.0
15
17
  @secIn = secIn || sec / 2.0
16
18
  @phase = :out
@@ -26,11 +28,15 @@ class TransitionEffect < Scene
26
28
  start do
27
29
  case @phase
28
30
  when :out
29
- pa = parent
30
- pa.remove self
31
- @phase = :in
32
- @nextScene.add self
33
- pa.transition @nextScene
31
+ sendCommand :showInterstitialAd if @showAd
32
+ delay do
33
+ pa = parent
34
+ pa.remove self
35
+ @phase = :in
36
+ @nextScene.add self
37
+ pa.transition @nextScene
38
+ @block.call if @block
39
+ end
34
40
  when :in
35
41
  parent.remove self
36
42
  end
@@ -1,3 +1,10 @@
1
+ using RubySketch
2
+
3
+
4
+ def ios?()
5
+ RbConfig::CONFIG['CFLAGS'] =~ %r{/Platforms/iPhone(OS|Simulator).platform/}
6
+ end
7
+
1
8
  def now()
2
9
  Time.now.to_f
3
10
  end
@@ -10,6 +17,14 @@ def dataPath(path)
10
17
  File.expand_path "../../../../data/#{path}", __dir__
11
18
  end
12
19
 
20
+ def resizeImage(image, w, h)
21
+ createGraphics(w, h).tap do |g|
22
+ g.beginDraw do
23
+ g.copy image, 0, 0, image.width, image.height, 0, 0, w, h
24
+ end
25
+ end
26
+ end
27
+
13
28
 
14
29
  module Processing
15
30
  class Vector