rubysketch-solitaire 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +3 -0
  3. data/.gitignore +2 -0
  4. data/.hooks/pre-commit +69 -0
  5. data/ChangeLog.md +21 -0
  6. data/Gemfile.lock +10 -10
  7. data/Podfile.lock +33 -33
  8. data/Rakefile +107 -10
  9. data/RubySolitaire/Ad.swift +88 -0
  10. data/RubySolitaire/Assets.xcassets/AppIcon.appiconset/AppIcon.png +0 -0
  11. data/RubySolitaire/Assets.xcassets/AppIcon.appiconset/Contents.json +3 -87
  12. data/RubySolitaire/Base.lproj/Localizable.strings +6 -0
  13. data/RubySolitaire/Extensions.swift +5 -0
  14. data/RubySolitaire/GameView.swift +75 -13
  15. data/RubySolitaire/Helper.swift +70 -0
  16. data/RubySolitaire/MenuScreen.swift +140 -0
  17. data/RubySolitaire/RubySolitaireApp.swift +188 -1
  18. data/RubySolitaire/SafariView.swift +16 -0
  19. data/RubySolitaire/Strings.swift +48 -0
  20. data/RubySolitaire/ja.lproj/InfoPlist.strings +4 -0
  21. data/RubySolitaire/ja.lproj/Localizable.strings +6 -0
  22. data/VERSION +1 -1
  23. data/data/card.png +0 -0
  24. data/data/classicPSPWave.glsl +94 -0
  25. data/data/colorfulUnderwaterBubbles2.glsl +113 -0
  26. data/data/cosmic2.glsl +121 -0
  27. data/data/reflectiveHexes.glsl +219 -0
  28. data/fastlane/Fastfile +76 -0
  29. data/fastlane/metadata/copyright.txt +1 -0
  30. data/fastlane/metadata/en-US/apple_tv_privacy_policy.txt +1 -0
  31. data/fastlane/metadata/en-US/description.txt +5 -0
  32. data/fastlane/metadata/en-US/keywords.txt +1 -0
  33. data/fastlane/metadata/en-US/marketing_url.txt +1 -0
  34. data/fastlane/metadata/en-US/name.txt +1 -0
  35. data/fastlane/metadata/en-US/privacy_url.txt +1 -0
  36. data/fastlane/metadata/en-US/promotional_text.txt +1 -0
  37. data/fastlane/metadata/en-US/release_notes.txt +1 -0
  38. data/fastlane/metadata/en-US/subtitle.txt +1 -0
  39. data/fastlane/metadata/en-US/support_url.txt +1 -0
  40. data/fastlane/metadata/ja/apple_tv_privacy_policy.txt +1 -0
  41. data/fastlane/metadata/ja/description.txt +5 -0
  42. data/fastlane/metadata/ja/keywords.txt +1 -0
  43. data/fastlane/metadata/ja/marketing_url.txt +1 -0
  44. data/fastlane/metadata/ja/name.txt +1 -0
  45. data/fastlane/metadata/ja/privacy_url.txt +1 -0
  46. data/fastlane/metadata/ja/promotional_text.txt +1 -0
  47. data/fastlane/metadata/ja/release_notes.txt +1 -0
  48. data/fastlane/metadata/ja/subtitle.txt +1 -0
  49. data/fastlane/metadata/ja/support_url.txt +1 -0
  50. data/fastlane/metadata/primary_category.txt +1 -0
  51. data/fastlane/metadata/primary_first_sub_category.txt +1 -0
  52. data/fastlane/metadata/primary_second_sub_category.txt +1 -0
  53. data/fastlane/metadata/review_information/demo_password.txt +1 -0
  54. data/fastlane/metadata/review_information/demo_user.txt +1 -0
  55. data/fastlane/metadata/review_information/email_address.txt +1 -0
  56. data/fastlane/metadata/review_information/first_name.txt +0 -0
  57. data/fastlane/metadata/review_information/last_name.txt +0 -0
  58. data/fastlane/metadata/review_information/notes.txt +1 -0
  59. data/fastlane/metadata/review_information/phone_number.txt +0 -0
  60. data/fastlane/metadata/secondary_category.txt +1 -0
  61. data/fastlane/metadata/secondary_first_sub_category.txt +1 -0
  62. data/fastlane/metadata/secondary_second_sub_category.txt +1 -0
  63. data/lib/rubysketch/solitaire/background.rb +115 -12
  64. data/lib/rubysketch/solitaire/card.rb +10 -87
  65. data/lib/rubysketch/solitaire/common/animation.rb +34 -34
  66. data/lib/rubysketch/solitaire/common/button.rb +49 -19
  67. data/lib/rubysketch/solitaire/common/dialog.rb +78 -21
  68. data/lib/rubysketch/solitaire/common/scene.rb +15 -4
  69. data/lib/rubysketch/solitaire/common/settings.rb +10 -2
  70. data/lib/rubysketch/solitaire/common/timer.rb +2 -2
  71. data/lib/rubysketch/solitaire/common/transitions.rb +12 -6
  72. data/lib/rubysketch/solitaire/common/utils.rb +15 -0
  73. data/lib/rubysketch/solitaire/klondike.rb +378 -81
  74. data/lib/rubysketch/solitaire/places.rb +12 -102
  75. data/lib/rubysketch/solitaire/skin.rb +151 -0
  76. data/lib/rubysketch/solitaire.rb +33 -9
  77. data/main.rb +1 -0
  78. data/project.yml +85 -4
  79. metadata +54 -2
