From 5665c7503025551a90f1f90f1d02edd67a70407f Mon Sep 17 00:00:00 2001 From: oliverhnat Date: Mon, 10 Apr 2023 15:25:56 +0200 Subject: [PATCH] Added ModelView and a new Game button on View --- Set/SetApp.swift | 2 +- Set/SetGameModelView.swift | 30 ++++++++++++++++++++++++++++++ Set/SetGameView.swift | 10 +++++----- 3 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 Set/SetGameModelView.swift diff --git a/Set/SetApp.swift b/Set/SetApp.swift index 307c93b..02ebd6b 100644 --- a/Set/SetApp.swift +++ b/Set/SetApp.swift @@ -11,7 +11,7 @@ import SwiftUI struct SetApp: App { var body: some Scene { WindowGroup { - SetGameView(game: SetGame()) + SetGameView(game: SetGameModelView()) } } } diff --git a/Set/SetGameModelView.swift b/Set/SetGameModelView.swift new file mode 100644 index 0000000..9c85264 --- /dev/null +++ b/Set/SetGameModelView.swift @@ -0,0 +1,30 @@ +// +// SetGameModelView.swift +// Set +// +// Created by Oliver Hnát on 10.04.2023. +// + +import Foundation + + +class SetGameModelView: ObservableObject { + + typealias Card = SetGame.Card + + @Published private var model: SetGame + + init() { + self.model = SetGame() + } + + var cardsOnTable: Array { + model.cardsOnTable + } + + func newGame() { + self.model = SetGame() + } + + +} diff --git a/Set/SetGameView.swift b/Set/SetGameView.swift index 8cc6bb3..a49685a 100644 --- a/Set/SetGameView.swift +++ b/Set/SetGameView.swift @@ -9,7 +9,7 @@ import SwiftUI struct SetGameView: View { - var game: SetGame + @ObservedObject var game: SetGameModelView var body: some View { VStack { AspectVGrid(items: game.cardsOnTable, aspectRatio: 2/3) { card in @@ -17,7 +17,7 @@ struct SetGameView: View { } Spacer() Spacer() -// Button(action: {game.newGame()}, label: {Text("New game")}) + Button(action: {game.newGame()}, label: {Text("New game").font(.largeTitle)}) } } @@ -25,13 +25,13 @@ struct SetGameView: View { struct CardView: View { - var card: SetGame.Card + var card: SetGameModelView.Card var numberOfSymbols: Int var color: Color var symbol: CardSymbol var shading: CardShading - init(card: SetGame.Card) { + init(card: SetGameModelView.Card) { self.card = card self.numberOfSymbols = card.numberOnCard self.color = card.color @@ -96,7 +96,7 @@ struct CardView: View { struct ContentView_Previews: PreviewProvider { static var previews: some View { - let game = SetGame() + let game = SetGameModelView() SetGameView(game: game) .preferredColorScheme(.dark) SetGameView(game: game)