view GeoQuiz/Helpers/GameToolbar.swift @ 3:4dbe0cd9dadc

first game prototype
author Dennis C. M. <dennis@denniscm.com>
date Thu, 22 Sep 2022 10:42:39 +0200
parents 413e2d21333e
children de54f05adb78
line wrap: on
line source

//
//  GameToolbar.swift
//  GeoQuiz
//
//  Created by Dennis Concepción Martín on 18/9/22.
//

import SwiftUI

struct GameToolbar<T: Game>: View {
    @Binding var gameName: GameName?
    @ObservedObject var game: T
    
    
    var body: some View {
        HStack(spacing: 0) {
            Group {
                Button {
                    gameName = nil
                } label: {
                    Image(systemName: "multiply")
                        .padding(10)
                        .background(
                            Circle()
                                .strokeBorder(lineWidth: 2)
                        )
                }
            }
            .foregroundColor(.white)
            .font(.headline)
            .frame(maxWidth: .infinity, alignment: .leading)
            
            Group {
                Text("\(game.userScore)")
                    .padding()
                    .background(
                        Circle()
                            .strokeBorder(lineWidth: 3)
                    )
            }
            .foregroundColor(.white)
            .font(.title2)
            .scaleEffect(game.scoreScaleAmount)
            .frame(maxWidth: .infinity, alignment: .center)
            
            Group {
                Button {
                    game.showingBuyLivesView = true
                } label: {
                    HStack {
                        Image(systemName: "heart.fill")
                        Text("\(game.userLives)")
                    }
                    .padding(10)
                    .background(
                        Capsule()
                            .strokeBorder(lineWidth: 2)
                    )
                    .scaleEffect(game.livesScaleAmount)
                }
            }
            .foregroundColor(.white)
            .font(.headline)
            .frame(maxWidth: .infinity, alignment: .trailing)
        }
    }
}

struct GameToolbar_Previews: PreviewProvider {
    static var previews: some View {
        ZStack {
            LinearGradient(gradient: .main, startPoint: .top, endPoint: .bottom)
                .ignoresSafeArea()
            
            GeometryReader { geo in
                VStack {
                    GameToolbar(
                        gameName: .constant(GameName.guessTheFlag),
                        game: GuessTheFlag()
                    )
                    
                    Spacer()
                }
                .padding()
            }
        }
    }
}