rubysketch-solitaire 0.1.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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