Mercurial > public > geoquiz
view GeoQuiz/Components/UserProgressHelper.swift @ 17:8dac58bb4569
fix build bug
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Thu, 20 Oct 2022 18:07:51 +0200 |
parents | |
children |
line wrap: on
line source
// // UserProgressHelper.swift // GeoQuiz // // Created by Dennis Concepción Martín on 20/10/22. // import SwiftUI struct ViewTest: View { var body: some View { GeometryReader { geo in ZStack { Capsule() .frame(height: 6) } } } } struct UserProgress: View { let name: String let gradient: Gradient let score: Int let maxScore: Int let pctScore: Double var body: some View { VStack { Spacer() HStack { Text(name) .font(.headline) Spacer() Text("\(score) of \(maxScore)") .font(.callout) .foregroundColor(.secondary) } GeometryReader { geo in ZStack(alignment: .leading) { Capsule() .foregroundColor(.customBackground) .frame(height: 6) Capsule() .fill( LinearGradient( gradient: gradient, startPoint: .trailing, endPoint: .leading ) ) .frame(width: geo.size.width * pctScore, height: 6) } .frame(height: geo.size.height) } } } init(playedGames: FetchedResults<PlayedGame>, gameType: GameType) { switch(gameType) { case . guessTheFlag: self.name = GuessTheFlagInfo.name self.gradient = GuessTheFlagInfo.gradient self.maxScore = GuessTheFlagInfo.numberOfQuestions case .guessTheCapital: self.name = GuessTheCapitalInfo.name self.gradient = GuessTheCapitalInfo.gradient self.maxScore = GuessTheCapitalInfo.numberOfQuestions case .guessTheCountry: self.name = GuessTheCountryInfo.name self.gradient = GuessTheCountryInfo.gradient self.maxScore = GuessTheCountryInfo.numberOfQuestions case .guessThePopulation: self.name = GuessThePopulationInfo.name self.gradient = GuessThePopulationInfo.gradient self.maxScore = GuessThePopulationInfo.numberOfQuestions } let games = playedGames.filter { $0.type == gameType } self.score = Int(games.max { $0.score < $1.score }?.score ?? 0) self.pctScore = Double(score) / Double(maxScore) } }