diff --git a/App/App.xcodeproj/project.pbxproj b/App/App.xcodeproj/project.pbxproj index 7feffd3..edf286e 100644 --- a/App/App.xcodeproj/project.pbxproj +++ b/App/App.xcodeproj/project.pbxproj @@ -25,10 +25,16 @@ F05DA2152E02D1850094A4A8 /* UIUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = F05DA2142E02D1850094A4A8 /* UIUtilities.swift */; }; F05DA2172E082F5B0094A4A8 /* Owner.swift in Sources */ = {isa = PBXBuildFile; fileRef = F05DA2162E082F5B0094A4A8 /* Owner.swift */; }; F05DA2192E0843170094A4A8 /* SavedGamesVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = F05DA2182E0843170094A4A8 /* SavedGamesVM.swift */; }; - F0F59E492DD4958800BE32D6 /* C4.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0F59E432DD492B400BE32D6 /* C4.xcframework */; }; - F0F59E4A2DD4958800BE32D6 /* C4Persistance.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0F59E412DD492B400BE32D6 /* C4Persistance.xcframework */; }; - F0F59E4B2DD4958800BE32D6 /* C4Players.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0F59E422DD492B400BE32D6 /* C4Players.xcframework */; }; - F0F59E4C2DD4958800BE32D6 /* C4Rules.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0F59E442DD492B400BE32D6 /* C4Rules.xcframework */; }; + F08534C42E094F4E0002A3A0 /* xcframeworks in Resources */ = {isa = PBXBuildFile; fileRef = F08534C32E094F4E0002A3A0 /* xcframeworks */; }; + F08534C92E094F7A0002A3A0 /* C4Core.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F08534C82E094F7A0002A3A0 /* C4Core.xcframework */; }; + F08534CA2E094F7A0002A3A0 /* C4Core.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F08534C82E094F7A0002A3A0 /* C4Core.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F08534CC2E094F7C0002A3A0 /* C4Persistance.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0F59E412DD492B400BE32D6 /* C4Persistance.xcframework */; }; + F08534CD2E094F7C0002A3A0 /* C4Persistance.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F0F59E412DD492B400BE32D6 /* C4Persistance.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F08534CE2E094F7F0002A3A0 /* C4Players.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0F59E422DD492B400BE32D6 /* C4Players.xcframework */; }; + F08534CF2E094F7F0002A3A0 /* C4Players.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F0F59E422DD492B400BE32D6 /* C4Players.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F08534D02E094F830002A3A0 /* C4Rules.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0F59E442DD492B400BE32D6 /* C4Rules.xcframework */; }; + F08534D12E094F830002A3A0 /* C4Rules.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F0F59E442DD492B400BE32D6 /* C4Rules.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F08534D32E0951BD0002A3A0 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F08534D22E0951BD0002A3A0 /* Images.xcassets */; }; F0F59E4F2DD4996F00BE32D6 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0F59E4E2DD4996F00BE32D6 /* Localizable.xcstrings */; }; F0F59E512DD49C2800BE32D6 /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F0F59E502DD49C2800BE32D6 /* Colors.xcassets */; }; F0F59E532DDDC35100BE32D6 /* NewGameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0F59E522DDDC35100BE32D6 /* NewGameView.swift */; }; @@ -55,6 +61,23 @@ }; /* End PBXContainerItemProxy section */ +/* Begin PBXCopyFilesBuildPhase section */ + F08534CB2E094F7A0002A3A0 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F08534D12E094F830002A3A0 /* C4Rules.xcframework in Embed Frameworks */, + F08534CD2E094F7C0002A3A0 /* C4Persistance.xcframework in Embed Frameworks */, + F08534CF2E094F7F0002A3A0 /* C4Players.xcframework in Embed Frameworks */, + F08534CA2E094F7A0002A3A0 /* C4Core.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ F001A0482DD48FAB00809561 /* App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; }; F001A04B2DD48FAB00809561 /* AppApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppApp.swift; sourceTree = ""; }; @@ -78,6 +101,9 @@ F05DA2142E02D1850094A4A8 /* UIUtilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIUtilities.swift; sourceTree = ""; }; F05DA2162E082F5B0094A4A8 /* Owner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Owner.swift; sourceTree = ""; }; F05DA2182E0843170094A4A8 /* SavedGamesVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SavedGamesVM.swift; sourceTree = ""; }; + F08534C32E094F4E0002A3A0 /* xcframeworks */ = {isa = PBXFileReference; lastKnownFileType = folder; name = xcframeworks; path = ../precompiled/xcframeworks; sourceTree = ""; }; + F08534C82E094F7A0002A3A0 /* C4Core.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = C4Core.xcframework; path = ../precompiled/xcframeworks/C4Core.xcframework; sourceTree = ""; }; + F08534D22E0951BD0002A3A0 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; F0F59E412DD492B400BE32D6 /* C4Persistance.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = C4Persistance.xcframework; path = ../precompiled/xcframeworks/C4Persistance.xcframework; sourceTree = ""; }; F0F59E422DD492B400BE32D6 /* C4Players.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = C4Players.xcframework; path = ../precompiled/xcframeworks/C4Players.xcframework; sourceTree = ""; }; F0F59E432DD492B400BE32D6 /* C4.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = C4.xcframework; path = ../precompiled/xcframeworks/C4.xcframework; sourceTree = ""; }; @@ -96,10 +122,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F0F59E492DD4958800BE32D6 /* C4.xcframework in Frameworks */, - F0F59E4A2DD4958800BE32D6 /* C4Persistance.xcframework in Frameworks */, - F0F59E4B2DD4958800BE32D6 /* C4Players.xcframework in Frameworks */, - F0F59E4C2DD4958800BE32D6 /* C4Rules.xcframework in Frameworks */, + F08534D02E094F830002A3A0 /* C4Rules.xcframework in Frameworks */, + F08534CC2E094F7C0002A3A0 /* C4Persistance.xcframework in Frameworks */, + F08534CE2E094F7F0002A3A0 /* C4Players.xcframework in Frameworks */, + F08534C92E094F7A0002A3A0 /* C4Core.xcframework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -123,6 +149,8 @@ F001A03F2DD48FAB00809561 = { isa = PBXGroup; children = ( + F08534D22E0951BD0002A3A0 /* Images.xcassets */, + F08534C32E094F4E0002A3A0 /* xcframeworks */, F0F59E502DD49C2800BE32D6 /* Colors.xcassets */, F0F59E4E2DD4996F00BE32D6 /* Localizable.xcstrings */, F001A04A2DD48FAB00809561 /* App */, @@ -186,6 +214,7 @@ F001A0762DD4926900809561 /* Frameworks */ = { isa = PBXGroup; children = ( + F08534C82E094F7A0002A3A0 /* C4Core.xcframework */, F0F59E432DD492B400BE32D6 /* C4.xcframework */, F0F59E412DD492B400BE32D6 /* C4Persistance.xcframework */, F0F59E422DD492B400BE32D6 /* C4Players.xcframework */, @@ -249,6 +278,7 @@ F001A0442DD48FAB00809561 /* Sources */, F001A0452DD48FAB00809561 /* Frameworks */, F001A0462DD48FAB00809561 /* Resources */, + F08534CB2E094F7A0002A3A0 /* Embed Frameworks */, ); buildRules = ( ); @@ -344,8 +374,10 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + F08534C42E094F4E0002A3A0 /* xcframeworks in Resources */, F001A0542DD48FAD00809561 /* Preview Assets.xcassets in Resources */, F0F59E512DD49C2800BE32D6 /* Colors.xcassets in Resources */, + F08534D32E0951BD0002A3A0 /* Images.xcassets in Resources */, F001A0502DD48FAD00809561 /* Assets.xcassets in Resources */, F0F59E4F2DD4996F00BE32D6 /* Localizable.xcstrings in Resources */, ); diff --git a/App/App/View/MainMenuView.swift b/App/App/View/MainMenuView.swift index 2bff8c2..0d4d534 100644 --- a/App/App/View/MainMenuView.swift +++ b/App/App/View/MainMenuView.swift @@ -1,16 +1,17 @@ -// -// ContentView.swift -// App -// -// Created by etudiant2 on 14/05/2025. -// - import SwiftUI struct MainMenuView: View { var body: some View { VStack(spacing: 20) { - Label("appNameBannerTitle", systemImage: "globe") + Spacer() + + Label { + Text("appNameBannerTitle").font(.largeTitle) + } icon: { + Image(.mainMenu).resizable().scaledToFit() + }.labelStyle(VerticalLabelStyle()) + + Spacer() NavigationLink(destination: NewGameView().navigationTitle("newGame.title")) { Label("mainMenu.button.newGame", systemImage: "play") @@ -19,6 +20,17 @@ struct MainMenuView: View { NavigationLink(destination: SavedGamesView().navigationTitle("savedGames.title")) { Label("mainMenu.button.scoreboard", systemImage: "rosette") } + + Spacer() + } + } +} + +private struct VerticalLabelStyle: LabelStyle { + func makeBody(configuration: Configuration) -> some View { + VStack(alignment: .center, spacing: 30) { + configuration.icon + configuration.title } } } diff --git a/App/Images.xcassets/Contents.json b/App/Images.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/App/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/App/Images.xcassets/MainMenu.imageset/Contents.json b/App/Images.xcassets/MainMenu.imageset/Contents.json new file mode 100644 index 0000000..eb90664 --- /dev/null +++ b/App/Images.xcassets/MainMenu.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "game-4-row-yellow-red-600nw-2233654429.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/App/Images.xcassets/MainMenu.imageset/game-4-row-yellow-red-600nw-2233654429.png b/App/Images.xcassets/MainMenu.imageset/game-4-row-yellow-red-600nw-2233654429.png new file mode 100644 index 0000000..fe137a0 Binary files /dev/null and b/App/Images.xcassets/MainMenu.imageset/game-4-row-yellow-red-600nw-2233654429.png differ diff --git a/Connect 4 Swift UI.xcworkspace/contents.xcworkspacedata b/Connect 4 Swift UI.xcworkspace/contents.xcworkspacedata index 3bef8c6..dba724a 100644 --- a/Connect 4 Swift UI.xcworkspace/contents.xcworkspacedata +++ b/Connect 4 Swift UI.xcworkspace/contents.xcworkspacedata @@ -1,826 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/precompiled b/precompiled index 0bb1ff7..7940212 160000 --- a/precompiled +++ b/precompiled @@ -1 +1 @@ -Subproject commit 0bb1ff744efbbbd887d8df18b0f27576f1a695dd +Subproject commit 7940212c5d0773b127160b55cd3288ac61e21ddc