SoliCards-iOS-iPadOS-MacOS/SoliCards/Persistence/GameRecord.swift
idev2025 de0da01f25 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.

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

32 lines
847 B
Swift

import Foundation
import SwiftData
@Model
final class GameRecord {
var variant: String
var difficulty: String
var snapshotData: Data
var elapsedSeconds: Int
var lastPlayedDate: Date
init(variant: GameVariant, difficulty: Difficulty, snapshot: GameSnapshot, elapsedSeconds: Int) {
self.variant = variant.rawValue
self.difficulty = difficulty.rawValue
self.snapshotData = (try? JSONEncoder().encode(snapshot)) ?? Data()
self.elapsedSeconds = elapsedSeconds
self.lastPlayedDate = Date()
}
var decodedSnapshot: GameSnapshot? {
try? JSONDecoder().decode(GameSnapshot.self, from: snapshotData)
}
var gameVariant: GameVariant? {
GameVariant(rawValue: variant)
}
var gameDifficulty: Difficulty? {
Difficulty(rawValue: difficulty)
}
}