diff --git a/Baccarat/Baccarat.xcodeproj/project.pbxproj b/Baccarat/Baccarat.xcodeproj/project.pbxproj index 7b49402..fff3591 100644 --- a/Baccarat/Baccarat.xcodeproj/project.pbxproj +++ b/Baccarat/Baccarat.xcodeproj/project.pbxproj @@ -442,7 +442,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.6; + MARKETING_VERSION = 1.7; PRODUCT_BUNDLE_IDENTIFIER = com.mbrucedogs.Baccarat; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -480,7 +480,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.6; + MARKETING_VERSION = 1.7; PRODUCT_BUNDLE_IDENTIFIER = com.mbrucedogs.Baccarat; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/Baccarat/Baccarat/Models/WalkthroughTags.swift b/Baccarat/Baccarat/Models/WalkthroughTags.swift index 4579ed6..3dd49ce 100644 --- a/Baccarat/Baccarat/Models/WalkthroughTags.swift +++ b/Baccarat/Baccarat/Models/WalkthroughTags.swift @@ -9,6 +9,9 @@ import SwiftUI import CasinoKit /// Walkthrough steps for Baccarat onboarding. +/// Note: Only includes elements that are ALWAYS visible during the betting phase. +/// Conditional elements (bettingHint) are excluded to prevent +/// the walkthrough from getting stuck when those views aren't rendered. enum BaccaratWalkthroughTags: SherpaTags { // MARK: - Top Bar Elements @@ -30,14 +33,11 @@ enum BaccaratWalkthroughTags: SherpaTags { /// Shows the road map history display case history - // MARK: - Gameplay Elements + // MARK: - Gameplay Elements (always visible during betting phase) /// Introduce the betting zones (Player, Banker, Tie) case bettingZone - /// Explain the betting hints showing patterns and tips - case bettingHint - /// Explain the chip selector for choosing bet amounts case chipSelector @@ -111,15 +111,6 @@ enum BaccaratWalkthroughTags: SherpaTags { ) } - case .bettingHint: - return .custom(edge: .top) { onTap in - WalkthroughCalloutView( - icon: "lightbulb.fill", - text: String(localized: "walkthrough.bettingHint"), - onTap: onTap - ) - } - case .chipSelector: return .custom(edge: .top) { onTap in WalkthroughCalloutView( diff --git a/Baccarat/Baccarat/Resources/Localizable.xcstrings b/Baccarat/Baccarat/Resources/Localizable.xcstrings index 4a579b0..61745eb 100644 --- a/Baccarat/Baccarat/Resources/Localizable.xcstrings +++ b/Baccarat/Baccarat/Resources/Localizable.xcstrings @@ -4976,6 +4976,7 @@ }, "walkthrough.bettingHint" : { "comment" : "Walkthrough hint for the betting hint display", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { diff --git a/Baccarat/Baccarat/Views/Game/GameTableView.swift b/Baccarat/Baccarat/Views/Game/GameTableView.swift index 8e82dbc..40e94a6 100644 --- a/Baccarat/Baccarat/Views/Game/GameTableView.swift +++ b/Baccarat/Baccarat/Views/Game/GameTableView.swift @@ -331,7 +331,6 @@ struct GameTableView: View, SherpaDelegate { secondaryInfo: hintInfo.secondaryText, style: hintInfo.style ) - .sherpaTag(BaccaratWalkthroughTags.bettingHint) .transition(.opacity) .padding(.vertical, Design.Spacing.small) .debugBorder(showDebugBorders, color: .purple, label: "Hint") @@ -448,7 +447,6 @@ struct GameTableView: View, SherpaDelegate { secondaryInfo: hintInfo.secondaryText, style: hintInfo.style ) - .sherpaTag(BaccaratWalkthroughTags.bettingHint) .transition(.opacity) .padding(.vertical, Design.Spacing.small) .debugBorder(showDebugBorders, color: .purple, label: "Hint") diff --git a/Blackjack/Blackjack.xcodeproj/project.pbxproj b/Blackjack/Blackjack.xcodeproj/project.pbxproj index 897e664..82c650d 100644 --- a/Blackjack/Blackjack.xcodeproj/project.pbxproj +++ b/Blackjack/Blackjack.xcodeproj/project.pbxproj @@ -421,7 +421,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.6; + MARKETING_VERSION = 1.7; PRODUCT_BUNDLE_IDENTIFIER = com.mbrucedogs.Blackjack; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; @@ -454,7 +454,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.6; + MARKETING_VERSION = 1.7; PRODUCT_BUNDLE_IDENTIFIER = com.mbrucedogs.Blackjack; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; diff --git a/Blackjack/Blackjack/Models/WalkthroughTags.swift b/Blackjack/Blackjack/Models/WalkthroughTags.swift index f4a32fb..3bff01d 100644 --- a/Blackjack/Blackjack/Models/WalkthroughTags.swift +++ b/Blackjack/Blackjack/Models/WalkthroughTags.swift @@ -32,18 +32,12 @@ enum BlackjackWalkthroughTags: SherpaTags { /// Introduce the betting zone where chips are placed case bettingZone - /// Explain the betting hints based on card count - case bettingHint - /// Explain the chip selector for choosing bet amounts case chipSelector /// Show the deal button to start the round case dealButton - /// Explain player actions during the hand - case playerActions - func makeCallout() -> Callout { switch self { // Top Bar @@ -102,15 +96,6 @@ enum BlackjackWalkthroughTags: SherpaTags { ) } - case .bettingHint: - return .custom(edge: .top) { onTap in - WalkthroughCalloutView( - icon: "lightbulb.fill", - text: String(localized: "walkthrough.bettingHint"), - onTap: onTap - ) - } - case .chipSelector: return .custom(edge: .top) { onTap in WalkthroughCalloutView( @@ -128,15 +113,6 @@ enum BlackjackWalkthroughTags: SherpaTags { onTap: onTap ) } - - case .playerActions: - return .custom(edge: .top) { onTap in - WalkthroughCalloutView( - icon: "hand.point.up.left.fill", - text: String(localized: "walkthrough.playerActions"), - onTap: onTap - ) - } } } } diff --git a/Blackjack/Blackjack/Resources/Localizable.xcstrings b/Blackjack/Blackjack/Resources/Localizable.xcstrings index 97ea259..dff4220 100644 --- a/Blackjack/Blackjack/Resources/Localizable.xcstrings +++ b/Blackjack/Blackjack/Resources/Localizable.xcstrings @@ -3526,29 +3526,6 @@ } } }, - "GAME STATS" : { - "comment" : "Title for a section in the statistics sheet dedicated to blackjack-specific statistics.", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "GAME STATS" - } - }, - "es-MX" : { - "stringUnit" : { - "state" : "translated", - "value" : "ESTADÍSTICAS DEL JUEGO" - } - }, - "fr-CA" : { - "stringUnit" : { - "state" : "translated", - "value" : "STATISTIQUES DE JEU" - } - } - } - }, "Game Sessions" : { "comment" : "Title for the Game Sessions help page", "localizations" : { @@ -3572,6 +3549,29 @@ } } }, + "GAME STATS" : { + "comment" : "Title for a section in the statistics sheet dedicated to blackjack-specific statistics.", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "GAME STATS" + } + }, + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "ESTADÍSTICAS DEL JUEGO" + } + }, + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "STATISTIQUES DE JEU" + } + } + } + }, "GAME STYLE" : { "localizations" : { "en" : { @@ -7789,6 +7789,7 @@ }, "walkthrough.bettingHint" : { "comment" : "Walkthrough hint for the betting hint display", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -7856,29 +7857,6 @@ } } }, - "walkthrough.close" : { - "comment" : "Walkthrough button to close/advance to next step", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Close" - } - }, - "es-MX" : { - "stringUnit" : { - "state" : "translated", - "value" : "Cerrar" - } - }, - "fr-CA" : { - "stringUnit" : { - "state" : "translated", - "value" : "Fermer" - } - } - } - }, "walkthrough.chipSelector" : { "comment" : "Walkthrough hint for the chip selector", "localizations" : { @@ -7902,6 +7880,29 @@ } } }, + "walkthrough.close" : { + "comment" : "Walkthrough button to close/advance to next step", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Close" + } + }, + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cerrar" + } + }, + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fermer" + } + } + } + }, "walkthrough.dealButton" : { "comment" : "Walkthrough hint for the deal button", "localizations" : { @@ -7927,6 +7928,7 @@ }, "walkthrough.playerActions" : { "comment" : "Walkthrough hint for player action buttons", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { diff --git a/Blackjack/Blackjack/Views/Game/ActionButtonsView.swift b/Blackjack/Blackjack/Views/Game/ActionButtonsView.swift index 20503da..4451bfd 100644 --- a/Blackjack/Blackjack/Views/Game/ActionButtonsView.swift +++ b/Blackjack/Blackjack/Views/Game/ActionButtonsView.swift @@ -84,7 +84,6 @@ struct ActionButtonsView: View { .transition(.scale.combined(with: .opacity)) } } - .sherpaTag(BlackjackWalkthroughTags.playerActions) .onAppear { animatedActions = availableActions } diff --git a/Blackjack/Blackjack/Views/Table/BlackjackTableView.swift b/Blackjack/Blackjack/Views/Table/BlackjackTableView.swift index 9f7eb53..6736717 100644 --- a/Blackjack/Blackjack/Views/Table/BlackjackTableView.swift +++ b/Blackjack/Blackjack/Views/Table/BlackjackTableView.swift @@ -220,7 +220,6 @@ struct BlackjackTableView: View { // Betting hint based on count (only when card counting enabled) if let hint = state.bettingHint { BlackjackBettingHintView(hint: hint, trueCount: state.engine.trueCount) - .sherpaTag(BlackjackWalkthroughTags.bettingHint) .transition(.opacity) .padding(.vertical, 10) .debugBorder(showDebugBorders, color: .purple, label: "BetHint") diff --git a/Sherpa b/Sherpa index 683a5b5..62b1652 160000 --- a/Sherpa +++ b/Sherpa @@ -1 +1 @@ -Subproject commit 683a5b5c1805643d41b4ddd43edd110361668d93 +Subproject commit 62b1652aa7af19fdf210cd3a08a445358224e872