annotate GeoQuiz/Components/GameButton.swift @ 21:b145c408f791

refactor code
author Dennis C. M. <dennis@denniscm.com>
date Tue, 25 Oct 2022 15:30:01 +0200
parents e281791e0494
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 //
20
e281791e0494 finish implementation
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
2 // GameButton.swift
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3 // GeoQuiz
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 //
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 5/9/22.
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 //
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 import SwiftUI
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10 struct GameButton: View {
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 11
diff changeset
11 let gameInfo: GameInfo
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 11
diff changeset
12 let isActive: Bool
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 11
diff changeset
13
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 11
diff changeset
14 init(gameType: GameType, isActive: Bool) {
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 11
diff changeset
15 self.gameInfo = GameInfoController.getInfo(for: gameType)
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 11
diff changeset
16 self.isActive = isActive
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 11
diff changeset
17 }
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
18
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
19 var body: some View {
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
20 RoundedRectangle(cornerRadius: 20)
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
21 .fill(
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
22 LinearGradient(
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 11
diff changeset
23 gradient: gameInfo.gradient,
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
24 startPoint: .trailing, endPoint: .leading
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
25 )
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
26 )
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
27 .frame(height: 180)
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
28 .frame(maxWidth: 700)
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
29 .overlay {
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
30 ZStack(alignment: .trailing) {
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
31 VStack(alignment: .leading) {
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
32 HStack {
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 11
diff changeset
33 Image(systemName: isActive ? gameInfo.symbol : "lock.fill")
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
34 .font(.headline)
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
35 .padding(5)
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
36 .background(
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
37 RoundedRectangle(cornerRadius: 5)
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
38 .stroke(lineWidth: 1.5)
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
39 )
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
40
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
41 Spacer()
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
42 }
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
43 .padding(.bottom)
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
44
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
45 VStack(alignment: .leading, spacing: 5) {
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 11
diff changeset
46 Text(gameInfo.level)
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
47 .font(.callout)
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
48
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 11
diff changeset
49 Text(gameInfo.name)
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
50 .font(.title.bold())
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
51 }
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
52 }
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
53 .foregroundColor(.white)
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
54 .padding()
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
55 }
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
56 }
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
57 }
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
58 }
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
59
10
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 0
diff changeset
60 struct GameButton_Previews: PreviewProvider {
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
61 static var previews: some View {
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 11
diff changeset
62 GameButton(gameType: .guessTheFlag, isActive: false)
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
63 }
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
64 }