@@ -8,8 +8,8 @@ class CardPlace
8
8
 
9
9
  extend Forwardable
10
10
 
11
- def initialize(name, linkCards: false)
12
- @name, @linkCards = name.intern, linkCards
11
+ def initialize(game, name, linkCards: false)
12
+ @game, @name, @linkCards = game, name.intern, linkCards
13
13
  @cards = []
14
14
  end
15
15
 
@@ -56,11 +56,19 @@ class CardPlace
56
56
  createVector *pos.to_a(2), self.z + index + 1
57
57
  end
58
58
 
59
+ def updateCards(seconds = 0.2, excludes: [])
60
+ cards.each.with_index do |card, index|
61
+ next if excludes.include? card
62
+ pos = posFor card, index
63
+ move card, pos, seconds if pos != card.pos
64
+ end
65
+ end
66
+
59
67
  def sprite()
60
- @sprite ||= Sprite.new(0, 0, *Card.spriteSize).tap do |sp|
68
+ @sprite ||= Sprite.new(0, 0, *skin.cardSpriteSize).tap do |sp|
61
69
  sp.draw do
62
70
  noStroke
63
- fill 0, 20
71
+ fill *skin.translucentBackgroundColor
64
72
  rect 0, 0, sp.w, sp.h, 4
65
73
  end
66
74
  end
@@ -77,101 +85,3 @@ class CardPlace
77
85
  end
78
86
 
79
87
  end# CardPlace
