Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
388c517ba9
commit
c2518abad0
@ -442,7 +442,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.6;
|
MARKETING_VERSION = 1.7;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.mbrucedogs.Baccarat;
|
PRODUCT_BUNDLE_IDENTIFIER = com.mbrucedogs.Baccarat;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -480,7 +480,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.6;
|
MARKETING_VERSION = 1.7;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.mbrucedogs.Baccarat;
|
PRODUCT_BUNDLE_IDENTIFIER = com.mbrucedogs.Baccarat;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
|||||||
@ -9,6 +9,9 @@ import SwiftUI
|
|||||||
import CasinoKit
|
import CasinoKit
|
||||||
|
|
||||||
/// Walkthrough steps for Baccarat onboarding.
|
/// 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 {
|
enum BaccaratWalkthroughTags: SherpaTags {
|
||||||
// MARK: - Top Bar Elements
|
// MARK: - Top Bar Elements
|
||||||
|
|
||||||
@ -30,14 +33,11 @@ enum BaccaratWalkthroughTags: SherpaTags {
|
|||||||
/// Shows the road map history display
|
/// Shows the road map history display
|
||||||
case history
|
case history
|
||||||
|
|
||||||
// MARK: - Gameplay Elements
|
// MARK: - Gameplay Elements (always visible during betting phase)
|
||||||
|
|
||||||
/// Introduce the betting zones (Player, Banker, Tie)
|
/// Introduce the betting zones (Player, Banker, Tie)
|
||||||
case bettingZone
|
case bettingZone
|
||||||
|
|
||||||
/// Explain the betting hints showing patterns and tips
|
|
||||||
case bettingHint
|
|
||||||
|
|
||||||
/// Explain the chip selector for choosing bet amounts
|
/// Explain the chip selector for choosing bet amounts
|
||||||
case chipSelector
|
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:
|
case .chipSelector:
|
||||||
return .custom(edge: .top) { onTap in
|
return .custom(edge: .top) { onTap in
|
||||||
WalkthroughCalloutView(
|
WalkthroughCalloutView(
|
||||||
|
|||||||
@ -4976,6 +4976,7 @@
|
|||||||
},
|
},
|
||||||
"walkthrough.bettingHint" : {
|
"walkthrough.bettingHint" : {
|
||||||
"comment" : "Walkthrough hint for the betting hint display",
|
"comment" : "Walkthrough hint for the betting hint display",
|
||||||
|
"extractionState" : "stale",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
|
|||||||
@ -331,7 +331,6 @@ struct GameTableView: View, SherpaDelegate {
|
|||||||
secondaryInfo: hintInfo.secondaryText,
|
secondaryInfo: hintInfo.secondaryText,
|
||||||
style: hintInfo.style
|
style: hintInfo.style
|
||||||
)
|
)
|
||||||
.sherpaTag(BaccaratWalkthroughTags.bettingHint)
|
|
||||||
.transition(.opacity)
|
.transition(.opacity)
|
||||||
.padding(.vertical, Design.Spacing.small)
|
.padding(.vertical, Design.Spacing.small)
|
||||||
.debugBorder(showDebugBorders, color: .purple, label: "Hint")
|
.debugBorder(showDebugBorders, color: .purple, label: "Hint")
|
||||||
@ -448,7 +447,6 @@ struct GameTableView: View, SherpaDelegate {
|
|||||||
secondaryInfo: hintInfo.secondaryText,
|
secondaryInfo: hintInfo.secondaryText,
|
||||||
style: hintInfo.style
|
style: hintInfo.style
|
||||||
)
|
)
|
||||||
.sherpaTag(BaccaratWalkthroughTags.bettingHint)
|
|
||||||
.transition(.opacity)
|
.transition(.opacity)
|
||||||
.padding(.vertical, Design.Spacing.small)
|
.padding(.vertical, Design.Spacing.small)
|
||||||
.debugBorder(showDebugBorders, color: .purple, label: "Hint")
|
.debugBorder(showDebugBorders, color: .purple, label: "Hint")
|
||||||
|
|||||||
@ -421,7 +421,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.6;
|
MARKETING_VERSION = 1.7;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.mbrucedogs.Blackjack;
|
PRODUCT_BUNDLE_IDENTIFIER = com.mbrucedogs.Blackjack;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||||
@ -454,7 +454,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.6;
|
MARKETING_VERSION = 1.7;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.mbrucedogs.Blackjack;
|
PRODUCT_BUNDLE_IDENTIFIER = com.mbrucedogs.Blackjack;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||||
|
|||||||
@ -32,18 +32,12 @@ enum BlackjackWalkthroughTags: SherpaTags {
|
|||||||
/// Introduce the betting zone where chips are placed
|
/// Introduce the betting zone where chips are placed
|
||||||
case bettingZone
|
case bettingZone
|
||||||
|
|
||||||
/// Explain the betting hints based on card count
|
|
||||||
case bettingHint
|
|
||||||
|
|
||||||
/// Explain the chip selector for choosing bet amounts
|
/// Explain the chip selector for choosing bet amounts
|
||||||
case chipSelector
|
case chipSelector
|
||||||
|
|
||||||
/// Show the deal button to start the round
|
/// Show the deal button to start the round
|
||||||
case dealButton
|
case dealButton
|
||||||
|
|
||||||
/// Explain player actions during the hand
|
|
||||||
case playerActions
|
|
||||||
|
|
||||||
func makeCallout() -> Callout {
|
func makeCallout() -> Callout {
|
||||||
switch self {
|
switch self {
|
||||||
// Top Bar
|
// 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:
|
case .chipSelector:
|
||||||
return .custom(edge: .top) { onTap in
|
return .custom(edge: .top) { onTap in
|
||||||
WalkthroughCalloutView(
|
WalkthroughCalloutView(
|
||||||
@ -128,15 +113,6 @@ enum BlackjackWalkthroughTags: SherpaTags {
|
|||||||
onTap: onTap
|
onTap: onTap
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
case .playerActions:
|
|
||||||
return .custom(edge: .top) { onTap in
|
|
||||||
WalkthroughCalloutView(
|
|
||||||
icon: "hand.point.up.left.fill",
|
|
||||||
text: String(localized: "walkthrough.playerActions"),
|
|
||||||
onTap: onTap
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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" : {
|
"Game Sessions" : {
|
||||||
"comment" : "Title for the Game Sessions help page",
|
"comment" : "Title for the Game Sessions help page",
|
||||||
"localizations" : {
|
"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" : {
|
"GAME STYLE" : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
@ -7789,6 +7789,7 @@
|
|||||||
},
|
},
|
||||||
"walkthrough.bettingHint" : {
|
"walkthrough.bettingHint" : {
|
||||||
"comment" : "Walkthrough hint for the betting hint display",
|
"comment" : "Walkthrough hint for the betting hint display",
|
||||||
|
"extractionState" : "stale",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
"stringUnit" : {
|
"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" : {
|
"walkthrough.chipSelector" : {
|
||||||
"comment" : "Walkthrough hint for the chip selector",
|
"comment" : "Walkthrough hint for the chip selector",
|
||||||
"localizations" : {
|
"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" : {
|
"walkthrough.dealButton" : {
|
||||||
"comment" : "Walkthrough hint for the deal button",
|
"comment" : "Walkthrough hint for the deal button",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -7927,6 +7928,7 @@
|
|||||||
},
|
},
|
||||||
"walkthrough.playerActions" : {
|
"walkthrough.playerActions" : {
|
||||||
"comment" : "Walkthrough hint for player action buttons",
|
"comment" : "Walkthrough hint for player action buttons",
|
||||||
|
"extractionState" : "stale",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
|
|||||||
@ -84,7 +84,6 @@ struct ActionButtonsView: View {
|
|||||||
.transition(.scale.combined(with: .opacity))
|
.transition(.scale.combined(with: .opacity))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.sherpaTag(BlackjackWalkthroughTags.playerActions)
|
|
||||||
.onAppear {
|
.onAppear {
|
||||||
animatedActions = availableActions
|
animatedActions = availableActions
|
||||||
}
|
}
|
||||||
|
|||||||
@ -220,7 +220,6 @@ struct BlackjackTableView: View {
|
|||||||
// Betting hint based on count (only when card counting enabled)
|
// Betting hint based on count (only when card counting enabled)
|
||||||
if let hint = state.bettingHint {
|
if let hint = state.bettingHint {
|
||||||
BlackjackBettingHintView(hint: hint, trueCount: state.engine.trueCount)
|
BlackjackBettingHintView(hint: hint, trueCount: state.engine.trueCount)
|
||||||
.sherpaTag(BlackjackWalkthroughTags.bettingHint)
|
|
||||||
.transition(.opacity)
|
.transition(.opacity)
|
||||||
.padding(.vertical, 10)
|
.padding(.vertical, 10)
|
||||||
.debugBorder(showDebugBorders, color: .purple, label: "BetHint")
|
.debugBorder(showDebugBorders, color: .purple, label: "BetHint")
|
||||||
|
|||||||
2
Sherpa
2
Sherpa
@ -1 +1 @@
|
|||||||
Subproject commit 683a5b5c1805643d41b4ddd43edd110361668d93
|
Subproject commit 62b1652aa7af19fdf210cd3a08a445358224e872
|
||||||
Loading…
Reference in New Issue
Block a user