commit c7e50b39faa287bd3ac144d5da5fa187fe9e6f5d
parent b37b245a5f23ff75a392129bfa6247b0316c39c6
Author: Michael Camilleri <[email protected]>
Date: Thu, 7 May 2026 02:34:50 +0900
Improve final scoreboard display on iPadOS
Diffstat:
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/Crossmate/Views/PuzzleView.swift b/Crossmate/Views/PuzzleView.swift
@@ -131,9 +131,11 @@ struct PuzzleView: View {
VStack(spacing: 0) {
HStack(spacing: 0) {
VStack(spacing: 0) {
- PuzzleScoreboard(session: session, roster: roster)
+ if !isSolved {
+ PuzzleScoreboard(session: session, roster: roster)
- Divider()
+ Divider()
+ }
ClueList(session: session, presentation: .sidebar)
}
@@ -163,10 +165,12 @@ struct PuzzleView: View {
Divider()
HStack(alignment: .top, spacing: 0) {
- PuzzleScoreboard(session: session, roster: roster)
- .frame(minWidth: 240, idealWidth: 280, maxWidth: 320)
+ if !isSolved {
+ PuzzleScoreboard(session: session, roster: roster)
+ .frame(minWidth: 240, idealWidth: 280, maxWidth: 320)
- Divider()
+ Divider()
+ }
ClueList(session: session, presentation: .sidebar)
.frame(maxWidth: .infinity, maxHeight: .infinity)
@@ -268,6 +272,16 @@ struct PuzzleView: View {
Color(.systemGroupedBackground)
.ignoresSafeArea(edges: .bottom)
}
+ .overlay {
+ if controlsPanelHeight > 0 {
+ VStack(spacing: 0) {
+ Rectangle()
+ .fill(Color(.opaqueSeparator))
+ .frame(height: 0.5)
+ Spacer(minLength: 0)
+ }
+ }
+ }
.animation(.easeOut(duration: 0.25), value: isSolved)
}
}
@@ -761,7 +775,7 @@ private struct PuzzleLifecycleModifier: ViewModifier {
}
.onAppear {
if session.game.completionState == .solved {
- hasSolved = true
+ onCompletionStateChanged(.solved)
}
}
.onAppear {