80
-
81
-
82
- class NextsPlace < CardPlace
83
-
84
- def initialize(*args, **kwargs, &block)
85
- super
86
- @drawCount = 1
87
- end
88
-
89
- attr_reader :drawCount
90
-
91
- def add(*cards, **kwargs)
92
- super
93
- updateCards excludes: cards
94
- end
95
-
96
- def pop(*args)
97
- super
98
- updateCards
99
- end
100
-
101
- def updateCards(excludes: [])
102
- cards.each.with_index do |card, index|
103
- next if excludes.include? card
104
- pos = posFor card, index
105
- move card, pos, 0.2 if pos != card.pos
106
- end
107
- end
108
-
109
- def drawCount=(count)
110
- raise 'invalid drawCount' unless count
111
-
112
- @drawCount = count
113
-
114
- w = Card.spriteSize[0] + overlap * (count - 1)
115
- self.x -= w - self.w
116
- self.w = w
117
- end
118
-
119
- def posFor(card, index = nil)
120
- index ||= indexFor card
121
- super.tap do |pos|
122
- rindex = cards.size - index
123
- pos.x += overlap * (drawCount - rindex).clamp(0, drawCount - 1)
124
- end
125
- end
126
-
127
- def overlap()
128
- Card.spriteSize[0] * 0.4
129
- end
130
-
131
- end# NextsPlace
132
-
133
-
134
- class MarkPlace < CardPlace
135
-
136
- def mark()
137
- last&.mark
138
- end
139
-
140
- def accept?(x, y, card)
141
- return false if !card || card.closed? || !card.canDrop?
142
- hit?(x, y) &&
143
- card.last? &&
144
- card.opened? &&
145
- (!mark || mark == card.mark) &&
146
- card.number == last&.number.then {|n| n ? n + 1 : 1}
147
- end
148
-
149
- end# MarkPlace
150
-
151
-
152
- class ColumnPlace < CardPlace
153
-
154
- def initialize(*args, **kwargs, &block)
155
- super(*args, linkCards: true, **kwargs, &block)
156
- end
157
-
158
- def accept?(x, y, card)
159
- return false if !card || card.closed? || !card.canDrop?
160
- if empty?
161
- hit?(x, y) &&
162
- card.number == 13
163
- else
164
- any? {|card| card.hit?(x, y)} &&
165
- card.number == last.number - 1 &&
166
- card.color != last.color
167
- end
168
- end
169
-
170
- def posFor(card, index = nil)
171
- index ||= indexFor card
172
- super.tap do |pos|
173
- pos.y += self.h * 0.3 * index
174
- end
175
- end
176
-
177
- end# ColumnPlace
@@ -0,0 +1,151 @@
1
+ using RubySketch
2
+
3
+
4
+ class Skin
5
+
6
+ def self.setup()
7
+ ncolumns = 7
8
+ size = [width, height].min
9
+ @margin = size * 0.02
10
+ @cardSpriteWidth = (size - @margin * (ncolumns + 1)) / ncolumns
11
+ end
12
+
13
+ def initialize(index = 0)
14
+ @index = index % self.class.offsets.size
15
+ end
16
+
17
+ attr_reader :index
18
+
19
+ def pauseIcon()
20
+ @pauseIcon ||= self.class.getAssetImage 0, 192, 64, 64
21
+ end
22
+
23
+ def menuIcon()
24
+ @menuIcon ||= self.class.getAssetImage 64, 192, 64, 64
25
+ end
26
+
27
+ def settingsIcon()
28
+ @settingsIcon ||= self.class.getAssetImage 128, 192, 64, 64
29
+ end
30
+
31
+ def closedImage()
32
+ @closedImage ||= self.class.closedImages[index]
33
+ end
34
+
35
+ def openedImage(mark, number)
36
+ (@openedImages ||= {})[[mark, number]] ||= createOpenedImage mark, number
37
+ end
38
+
39
+ def cardSpriteSize()
40
+ @cardSpriteSize ||= self.class.cardSpriteSize
41
+ end
42
+
43
+ def backgroundCheckerColors()
44
+ @backgroundColors ||= self.class.colors[index][0, 2]
45
+ end
46
+
47
+ def redColor()
48
+ @redColor ||= self.class.colors[index][2]
49
+ end
50
+
51
+ def blackColor()
52
+ @blackColor ||= self.class.colors[index][3]
53
+ end
54
+
55
+ def buttonColor()
56
+ @buttonColor ||= self.class.colors[index][4]
57
+ end
58
+
59
+ def translucentBackgroundColor()
60
+ [0, 0, 0, 64]
61
+ end
62
+
63
+ def margin()
64
+ self.class.margin
65
+ end
66
+
67
+ def markColor(mark)
68
+ Card::MARKS[0, 2].include?(mark) ? redColor : blackColor
69
+ end
70
+
71
+ private
72
+
73
+ def createOpenedImage(mark, number)
74
+ c = self.class
75
+ createGraphics(*c.cardImageSize).tap do |g|
76
+ w, h, m = g.width, g.height, 16# margin
77
+ image = c.assetImage
78
+ nx, ny, nw, nh = c.numberRect number
79
+ mx, my, mw, mh = c.markRect mark
80
+ mnh = m + nh
81
+ mxx, myy = (w - mw) / 2, mnh + ((h - mnh) - mh) / 2
82
+ g.beginDraw do
83
+ g.angleMode DEGREES
84
+ g.translate w / 2, h / 2
85
+ g.rotate 180
86
+ g.translate -w / 2, -h / 2
87
+ g.copy image, 896, 0, w, h, 0, 0, w, h
88
+ g.tint *markColor(mark)
89
+ g.copy image, nx, ny, nw, nh, m, m, nw, nh
90
+ g.copy image, mx, my, mw, mh, mxx, myy, mw, mh
91
+ end
92
+ end
93
+ end
94
+
95
+ def self.assetImage()
96
+ @assetImage ||= loadImage dataPath 'card.png'
97
+ end
98
+
99
+ def self.margin()
100
+ @margin
101
+ end
102
+
103
+ def self.markRect(mark)
104
+ w = h = 128
105
+ [Card::MARKS.index(mark) * w, 0, w, h]
106
+ end
107
+
108
+ def self.numberRect(number)
109
+ w = h = 64
110
+ [(number - 1) * w, 128, w, h]
111
+ end
112
+
113
+ def self.closedImages()
114
+ @closedImages ||= offsets.map do |x|
115
+ getAssetImage x, 256, *cardImageSize
116
+ end
117
+ end
118
+
119
+ def self.getAssetImage(x, y, w, h)
120
+ createGraphics(w, h).tap do |g|
121
+ g.beginDraw do
122
+ w, h = g.width, g.height
123
+ g.copy assetImage, x, y, w, h, 0, 0, w, h
124
+ end
125
+ end
126
+ end
127
+
128
+ def self.colors()
129
+ @colors ||= offsets.map do |x|
130
+ 5.times
131
+ .map {|n| [x + n * 48 + 10, 512 + 10]}
132
+ .map {|xx, yy| assetImage.get xx, yy}
133
+ .map {|c| [red(c), green(c), blue(c), alpha(c)]}
134
+ end
135
+ end
136
+
137
+ def self.offsets()
138
+ (0..3).map {|n| n * 256}
139
+ end
140
+
141
+ def self.cardImageSize()
142
+ [164, 252]
143
+ end
144
+
145
+ def self.cardSpriteSize()
146
+ cardImageSize.then do |cw, ch|
147
+ [@cardSpriteWidth, @cardSpriteWidth * (ch.to_f / cw.to_f)]
148
+ end
149
+ end
150
+
151
+ end# Skin
@@ -1,4 +1,6 @@
1
1
  require 'forwardable'
