crossmate

A collaborative crossword app for iOS
Log | Files | Refs | LICENSE

commit 383f9235f07e0ede550d3b9edb1d064477c38d7b
parent c7e50b39faa287bd3ac144d5da5fa187fe9e6f5d
Author: Michael Camilleri <[email protected]>
Date:   Thu,  7 May 2026 02:38:42 +0900

Tweak count on in-progress scoreboard on iPadOS

Diffstat:
MCrossmate/Views/PuzzleView.swift | 50++++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 44 insertions(+), 6 deletions(-)

diff --git a/Crossmate/Views/PuzzleView.swift b/Crossmate/Views/PuzzleView.swift @@ -463,18 +463,56 @@ private struct PuzzleScoreboard: View { return count } + private var revealedSquareCount: Int { + var count = 0 + for r in 0..<session.puzzle.height { + for c in 0..<session.puzzle.width { + guard !session.puzzle.cells[r][c].isBlock else { continue } + if session.game.squares[r][c].mark.isRevealed { + count += 1 + } + } + } + return count + } + private var remainingCount: Int { max(0, fillableCellCount - filledCellCount) } - private var remainingText: String { + private var remainingPhrase: String { + switch remainingCount { + case 0: + return "no squares to go" + case 1: + return "1 square to go" + default: + return "\(remainingCount) squares to go" + } + } + + private var revealedPhrase: String { + switch revealedSquareCount { + case 0: + return "No squares revealed" + case 1: + return "1 square revealed" + default: + return "\(revealedSquareCount) squares revealed" + } + } + + private var progressText: String { + if revealedSquareCount > 0 { + return "\(revealedPhrase), \(remainingPhrase)" + } switch remainingCount { case 0: - return "No letters to go" + return "No squares to go" case 1: - return "1 letter to go" + return "1 square to go" default: - return "\(remainingCount) letters to go" + return "\(remainingCount) squares to go" } } @@ -484,7 +522,7 @@ private struct PuzzleScoreboard: View { for c in 0..<session.puzzle.width { guard !session.puzzle.cells[r][c].isBlock else { continue } let square = session.game.squares[r][c] - guard !square.entry.isEmpty else { continue } + guard !square.entry.isEmpty, !square.mark.isRevealed else { continue } counts[square.letterAuthorID, default: 0] += 1 } } @@ -548,7 +586,7 @@ private struct PuzzleScoreboard: View { scoreRow(score) } - Text(remainingText) + Text(progressText) .font(.footnote) .foregroundStyle(.secondary) .padding(.top, 10)