XCode-Claude-Workflow/SoliCards/Views/Game/ScoreBarView.swift
idev2025 0f989f5c86 feat: SoliCards v1.2.0 — native SwiftUI solitaire for iOS, iPadOS, macOS
Complete native rewrite of the web-based SoliCards game as a SwiftUI
multiplatform app targeting iOS 17+, iPadOS 17+, and macOS 14+.

Three solitaire variants (Klondike, Spider, FreeCell) with full game
rules, drag & drop, smart zoom layout, 6 themes, 4 difficulty levels,
SwiftData persistence, VoiceOver accessibility, and 57 unit tests.

Key features:
- MVVM + Protocol-Oriented Strategy architecture
- DragGesture with coordinate-space hit-testing (long press + drag)
- Smart zoom: cards auto-size to fit screen based on deepest column
- Landscape: 30% bigger cards with scrollable overflow (iOS)
- macOS: 120pt card cap, 92% height buffer for window resizing
- Auto-save, game resume, statistics tracking via SwiftData
- Privacy manifest, app icon, String Catalog, zero dependencies

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 07:33:52 -04:00

31 lines
1,002 B
Swift

import SwiftUI
struct ScoreBarView: View {
let moves: Int
let score: Int
let time: String
let theme: GameTheme
var body: some View {
HStack {
Label("\(moves)", systemImage: "arrow.left.arrow.right")
.accessibilityElement(children: .ignore)
.accessibilityLabel(Text("\(moves) moves"))
Spacer()
Label("\(score)", systemImage: "star.fill")
.accessibilityElement(children: .ignore)
.accessibilityLabel(Text("Score \(score)"))
Spacer()
Label(time, systemImage: "clock")
.accessibilityElement(children: .ignore)
.accessibilityLabel(Text("Time \(time)"))
}
.font(.subheadline.monospacedDigit())
.foregroundStyle(theme.accentColor)
.padding(.horizontal)
.padding(.vertical, 8)
.accessibilityElement(children: .contain)
.accessibilityLabel(Text("Game status"))
}
}