2
+ require 'rbconfig'
3
+ require 'uri'
2
4
  require 'json'
3
5
  require 'rubysketch'
4
6
 
@@ -16,6 +18,7 @@ require 'rubysketch/solitaire/common/dialog'
16
18
  require 'rubysketch/solitaire/common/transitions'
17
19
  require 'rubysketch/solitaire/common/button'
18
20
 
21
+ require 'rubysketch/solitaire/skin'
19
22
  require 'rubysketch/solitaire/card'
20
23
  require 'rubysketch/solitaire/places'
21
24
 
@@ -27,36 +30,57 @@ require 'rubysketch/solitaire/klondike'
27
30
  using RubySketch
28
31
 
29
32
 
33
+ def debug?()
34
+ $debug || ENV['DEBUG'] || false
35
+ end
36
+
37
+ def sendCommand(type, *args)
38
+ $command = [type, *args].map {|s| URI.encode_www_form_component s}.join ':'
39
+ end
40
+
30
41
  def settings()
31
42
  $settings ||= Settings.new 'solitaire.json'
32
43
  end
33
44
 
34
- def centerPos()
35
- [
36
- (displayWidth - windowWidth) / 2,
37
- (displayHeight - windowHeight) / 2
38
- ]
45
+ def skin(index = nil)
46
+ $skin = nil if index != nil && index != $skin.index
47
+ $skin ||= Skin.new index || settings['skinIndex'] || 0
48
+ end
49
+
50
+ def backgroundScene()
51
+ $backgroundScene ||= Background.new
52
+ end
53
+
54
+ def checkFocus()
55
+ $prevFocused = focused if $prevFocused == nil
56
+ $root.focusChanged focused if focused != $prevFocused
57
+ $prevFocused = focused
39
58
  end
