From 6d72b59426fbdf13bec8824dca552e65dad1e700 Mon Sep 17 00:00:00 2001 From: oliverhnat Date: Sun, 16 Apr 2023 14:31:40 +0200 Subject: [PATCH] More cleaning, added min width of cards and scrollable if too many cards are on the screen --- Set/SetGame.swift | 1 - Set/SetGameModelView.swift | 7 ------- Set/SetGameView.swift | 31 ++++++++++++++++++++++++++----- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/Set/SetGame.swift b/Set/SetGame.swift index 6499c04..3c596a1 100644 --- a/Set/SetGame.swift +++ b/Set/SetGame.swift @@ -132,7 +132,6 @@ struct SetGame { static let numberOfDifferences = 4 static let cardsOnTableInTheBeggining = 12 static let numberOfCardsToDraw = 3 - } } diff --git a/Set/SetGameModelView.swift b/Set/SetGameModelView.swift index 2e50cce..cc3c6ec 100644 --- a/Set/SetGameModelView.swift +++ b/Set/SetGameModelView.swift @@ -19,13 +19,6 @@ class SetGameModelView: ObservableObject { } var cardsOnTable: Array { -// var cardsOnTable: Array = Array() -// for card in model.cards { -// if (card.isOnTheTable && !card.isMatched) { -// cardsOnTable.append(card) -// } -// } -// return cardsOnTable model.displayedCards } diff --git a/Set/SetGameView.swift b/Set/SetGameView.swift index a70dc51..c416e71 100644 --- a/Set/SetGameView.swift +++ b/Set/SetGameView.swift @@ -12,11 +12,7 @@ struct SetGameView: View { @ObservedObject var game: SetGameModelView var body: some View { VStack { - AspectVGrid(items: game.cardsOnTable, aspectRatio: 2/3) { card in - CardView(card: card).foregroundColor(.red).onTapGesture { - game.choose(card) - } - } + ScrollOrAspectVGrid() Spacer() Spacer() VStack { @@ -30,6 +26,31 @@ struct SetGameView: View { } } + @ViewBuilder + private func ScrollOrAspectVGrid() -> some View { + if (game.cardsOnTable.count <= 21) { + AspectVGrid(items: game.cardsOnTable, aspectRatio: 2/3) { card in + CardView(card: card).foregroundColor(.red).onTapGesture { + game.choose(card) + } + } + } + else { + ScrollView { + LazyVGrid(columns: [GridItem(.adaptive(minimum: 70), spacing: 0)], spacing: 0) { + ForEach(game.cardsOnTable) { card in + CardView(card: card) + .aspectRatio(2/3, contentMode: .fit) + .foregroundColor(.red) + .onTapGesture { + game.choose(card) + } + } + } + } + } + } + }