40
59
 
41
60
  setup do
42
61
  setTitle "Solitaire"
43
- size 375, 667
62
+ size 375, 667 unless $nosize
44
63
  windowMove *windowPos
45
64
  windowResizable false
46
65
  angleMode DEGREES
47
66
  noStroke
48
67
 
49
- $root = RootScene.new 'Root', Background.new, Start.new
68
+ Skin.setup
69
+ $root = RootScene.new 'Root', backgroundScene, Start.new
50
70
  end
51
71
 
52
72
  draw do
73
+ checkFocus
53
74
  fireTimers
54
75
  drawShake
55
- push { $root.draw }
76
+ push {$root.draw}
56
77
  end
57
78
 
58
79
  def windowPos()
59
- settings['windowPos'] || centerPos
80
+ settings['windowPos'] || [
81
+ (displayWidth - windowWidth) / 2,
82
+ (displayHeight - windowHeight) / 2
83
+ ]
60
84
  end
61
85
 
62
86
  windowMoved do
data/main.rb CHANGED
@@ -1 +1,2 @@
1
+ $nosize = true
1
2
  require 'rubysketch/solitaire'
data/project.yml CHANGED
@@ -4,7 +4,6 @@ options:
4
4
  bundleIdPrefix: org.xord
5
5
  deploymentTarget:
6
6
  iOS: 14.0
7
- developmentLanguage: ja
8
7
 
9
8
  settingGroups:
10
9
  all:
@@ -17,13 +16,21 @@ settingGroups:
17
16
 
18
17
  settings:
19
18
  base:
20
- MARKETING_VERSION: 1.0.0
21
- CURRENT_PROJECT_VERSION: 1.0.0
22
- DEVELOPMENT_TEAM: XXXXXXXXX
19
+ MARKETING_VERSION: 0.1.2
20
+ CURRENT_PROJECT_VERSION: 0.1.2
21
+ DEVELOPMENT_TEAM: $(TEAM_ID)
23
22
  configs:
24
23
  debug:
25
24
  DEBUG_INFORMATION_FORMAT: dwarf-with-dsym
26
25
 
26
+ packages:
27
+ Firebase:
28
+ url: https://github.com/firebase/firebase-ios-sdk
29
+ majorVersion: 9.0.0
30
+ GoogleMobileAds:
31
+ url: https://github.com/googleads/swift-package-manager-google-mobile-ads.git
32
+ majorVersion: 9.0.0
33
+
27
34
  targets:
28
35
  RubySolitaire:
29
36
  type: application
@@ -31,6 +38,16 @@ targets:
31
38
  dependencies:
32
39
  - framework: CoreMedia.framework
33
40
  embed: false
41
+ - framework: JavaScriptCore.framework
42
+ embed: false
43
+ - package: Firebase
44
+ product: FirebaseAnalyticsSwift
45
+ - package: Firebase
46
+ product: FirebaseCrashlytics
47
+ - package: Firebase
48
+ product: FirebaseRemoteConfigSwift
49
+ - package: GoogleMobileAds
50
+ product: GoogleMobileAds
34
51
  sources:
35
52
  - RubySolitaire
36
53
  - main.rb
@@ -39,12 +56,18 @@ targets:
39
56
  - path: data
40
57
  type: folder
41
58
  settings:
59
+ base:
60
+ TARGETED_DEVICE_FAMILY: 1
61
+ SUPPORTS_MACCATALYST: NO
62
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD: NO
63
+ SUPPORTED_PLATFORMS: "iphoneos iphonesimulator"
42
64
  groups: [all, app]
43
65
  info:
44
66
  path: RubySolitaire/Info.plist
45
67
  properties:
46
68
  CFBundleVersion: $(CURRENT_PROJECT_VERSION)
47
69
  CFBundleShortVersionString: $(MARKETING_VERSION)
70
+ CFBundleDisplayName: Solitaire
48
71
  LSRequiresIPhoneOS: YES
49
72
  UILaunchScreen: ""
50
73
  UIApplicationSupportsIndirectInputEvents: YES
@@ -59,6 +82,64 @@ targets:
59
82
  #- UIInterfaceOrientationPortraitUpsideDown
60
83
  #- UIInterfaceOrientationLandscapeLeft
61
84
  #- UIInterfaceOrientationLandscapeRight
85
+ NSCameraUsageDescription:
86
+ Ruby scripts will be able to retrieve images from the camera.
87
+ NSUserTrackingUsageDescription:
88
+ This identifier will be used to deliver personalized ads to you.
89
+ GADApplicationIdentifier: ca-app-pub-3940256099942544~1458002511
90
+ GADGameScreenBottomBanner: ca-app-pub-3940256099942544/2934735716
91
+ GADGameScreenInterstitial: ca-app-pub-3940256099942544/4411468910
92
+ SKAdNetworkItems:
93
+ - SKAdNetworkIdentifier: cstr6suwn9.skadnetwork
94
+ - SKAdNetworkIdentifier: 4fzdc2evr5.skadnetwork
95
+ - SKAdNetworkIdentifier: 4pfyvq9l8r.skadnetwork
96
+ - SKAdNetworkIdentifier: 2fnua5tdw4.skadnetwork
97
+ - SKAdNetworkIdentifier: ydx93a7ass.skadnetwork
98
+ - SKAdNetworkIdentifier: 5a6flpkh64.skadnetwork
99
+ - SKAdNetworkIdentifier: p78axxw29g.skadnetwork
100
+ - SKAdNetworkIdentifier: v72qych5uu.skadnetwork
101
+ - SKAdNetworkIdentifier: ludvb6z3bs.skadnetwork
102
+ - SKAdNetworkIdentifier: cp8zw746q7.skadnetwork
103
+ - SKAdNetworkIdentifier: c6k4g5qg8m.skadnetwork
104
+ - SKAdNetworkIdentifier: s39g8k73mm.skadnetwork
105
+ - SKAdNetworkIdentifier: 3qy4746246.skadnetwork
106
+ - SKAdNetworkIdentifier: 3sh42y64q3.skadnetwork
107
+ - SKAdNetworkIdentifier: f38h382jlk.skadnetwork
108
+ - SKAdNetworkIdentifier: hs6bdukanm.skadnetwork
109
+ - SKAdNetworkIdentifier: prcb7njmu6.skadnetwork
110
+ - SKAdNetworkIdentifier: v4nxqhlyqp.skadnetwork
111
+ - SKAdNetworkIdentifier: wzmmz9fp6w.skadnetwork
112
+ - SKAdNetworkIdentifier: yclnxrl5pm.skadnetwork
113
+ - SKAdNetworkIdentifier: t38b2kh725.skadnetwork
114
+ - SKAdNetworkIdentifier: 7ug5zh24hu.skadnetwork
115
+ - SKAdNetworkIdentifier: 9rd848q2bz.skadnetwork
116
+ - SKAdNetworkIdentifier: y5ghdn5j9k.skadnetwork
117
+ - SKAdNetworkIdentifier: n6fk4nfna4.skadnetwork
118
+ - SKAdNetworkIdentifier: v9wttpbfk9.skadnetwork
119
+ - SKAdNetworkIdentifier: n38lu8286q.skadnetwork
120
+ - SKAdNetworkIdentifier: 47vhws6wlr.skadnetwork
121
+ - SKAdNetworkIdentifier: kbd757ywx3.skadnetwork
122
+ - SKAdNetworkIdentifier: 9t245vhmpl.skadnetwork
123
+ - SKAdNetworkIdentifier: a2p9lx4jpn.skadnetwork
124
+ - SKAdNetworkIdentifier: 22mmun2rn5.skadnetwork
125
+ - SKAdNetworkIdentifier: 4468km3ulz.skadnetwork
126
+ - SKAdNetworkIdentifier: 2u9pt9hc89.skadnetwork
127
+ - SKAdNetworkIdentifier: 8s468mfl3y.skadnetwork
128
+ - SKAdNetworkIdentifier: av6w8kgt66.skadnetwork
129
+ - SKAdNetworkIdentifier: klf5c3l5u5.skadnetwork
130
+ - SKAdNetworkIdentifier: ppxm28t8ap.skadnetwork
131
+ - SKAdNetworkIdentifier: 424m5254lk.skadnetwork
132
+ - SKAdNetworkIdentifier: ecpz2srf59.skadnetwork
133
+ - SKAdNetworkIdentifier: uw77j35x4d.skadnetwork
134
+ - SKAdNetworkIdentifier: mlmmfzh3r3.skadnetwork
135
+ - SKAdNetworkIdentifier: 578prtvx9j.skadnetwork
136
+ - SKAdNetworkIdentifier: 4dzt52r2t5.skadnetwork
137
+ - SKAdNetworkIdentifier: gta9lk7p23.skadnetwork
138
+ - SKAdNetworkIdentifier: e5fvkxwrpn.skadnetwork
139
+ - SKAdNetworkIdentifier: 8c4e2ghe7u.skadnetwork
140
+ - SKAdNetworkIdentifier: zq492l623r.skadnetwork
141
+ - SKAdNetworkIdentifier: 3rd42ekr43.skadnetwork
142
+ - SKAdNetworkIdentifier: 3qcr597p9d.skadnetwork
62
143
 
63
144
  RubySolitaireTests:
64
145
  type: bundle.unit-test
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubysketch-solitaire
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-29 00:00:00.000000000 Z
11
+ date: 2023-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xot
@@ -63,6 +63,8 @@ files:
63
63
  - ".github/workflows/test.yml"
64
64
  - ".github/workflows/utils.rb"
65
65
  - ".gitignore"
66
+ - ".hooks/pre-commit"
67
+ - ChangeLog.md
66
68
  - Gemfile
67
69
  - Gemfile.lock
68
70
  - LICENSE
@@ -70,24 +72,73 @@ files:
70
72
  - Podfile.lock
71
73
  - README.md
72
74
  - Rakefile
75
+ - RubySolitaire/Ad.swift
73
76
  - RubySolitaire/Assets.xcassets/AccentColor.colorset/Contents.json
77
+ - RubySolitaire/Assets.xcassets/AppIcon.appiconset/AppIcon.png
74
78
  - RubySolitaire/Assets.xcassets/AppIcon.appiconset/Contents.json
75
79
  - RubySolitaire/Assets.xcassets/Contents.json
80
+ - RubySolitaire/Base.lproj/Localizable.strings
76
81
  - RubySolitaire/BridgingHeader.h
82
+ - RubySolitaire/Extensions.swift
77
83
  - RubySolitaire/GameView.swift
84
+ - RubySolitaire/Helper.swift
85
+ - RubySolitaire/MenuScreen.swift
78
86
  - RubySolitaire/Preview Content/Preview Assets.xcassets/Contents.json
79
87
  - RubySolitaire/RubySolitaireApp.swift
88
+ - RubySolitaire/SafariView.swift
89
+ - RubySolitaire/Strings.swift
90
+ - RubySolitaire/ja.lproj/InfoPlist.strings
91
+ - RubySolitaire/ja.lproj/Localizable.strings
80
92
  - RubySolitaireTests/RubySolitaireTests.swift
81
93
  - RubySolitaireUITests/RubySolitaireUITests.swift
82
94
  - RubySolitaireUITests/RubySolitaireUITestsLaunchTests.swift
83
95
  - VERSION
84
96
  - data/button.mp3
85
97
  - data/card.png
98
+ - data/classicPSPWave.glsl
99
+ - data/colorfulUnderwaterBubbles2.glsl
100
+ - data/cosmic2.glsl
86
101
  - data/deal1.mp3
87
102
  - data/deal2.mp3
88
103
  - data/deal3.mp3
89
104
  - data/flip.mp3
90
105
  - data/noop.mp3
106
+ - data/reflectiveHexes.glsl
107
+ - fastlane/Fastfile
108
+ - fastlane/metadata/copyright.txt
109
+ - fastlane/metadata/en-US/apple_tv_privacy_policy.txt
110
+ - fastlane/metadata/en-US/description.txt
111
+ - fastlane/metadata/en-US/keywords.txt
112
+ - fastlane/metadata/en-US/marketing_url.txt
113
+ - fastlane/metadata/en-US/name.txt
114
+ - fastlane/metadata/en-US/privacy_url.txt
115
+ - fastlane/metadata/en-US/promotional_text.txt
116
+ - fastlane/metadata/en-US/release_notes.txt
117
+ - fastlane/metadata/en-US/subtitle.txt
118
+ - fastlane/metadata/en-US/support_url.txt
119
+ - fastlane/metadata/ja/apple_tv_privacy_policy.txt
120
+ - fastlane/metadata/ja/description.txt
121
+ - fastlane/metadata/ja/keywords.txt
122
+ - fastlane/metadata/ja/marketing_url.txt
123
+ - fastlane/metadata/ja/name.txt
124
+ - fastlane/metadata/ja/privacy_url.txt
125
+ - fastlane/metadata/ja/promotional_text.txt
126
+ - fastlane/metadata/ja/release_notes.txt
127
+ - fastlane/metadata/ja/subtitle.txt
128
+ - fastlane/metadata/ja/support_url.txt
129
+ - fastlane/metadata/primary_category.txt
130
+ - fastlane/metadata/primary_first_sub_category.txt
131
+ - fastlane/metadata/primary_second_sub_category.txt
132
+ - fastlane/metadata/review_information/demo_password.txt
133
+ - fastlane/metadata/review_information/demo_user.txt
134
+ - fastlane/metadata/review_information/email_address.txt
135
+ - fastlane/metadata/review_information/first_name.txt
136
+ - fastlane/metadata/review_information/last_name.txt
137
+ - fastlane/metadata/review_information/notes.txt
138
+ - fastlane/metadata/review_information/phone_number.txt
139
+ - fastlane/metadata/secondary_category.txt
140
+ - fastlane/metadata/secondary_first_sub_category.txt
141
+ - fastlane/metadata/secondary_second_sub_category.txt
91
142
  - lib/rubysketch/solitaire.rb
92
143
  - lib/rubysketch/solitaire/background.rb
93
144
  - lib/rubysketch/solitaire/card.rb
@@ -107,6 +158,7 @@ files:
107
158
  - lib/rubysketch/solitaire/extension.rb
108
159
  - lib/rubysketch/solitaire/klondike.rb
109
160
  - lib/rubysketch/solitaire/places.rb
161
+ - lib/rubysketch/solitaire/skin.rb
110
162
  - lib/rubysketch/solitaire/start.rb
111
163
  - main.rb
112
164
  - project.yml