🔀 dev_views

dev_views_SelectPlayer
Nathan VERDIER 11 months ago
commit cf73760067

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 112 KiB

@ -0,0 +1 @@
<svg height="20" viewBox="0 0 20 20" width="20" xmlns="http://www.w3.org/2000/svg"><path d="m12.2196699 6.03033009c-.2928932-.29289322-.2928932-.76776696 0-1.06066018.2928932-.29289321.767767-.29289321 1.0606602 0l4.5 4.5c.2928932.29289322.2928932.76776699 0 1.06066019l-4.5 4.5c-.2928932.2928932-.767767.2928932-1.0606602 0s-.2928932-.767767 0-1.0606602l3.9696699-3.9696699z" fill="#212121"/></svg>

After

Width:  |  Height:  |  Size: 399 B

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="107px" height="107px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:1" fill="#fffdfc" d="M -0.5,-0.5 C 35.1667,-0.5 70.8333,-0.5 106.5,-0.5C 106.5,35.1667 106.5,70.8333 106.5,106.5C 70.8333,106.5 35.1667,106.5 -0.5,106.5C -0.5,70.8333 -0.5,35.1667 -0.5,-0.5 Z"/></g>
<g><path style="opacity:1" fill="#ff0a02" d="M 72.5,81.5 C 72.44,80.9569 72.1067,80.6236 71.5,80.5C 69.1074,81.9295 66.7741,83.2628 64.5,84.5C 62.7422,85.9985 60.9088,86.3319 59,85.5C 57.9563,86.6226 57.2896,87.9559 57,89.5C 55.5421,88.2532 54.0421,88.2532 52.5,89.5C 47.2625,88.1915 42.0958,86.5248 37,84.5C 36.6667,84.8333 36.3333,85.1667 36,85.5C 33.6166,82.7272 30.7833,80.5605 27.5,79C 26.8333,77.6667 26.1667,76.3333 25.5,75C 22.9664,74.4837 20.7998,73.317 19,71.5C 18.5803,65.9729 17.4137,60.6396 15.5,55.5C 16.5,54.1667 17.5,52.8333 18.5,51.5C 16.3145,47.9728 16.3145,44.3061 18.5,40.5C 23.5438,33.6008 28.8772,26.9341 34.5,20.5C 36.0924,20.4173 37.7591,20.7506 39.5,21.5C 43.4346,20.2463 47.4346,19.2463 51.5,18.5C 53.0879,17.9904 54.2545,16.9904 55,15.5C 62.8685,18.8827 70.3685,22.8827 77.5,27.5C 79.8375,25.9893 80.5042,26.3227 79.5,28.5C 80.1667,29.8333 81.1667,30.8333 82.5,31.5C 83.4656,33.396 83.7989,35.396 83.5,37.5C 86.6829,37.929 89.0162,39.5957 90.5,42.5C 89.1903,47.6537 89.1903,52.8204 90.5,58C 90.2838,60.5068 89.2838,61.3401 87.5,60.5C 86.2612,62.0072 86.5946,63.1739 88.5,64C 87.1068,65.1711 86.2735,66.6711 86,68.5C 85.6667,67.5 85.3333,66.5 85,65.5C 82.1612,70.4675 79.1612,75.8008 76,81.5C 75.0138,80.8288 73.8471,80.8288 72.5,81.5 Z"/></g>
<g><path style="opacity:1" fill="#ffaba5" d="M 72.5,81.5 C 70.2459,82.4151 68.2459,83.7484 66.5,85.5C 65.8165,85.1373 65.1499,84.8039 64.5,84.5C 66.7741,83.2628 69.1074,81.9295 71.5,80.5C 72.1067,80.6236 72.44,80.9569 72.5,81.5 Z"/></g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -1,5 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
<dict>
<key>UIAppFonts</key>
<array>
<string>samurai.ttf</string>
</array>
</dict>
</plist>

@ -0,0 +1,814 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 56;
objects = {
/* Begin PBXBuildFile section */
643AB6932BFCEFD00018DA73 /* GameResumeFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 643AB6922BFCEFD00018DA73 /* GameResumeFrame.swift */; };
643AB69B2BFCFB5C0018DA73 /* HistoricView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 643AB69A2BFCFB5C0018DA73 /* HistoricView.swift */; };
6458345C2BF5F92300E18321 /* DouShouQi_AppApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6458345B2BF5F92300E18321 /* DouShouQi_AppApp.swift */; };
6458345E2BF5F92300E18321 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6458345D2BF5F92300E18321 /* ContentView.swift */; };
645834602BF5F92500E18321 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6458345F2BF5F92500E18321 /* Assets.xcassets */; };
645834632BF5F92500E18321 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 645834622BF5F92500E18321 /* Preview Assets.xcassets */; };
6458346D2BF5F92600E18321 /* DouShouQi_AppTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6458346C2BF5F92600E18321 /* DouShouQi_AppTests.swift */; };
645834772BF5F92600E18321 /* DouShouQi_AppUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645834762BF5F92600E18321 /* DouShouQi_AppUITests.swift */; };
645834792BF5F92600E18321 /* DouShouQi_AppUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645834782BF5F92600E18321 /* DouShouQi_AppUITestsLaunchTests.swift */; };
645834882BF5FEA000E18321 /* DSQ.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 645834872BF5FEA000E18321 /* DSQ.xcframework */; };
645834892BF5FEA000E18321 /* DSQ.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 645834872BF5FEA000E18321 /* DSQ.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
645B4C202BFCCA0500FD658A /* PlayerResumeFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645B4C1F2BFCCA0500FD658A /* PlayerResumeFrame.swift */; };
645B4C252BFCD3C600FD658A /* ScoreBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645B4C242BFCD3C600FD658A /* ScoreBoardView.swift */; };
6493C1C02C046BF900B5121D /* samurai.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6493C1BF2C046BF900B5121D /* samurai.ttf */; };
6493C1C22C046E5E00B5121D /* Fonts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6493C1C12C046E5E00B5121D /* Fonts.swift */; };
649ABF5B2BF60D78002E8894 /* MainMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649ABF5A2BF60D78002E8894 /* MainMenuView.swift */; };
649ABF602BF60F2D002E8894 /* MainMenuButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649ABF5F2BF60F2D002E8894 /* MainMenuButton.swift */; };
649B59A42BF64574002BAE38 /* TitlePageFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649B59A32BF64574002BAE38 /* TitlePageFrame.swift */; };
649B59A72BF64BA9002BAE38 /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 649B59A62BF64BA9002BAE38 /* Colors.xcassets */; };
649B59A92BF64C6A002BAE38 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649B59A82BF64C6A002BAE38 /* Colors.swift */; };
649B59AC2BF64E12002BAE38 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 649B59AB2BF64E12002BAE38 /* Images.xcassets */; };
649B59AE2BF64EAB002BAE38 /* AppImages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649B59AD2BF64EAB002BAE38 /* AppImages.swift */; };
649B59B22BF65392002BAE38 /* TextStyles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649B59B12BF65392002BAE38 /* TextStyles.swift */; };
649B59B42BF653E1002BAE38 /* ViewTitleTextStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649B59B32BF653E1002BAE38 /* ViewTitleTextStyle.swift */; };
EC62C4EF2BFE367F0048CD0B /* SwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C4EE2BFE367F0048CD0B /* SwiftUIView.swift */; };
EC62C4F92C0371660048CD0B /* MusicPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C4F82C0371660048CD0B /* MusicPlayer.swift */; };
EC62C4FB2C038BD20048CD0B /* PlayersView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C4FA2C038BD20048CD0B /* PlayersView.swift */; };
EC62C4FD2C0391D30048CD0B /* PlayerRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C4FC2C0391D30048CD0B /* PlayerRow.swift */; };
EC62C4FF2C0457AD0048CD0B /* TitleScreenMusic.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = EC62C4FE2C0457AD0048CD0B /* TitleScreenMusic.mp3 */; };
EC62C5012C045B590048CD0B /* SoundPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C5002C045B590048CD0B /* SoundPlayer.swift */; };
EC62C5062C045C1A0048CD0B /* TitleScreenButtonSound.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = EC62C5052C045C1A0048CD0B /* TitleScreenButtonSound.mp3 */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
645834692BF5F92600E18321 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 645834502BF5F92300E18321 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 645834572BF5F92300E18321;
remoteInfo = DouShouQi_App;
};
645834732BF5F92600E18321 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 645834502BF5F92300E18321 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 645834572BF5F92300E18321;
remoteInfo = DouShouQi_App;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
6458348A2BF5FEA000E18321 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
645834892BF5FEA000E18321 /* DSQ.xcframework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
643AB6922BFCEFD00018DA73 /* GameResumeFrame.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameResumeFrame.swift; sourceTree = "<group>"; };
643AB69A2BFCFB5C0018DA73 /* HistoricView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoricView.swift; sourceTree = "<group>"; };
645834582BF5F92300E18321 /* DouShouQi_App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DouShouQi_App.app; sourceTree = BUILT_PRODUCTS_DIR; };
6458345B2BF5F92300E18321 /* DouShouQi_AppApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DouShouQi_AppApp.swift; sourceTree = "<group>"; };
6458345D2BF5F92300E18321 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
6458345F2BF5F92500E18321 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
645834622BF5F92500E18321 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
645834682BF5F92600E18321 /* DouShouQi_AppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DouShouQi_AppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
6458346C2BF5F92600E18321 /* DouShouQi_AppTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DouShouQi_AppTests.swift; sourceTree = "<group>"; };
645834722BF5F92600E18321 /* DouShouQi_AppUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DouShouQi_AppUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
645834762BF5F92600E18321 /* DouShouQi_AppUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DouShouQi_AppUITests.swift; sourceTree = "<group>"; };
645834782BF5F92600E18321 /* DouShouQi_AppUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DouShouQi_AppUITestsLaunchTests.swift; sourceTree = "<group>"; };
645834852BF5FE1400E18321 /* DouShouQi-App-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "DouShouQi-App-Info.plist"; sourceTree = SOURCE_ROOT; };
645834872BF5FEA000E18321 /* DSQ.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = DSQ.xcframework; sourceTree = "<group>"; };
645B4C1F2BFCCA0500FD658A /* PlayerResumeFrame.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerResumeFrame.swift; sourceTree = "<group>"; };
645B4C242BFCD3C600FD658A /* ScoreBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScoreBoardView.swift; sourceTree = "<group>"; };
6493C1BF2C046BF900B5121D /* samurai.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = samurai.ttf; sourceTree = "<group>"; };
6493C1C12C046E5E00B5121D /* Fonts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fonts.swift; sourceTree = "<group>"; };
649ABF5A2BF60D78002E8894 /* MainMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenuView.swift; sourceTree = "<group>"; };
649ABF5F2BF60F2D002E8894 /* MainMenuButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenuButton.swift; sourceTree = "<group>"; };
649B59A32BF64574002BAE38 /* TitlePageFrame.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitlePageFrame.swift; sourceTree = "<group>"; };
649B59A62BF64BA9002BAE38 /* Colors.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Colors.xcassets; sourceTree = "<group>"; };
649B59A82BF64C6A002BAE38 /* Colors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Colors.swift; sourceTree = "<group>"; };
649B59AB2BF64E12002BAE38 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
649B59AD2BF64EAB002BAE38 /* AppImages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppImages.swift; sourceTree = "<group>"; };
649B59B12BF65392002BAE38 /* TextStyles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextStyles.swift; sourceTree = "<group>"; };
649B59B32BF653E1002BAE38 /* ViewTitleTextStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewTitleTextStyle.swift; sourceTree = "<group>"; };
EC62C4EE2BFE367F0048CD0B /* SwiftUIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIView.swift; sourceTree = "<group>"; };
EC62C4F82C0371660048CD0B /* MusicPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MusicPlayer.swift; sourceTree = "<group>"; };
EC62C4FA2C038BD20048CD0B /* PlayersView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayersView.swift; sourceTree = "<group>"; };
EC62C4FC2C0391D30048CD0B /* PlayerRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerRow.swift; sourceTree = "<group>"; };
EC62C4FE2C0457AD0048CD0B /* TitleScreenMusic.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = TitleScreenMusic.mp3; sourceTree = "<group>"; };
EC62C5002C045B590048CD0B /* SoundPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoundPlayer.swift; sourceTree = "<group>"; };
EC62C5052C045C1A0048CD0B /* TitleScreenButtonSound.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = TitleScreenButtonSound.mp3; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
645834552BF5F92300E18321 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
645834882BF5FEA000E18321 /* DSQ.xcframework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
645834652BF5F92600E18321 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
6458346F2BF5F92600E18321 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
643AB6912BFCEFB70018DA73 /* Game */ = {
isa = PBXGroup;
children = (
643AB6922BFCEFD00018DA73 /* GameResumeFrame.swift */,
);
path = Game;
sourceTree = "<group>";
};
643AB6992BFCFB480018DA73 /* Game */ = {
isa = PBXGroup;
children = (
643AB69A2BFCFB5C0018DA73 /* HistoricView.swift */,
EC62C4EE2BFE367F0048CD0B /* SwiftUIView.swift */,
);
path = Game;
sourceTree = "<group>";
};
6458344F2BF5F92300E18321 = {
isa = PBXGroup;
children = (
6458345A2BF5F92300E18321 /* DouShouQi_App */,
6458346B2BF5F92600E18321 /* DouShouQi_AppTests */,
645834752BF5F92600E18321 /* DouShouQi_AppUITests */,
645834592BF5F92300E18321 /* Products */,
645834862BF5FE9F00E18321 /* Frameworks */,
);
sourceTree = "<group>";
};
645834592BF5F92300E18321 /* Products */ = {
isa = PBXGroup;
children = (
645834582BF5F92300E18321 /* DouShouQi_App.app */,
645834682BF5F92600E18321 /* DouShouQi_AppTests.xctest */,
645834722BF5F92600E18321 /* DouShouQi_AppUITests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
6458345A2BF5F92300E18321 /* DouShouQi_App */ = {
isa = PBXGroup;
children = (
EC62C5022C045BB90048CD0B /* SoundPlayerClass */,
649B59A52BF64B1B002BAE38 /* Assets */,
649ABF5E2BF60ED5002E8894 /* Components */,
649ABF592BF60D13002E8894 /* Views */,
645834852BF5FE1400E18321 /* DouShouQi-App-Info.plist */,
6458345B2BF5F92300E18321 /* DouShouQi_AppApp.swift */,
6458345D2BF5F92300E18321 /* ContentView.swift */,
6458345F2BF5F92500E18321 /* Assets.xcassets */,
645834612BF5F92500E18321 /* Preview Content */,
);
path = DouShouQi_App;
sourceTree = "<group>";
};
645834612BF5F92500E18321 /* Preview Content */ = {
isa = PBXGroup;
children = (
645834622BF5F92500E18321 /* Preview Assets.xcassets */,
);
path = "Preview Content";
sourceTree = "<group>";
};
6458346B2BF5F92600E18321 /* DouShouQi_AppTests */ = {
isa = PBXGroup;
children = (
6458346C2BF5F92600E18321 /* DouShouQi_AppTests.swift */,
);
path = DouShouQi_AppTests;
sourceTree = "<group>";
};
645834752BF5F92600E18321 /* DouShouQi_AppUITests */ = {
isa = PBXGroup;
children = (
645834762BF5F92600E18321 /* DouShouQi_AppUITests.swift */,
645834782BF5F92600E18321 /* DouShouQi_AppUITestsLaunchTests.swift */,
);
path = DouShouQi_AppUITests;
sourceTree = "<group>";
};
645834862BF5FE9F00E18321 /* Frameworks */ = {
isa = PBXGroup;
children = (
645834872BF5FEA000E18321 /* DSQ.xcframework */,
);
name = Frameworks;
sourceTree = "<group>";
};
645B4C1C2BFCC95000FD658A /* Player */ = {
isa = PBXGroup;
children = (
645B4C1F2BFCCA0500FD658A /* PlayerResumeFrame.swift */,
EC62C4FC2C0391D30048CD0B /* PlayerRow.swift */,
);
path = Player;
sourceTree = "<group>";
};
645B4C232BFCD39A00FD658A /* Player */ = {
isa = PBXGroup;
children = (
645B4C242BFCD3C600FD658A /* ScoreBoardView.swift */,
EC62C4FA2C038BD20048CD0B /* PlayersView.swift */,
);
path = Player;
sourceTree = "<group>";
};
6493C1BE2C04650200B5121D /* Menu */ = {
isa = PBXGroup;
children = (
649ABF5A2BF60D78002E8894 /* MainMenuView.swift */,
);
path = Menu;
sourceTree = "<group>";
};
649ABF592BF60D13002E8894 /* Views */ = {
isa = PBXGroup;
children = (
643AB6992BFCFB480018DA73 /* Game */,
645B4C232BFCD39A00FD658A /* Player */,
6493C1BE2C04650200B5121D /* Menu */,
);
path = Views;
sourceTree = "<group>";
};
649ABF5E2BF60ED5002E8894 /* Components */ = {
isa = PBXGroup;
children = (
643AB6912BFCEFB70018DA73 /* Game */,
645B4C1C2BFCC95000FD658A /* Player */,
649ABF5F2BF60F2D002E8894 /* MainMenuButton.swift */,
649B59A32BF64574002BAE38 /* TitlePageFrame.swift */,
);
path = Components;
sourceTree = "<group>";
};
649B59A52BF64B1B002BAE38 /* Assets */ = {
isa = PBXGroup;
children = (
EC62C5042C045BE00048CD0B /* Musics */,
EC62C5032C045BD30048CD0B /* Sounds */,
649B59B02BF65360002BAE38 /* TextStyles */,
649B59AF2BF64F0A002BAE38 /* Colors */,
649B59AA2BF64DF1002BAE38 /* Images */,
);
path = Assets;
sourceTree = "<group>";
};
649B59AA2BF64DF1002BAE38 /* Images */ = {
isa = PBXGroup;
children = (
649B59AB2BF64E12002BAE38 /* Images.xcassets */,
649B59AD2BF64EAB002BAE38 /* AppImages.swift */,
);
path = Images;
sourceTree = "<group>";
};
649B59AF2BF64F0A002BAE38 /* Colors */ = {
isa = PBXGroup;
children = (
649B59A62BF64BA9002BAE38 /* Colors.xcassets */,
649B59A82BF64C6A002BAE38 /* Colors.swift */,
);
path = Colors;
sourceTree = "<group>";
};
649B59B02BF65360002BAE38 /* TextStyles */ = {
isa = PBXGroup;
children = (
6493C1BF2C046BF900B5121D /* samurai.ttf */,
649B59B12BF65392002BAE38 /* TextStyles.swift */,
649B59B32BF653E1002BAE38 /* ViewTitleTextStyle.swift */,
6493C1C12C046E5E00B5121D /* Fonts.swift */,
);
path = TextStyles;
sourceTree = "<group>";
};
EC62C5022C045BB90048CD0B /* SoundPlayerClass */ = {
isa = PBXGroup;
children = (
EC62C5002C045B590048CD0B /* SoundPlayer.swift */,
EC62C4F82C0371660048CD0B /* MusicPlayer.swift */,
);
path = SoundPlayerClass;
sourceTree = "<group>";
};
EC62C5032C045BD30048CD0B /* Sounds */ = {
isa = PBXGroup;
children = (
EC62C5052C045C1A0048CD0B /* TitleScreenButtonSound.mp3 */,
);
path = Sounds;
sourceTree = "<group>";
};
EC62C5042C045BE00048CD0B /* Musics */ = {
isa = PBXGroup;
children = (
EC62C4FE2C0457AD0048CD0B /* TitleScreenMusic.mp3 */,
);
path = Musics;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
645834572BF5F92300E18321 /* DouShouQi_App */ = {
isa = PBXNativeTarget;
buildConfigurationList = 6458347C2BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_App" */;
buildPhases = (
645834542BF5F92300E18321 /* Sources */,
645834552BF5F92300E18321 /* Frameworks */,
645834562BF5F92300E18321 /* Resources */,
6458348A2BF5FEA000E18321 /* Embed Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = DouShouQi_App;
productName = DouShouQi_App;
productReference = 645834582BF5F92300E18321 /* DouShouQi_App.app */;
productType = "com.apple.product-type.application";
};
645834672BF5F92600E18321 /* DouShouQi_AppTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 6458347F2BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_AppTests" */;
buildPhases = (
645834642BF5F92600E18321 /* Sources */,
645834652BF5F92600E18321 /* Frameworks */,
645834662BF5F92600E18321 /* Resources */,
);
buildRules = (
);
dependencies = (
6458346A2BF5F92600E18321 /* PBXTargetDependency */,
);
name = DouShouQi_AppTests;
productName = DouShouQi_AppTests;
productReference = 645834682BF5F92600E18321 /* DouShouQi_AppTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
645834712BF5F92600E18321 /* DouShouQi_AppUITests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 645834822BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_AppUITests" */;
buildPhases = (
6458346E2BF5F92600E18321 /* Sources */,
6458346F2BF5F92600E18321 /* Frameworks */,
645834702BF5F92600E18321 /* Resources */,
);
buildRules = (
);
dependencies = (
645834742BF5F92600E18321 /* PBXTargetDependency */,
);
name = DouShouQi_AppUITests;
productName = DouShouQi_AppUITests;
productReference = 645834722BF5F92600E18321 /* DouShouQi_AppUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
645834502BF5F92300E18321 /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 1420;
LastUpgradeCheck = 1420;
TargetAttributes = {
645834572BF5F92300E18321 = {
CreatedOnToolsVersion = 14.2;
};
645834672BF5F92600E18321 = {
CreatedOnToolsVersion = 14.2;
TestTargetID = 645834572BF5F92300E18321;
};
645834712BF5F92600E18321 = {
CreatedOnToolsVersion = 14.2;
TestTargetID = 645834572BF5F92300E18321;
};
};
};
buildConfigurationList = 645834532BF5F92300E18321 /* Build configuration list for PBXProject "DouShouQi_App" */;
compatibilityVersion = "Xcode 14.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 6458344F2BF5F92300E18321;
productRefGroup = 645834592BF5F92300E18321 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
645834572BF5F92300E18321 /* DouShouQi_App */,
645834672BF5F92600E18321 /* DouShouQi_AppTests */,
645834712BF5F92600E18321 /* DouShouQi_AppUITests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
645834562BF5F92300E18321 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
649B59A72BF64BA9002BAE38 /* Colors.xcassets in Resources */,
6493C1C02C046BF900B5121D /* samurai.ttf in Resources */,
EC62C5062C045C1A0048CD0B /* TitleScreenButtonSound.mp3 in Resources */,
649B59AC2BF64E12002BAE38 /* Images.xcassets in Resources */,
645834632BF5F92500E18321 /* Preview Assets.xcassets in Resources */,
645834602BF5F92500E18321 /* Assets.xcassets in Resources */,
EC62C4FF2C0457AD0048CD0B /* TitleScreenMusic.mp3 in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
645834662BF5F92600E18321 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
645834702BF5F92600E18321 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
645834542BF5F92300E18321 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
643AB69B2BFCFB5C0018DA73 /* HistoricView.swift in Sources */,
6458345E2BF5F92300E18321 /* ContentView.swift in Sources */,
649B59A92BF64C6A002BAE38 /* Colors.swift in Sources */,
649B59B42BF653E1002BAE38 /* ViewTitleTextStyle.swift in Sources */,
EC62C5012C045B590048CD0B /* SoundPlayer.swift in Sources */,
645B4C252BFCD3C600FD658A /* ScoreBoardView.swift in Sources */,
649B59AE2BF64EAB002BAE38 /* AppImages.swift in Sources */,
649ABF602BF60F2D002E8894 /* MainMenuButton.swift in Sources */,
643AB6932BFCEFD00018DA73 /* GameResumeFrame.swift in Sources */,
EC62C4EF2BFE367F0048CD0B /* SwiftUIView.swift in Sources */,
649B59B22BF65392002BAE38 /* TextStyles.swift in Sources */,
EC62C4F92C0371660048CD0B /* MusicPlayer.swift in Sources */,
EC62C4FD2C0391D30048CD0B /* PlayerRow.swift in Sources */,
EC62C4FB2C038BD20048CD0B /* PlayersView.swift in Sources */,
6458345C2BF5F92300E18321 /* DouShouQi_AppApp.swift in Sources */,
645B4C202BFCCA0500FD658A /* PlayerResumeFrame.swift in Sources */,
649ABF5B2BF60D78002E8894 /* MainMenuView.swift in Sources */,
6493C1C22C046E5E00B5121D /* Fonts.swift in Sources */,
649B59A42BF64574002BAE38 /* TitlePageFrame.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
645834642BF5F92600E18321 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6458346D2BF5F92600E18321 /* DouShouQi_AppTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
6458346E2BF5F92600E18321 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
645834792BF5F92600E18321 /* DouShouQi_AppUITestsLaunchTests.swift in Sources */,
645834772BF5F92600E18321 /* DouShouQi_AppUITests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
6458346A2BF5F92600E18321 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 645834572BF5F92300E18321 /* DouShouQi_App */;
targetProxy = 645834692BF5F92600E18321 /* PBXContainerItemProxy */;
};
645834742BF5F92600E18321 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 645834572BF5F92300E18321 /* DouShouQi_App */;
targetProxy = 645834732BF5F92600E18321 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
6458347A2BF5F92600E18321 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16.2;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
6458347B2BF5F92600E18321 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16.2;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
6458347D2BF5F92600E18321 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = "\"DouShouQi_App/Preview Content\"";
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "DouShouQi-App-Info.plist";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.DouShouQi-App";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
6458347E2BF5F92600E18321 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = "\"DouShouQi_App/Preview Content\"";
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "DouShouQi-App-Info.plist";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.DouShouQi-App";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
645834802BF5F92600E18321 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16.2;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.DouShouQi-AppTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DouShouQi_App.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/DouShouQi_App";
};
name = Debug;
};
645834812BF5F92600E18321 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16.2;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.DouShouQi-AppTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DouShouQi_App.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/DouShouQi_App";
};
name = Release;
};
645834832BF5F92600E18321 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.DouShouQi-AppUITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = DouShouQi_App;
};
name = Debug;
};
645834842BF5F92600E18321 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.DouShouQi-AppUITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = DouShouQi_App;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
645834532BF5F92300E18321 /* Build configuration list for PBXProject "DouShouQi_App" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6458347A2BF5F92600E18321 /* Debug */,
6458347B2BF5F92600E18321 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
6458347C2BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_App" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6458347D2BF5F92600E18321 /* Debug */,
6458347E2BF5F92600E18321 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
6458347F2BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_AppTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
645834802BF5F92600E18321 /* Debug */,
645834812BF5F92600E18321 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
645834822BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_AppUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
645834832BF5F92600E18321 /* Debug */,
645834842BF5F92600E18321 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 645834502BF5F92300E18321 /* Project object */;
}

@ -10,4 +10,6 @@ import SwiftUI
public struct Colors {
static let TitleText = Color("TitleTextColor")
static let Button = Color("ButtonColor")
static let TextButton = Color("ButtonTextColor")
}

@ -0,0 +1,28 @@
{
"colors" : [
{
"color" : {
"platform" : "universal",
"reference" : "systemRedColor"
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"platform" : "tvos",
"reference" : "systemRedColor"
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "1.000",
"red" : "1.000"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "1.000",
"red" : "1.000"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "1.000",
"red" : "1.000"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "1.000",
"red" : "1.000"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -10,4 +10,5 @@ import SwiftUI
public struct AppImages {
static let TitleImage = "TitlePageImage"
static let SemiLion = "SemiLion"
}

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "doushouqi-lion 1.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="107px" height="107px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:1" fill="#fffdfc" d="M -0.5,-0.5 C 35.1667,-0.5 70.8333,-0.5 106.5,-0.5C 106.5,35.1667 106.5,70.8333 106.5,106.5C 70.8333,106.5 35.1667,106.5 -0.5,106.5C -0.5,70.8333 -0.5,35.1667 -0.5,-0.5 Z"/></g>
<g><path style="opacity:1" fill="#ff0a02" d="M 72.5,81.5 C 72.44,80.9569 72.1067,80.6236 71.5,80.5C 69.1074,81.9295 66.7741,83.2628 64.5,84.5C 62.7422,85.9985 60.9088,86.3319 59,85.5C 57.9563,86.6226 57.2896,87.9559 57,89.5C 55.5421,88.2532 54.0421,88.2532 52.5,89.5C 47.2625,88.1915 42.0958,86.5248 37,84.5C 36.6667,84.8333 36.3333,85.1667 36,85.5C 33.6166,82.7272 30.7833,80.5605 27.5,79C 26.8333,77.6667 26.1667,76.3333 25.5,75C 22.9664,74.4837 20.7998,73.317 19,71.5C 18.5803,65.9729 17.4137,60.6396 15.5,55.5C 16.5,54.1667 17.5,52.8333 18.5,51.5C 16.3145,47.9728 16.3145,44.3061 18.5,40.5C 23.5438,33.6008 28.8772,26.9341 34.5,20.5C 36.0924,20.4173 37.7591,20.7506 39.5,21.5C 43.4346,20.2463 47.4346,19.2463 51.5,18.5C 53.0879,17.9904 54.2545,16.9904 55,15.5C 62.8685,18.8827 70.3685,22.8827 77.5,27.5C 79.8375,25.9893 80.5042,26.3227 79.5,28.5C 80.1667,29.8333 81.1667,30.8333 82.5,31.5C 83.4656,33.396 83.7989,35.396 83.5,37.5C 86.6829,37.929 89.0162,39.5957 90.5,42.5C 89.1903,47.6537 89.1903,52.8204 90.5,58C 90.2838,60.5068 89.2838,61.3401 87.5,60.5C 86.2612,62.0072 86.5946,63.1739 88.5,64C 87.1068,65.1711 86.2735,66.6711 86,68.5C 85.6667,67.5 85.3333,66.5 85,65.5C 82.1612,70.4675 79.1612,75.8008 76,81.5C 75.0138,80.8288 73.8471,80.8288 72.5,81.5 Z"/></g>
<g><path style="opacity:1" fill="#ffaba5" d="M 72.5,81.5 C 70.2459,82.4151 68.2459,83.7484 66.5,85.5C 65.8165,85.1373 65.1499,84.8039 64.5,84.5C 66.7741,83.2628 69.1074,81.9295 71.5,80.5C 72.1067,80.6236 72.44,80.9569 72.5,81.5 Z"/></g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -12,6 +12,8 @@
{
"idiom" : "universal",
"scale" : "3x"
"filename" : "-16-05-2024.svg",
"idiom" : "universal"
}
],
"info" : {

@ -0,0 +1,25 @@
<svg width="189" height="498" viewBox="0 0 189 498" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1_3268)" filter="url(#filter0_f_1_3268)">
<path d="M382.621 215.799C382.621 280.998 367.172 328.099 326.932 366.096C286.691 404.095 221.662 432.991 206.134 448.623C188.76 432.992 121.271 404.095 81.4915 366.096C41.7124 328.099 29.646 280.998 29.646 215.799C29.646 85.4001 108.663 31 206.134 31C303.606 31 382.621 85.4001 382.621 215.799Z" fill="white" stroke="#0D0501" stroke-width="6.9846"/>
<path d="M103.782 60.4177C139.069 83.6755 178.165 144.19 206.065 234.072C153.55 188.305 69.4868 158.676 32.7195 189.01" stroke="#0D0501" stroke-width="7.7606"/>
<path d="M40.1171 294.518C69.8771 236.433 211.364 234.035 203.605 231.872C196.221 229.813 97.3095 309.398 87.7663 373.653" stroke="#0D0501" stroke-width="7.7606"/>
<path d="M149.375 413.222C149.074 369.401 201.146 228.22 206.061 231.874" stroke="#0D0501" stroke-width="7.7606"/>
<path d="M202.348 89.0595C181.351 89.8512 161.676 98.5256 144.555 112.384C127.637 102.836 93.8681 104.951 81.372 114.084C74.6176 143.49 79.1279 176.397 89.9115 198.815C84.985 215.771 82.2869 233.481 82.2869 251.109C82.2869 308.824 111.136 349.456 152.841 367.528C158.186 379.038 171.186 389.906 180.69 392.058C199.695 396.361 213.127 396.754 232.131 392.058C241.851 389.656 254.857 378.133 260.095 366.712C300.763 348.236 328.767 307.935 328.767 251.11C328.767 234.023 326.19 216.862 321.549 200.38C332.879 177.949 337.813 144.177 330.902 114.084C318.216 104.813 283.604 102.741 266.956 112.792C248.861 97.9991 227.89 89.0596 205.501 89.0596C204.437 89.0596 203.405 89.0194 202.348 89.0595Z" fill="white" stroke="#0D0501" stroke-width="6.9846"/>
<path d="M144.416 253.148C142.863 255.917 141.925 259.35 141.925 263.077C141.925 272.228 147.488 279.669 154.328 279.669C160.562 279.669 165.662 273.475 166.528 265.457L144.416 253.148Z" fill="#0D0501"/>
<path d="M178.748 295.04C182.093 278.305 228.543 276.7 233.318 295.04C237.407 310.748 218.496 331.015 206.033 331.063C194.678 331.104 175.386 311.866 178.748 295.04Z" fill="#0D0501"/>
<path opacity="0.2" d="M95.3709 138.466C103.29 134.933 118.684 138.313 128.439 141.763C115.861 157.535 107.634 170.613 99.8898 191.772C93.2601 175.599 91.6636 153.358 95.3709 138.466Z" fill="black"/>
<path d="M13 290.133L132.126 301.124" stroke="#050200" stroke-width="1.5521" stroke-linecap="round"/>
<path d="M139.113 315.425L47.5098 362.686" stroke="#050200" stroke-width="1.5521" stroke-linecap="round"/>
<path d="M147.728 330.819C144.442 334.116 86.111 397.862 86.111 397.862" stroke="#050200" stroke-width="1.5521" stroke-linecap="round"/>
</g>
<defs>
<filter id="filter0_f_1_3268" x="-1" y="-1" width="190" height="500" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feGaussianBlur stdDeviation="0.5" result="effect1_foregroundBlur_1_3268"/>
</filter>
<clipPath id="clip0_1_3268">
<rect width="188" height="498" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

@ -0,0 +1,14 @@
//
// AppMusic.swift
// DouShouQi_App
//
// Created by étudiant on 26/05/2024.
//
import Foundation
import SwiftUI
public struct AppMusic {
static let ScreenTitleMusic = "ScreenTitleMusique"
}

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,13 @@
{
"data" : [
{
"filename" : "ytmp3free.cc_1-a-o-t-2-main-theme-attack-on-titan-2-soundtrack-youtubemp3free.org.mp3",
"idiom" : "universal",
"universal-type-identifier" : "public.mp3"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,12 @@
//
// Fonts.swift
// DouShouQi_App
//
// Created by Rémi REGNAULT on 27/05/2024.
//
import Foundation
public struct Fonts {
static let title = "samurai"
}

@ -13,5 +13,9 @@ struct ViewTitleTextStyle: TextStyle {
content
.foregroundColor(Colors.TitleText)
.fontWeight(.bold)
<<<<<<< HEAD
=======
.font(.custom(Fonts.title, size: 30))
>>>>>>> dev_views
}
}

@ -0,0 +1,51 @@
//
// GameResumeFrame.swift
// DouShouQi_App
//
// Created by Rémi REGNAULT on 21/05/2024.
//
import SwiftUI
struct GameResumeFrame: View {
// Players Params
let Player1Name: String
let Player2Name: String
// Game Params
let Status: String
var body: some View {
ZStack {
HStack(alignment: .center) {
VStack(alignment: .leading) {
Text("\(Player1Name) vs \(Player2Name)")
.font(.headline)
Text(Status)
.font(.subheadline)
.foregroundColor(.gray)
}
Spacer()
Text("Detail >")
.frame(width: 100)
.foregroundColor(.gray)
}
.padding(10)
.overlay(
RoundedRectangle(cornerRadius: 3)
.stroke(.gray, lineWidth: 2)
)
}.padding(2)
}
}
struct GameResumeFrame_Previews: PreviewProvider {
static var previews: some View {
GameResumeFrame(Player1Name: "Rayhan", Player2Name: "Remi", Status: "Winner: Remi")
}
}

@ -7,14 +7,91 @@
import SwiftUI
struct MainMenuButton: View {
struct MainMenuButton<Destination: View>: View {
// Text Params
var text: String
var destination: Destination
var sound: String
// Button Alignment
var horizontalAlignment: Alignment = .center
// Button corner radius
var topLeftCorner: CGFloat = 0
var topRightCorner: CGFloat = 0
var bottomLeftCorner: CGFloat = 0
var bottomRightCorner: CGFloat = 0
var body: some View {
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
NavigationLink(destination: destination) {
Text(text.uppercased())
.font(.headline)
.fontWeight(.semibold)
.foregroundColor(.white)
.padding()
.frame(maxWidth: .infinity, maxHeight: 40)
.background(
Color.red
.clipShape(RoundedRectangle(cornerSize: CGSize(width: 0, height: 0)))
.mask(RoundedCornersShape(cornerRadii: (topLeft: topLeftCorner, topRight: topRightCorner, bottomLeft: bottomLeftCorner, bottomRight: bottomRightCorner)))
)
}
.simultaneousGesture(TapGesture().onEnded {
playSound(named: sound)
})
.frame(width: UIScreen.main.bounds.width / 1.7)
.frame(maxWidth: .infinity, alignment: horizontalAlignment)
}
}
struct RoundedCornersShape: Shape {
var cornerRadii: (topLeft: CGFloat, topRight: CGFloat, bottomLeft: CGFloat, bottomRight: CGFloat)
func path(in rect: CGRect) -> Path {
let path = UIBezierPath()
// Top left corner
path.move(to: CGPoint(x: rect.minX, y: rect.minY + cornerRadii.topLeft))
path.addArc(withCenter: CGPoint(x: rect.minX + cornerRadii.topLeft, y: rect.minY + cornerRadii.topLeft),
radius: cornerRadii.topLeft,
startAngle: .pi,
endAngle: -.pi / 2,
clockwise: true)
// Top right corner
path.addLine(to: CGPoint(x: rect.maxX - cornerRadii.topRight, y: rect.minY))
path.addArc(withCenter: CGPoint(x: rect.maxX - cornerRadii.topRight, y: rect.minY + cornerRadii.topRight),
radius: cornerRadii.topRight,
startAngle: -.pi / 2,
endAngle: 0,
clockwise: true)
// Bottom right corner
path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY - cornerRadii.bottomRight))
path.addArc(withCenter: CGPoint(x: rect.maxX - cornerRadii.bottomRight, y: rect.maxY - cornerRadii.bottomRight),
radius: cornerRadii.bottomRight,
startAngle: 0,
endAngle: .pi / 2,
clockwise: true)
// Bottom left corner
path.addLine(to: CGPoint(x: rect.minX + cornerRadii.bottomLeft, y: rect.maxY))
path.addArc(withCenter: CGPoint(x: rect.minX + cornerRadii.bottomLeft, y: rect.maxY - cornerRadii.bottomLeft),
radius: cornerRadii.bottomLeft,
startAngle: .pi / 2,
endAngle: .pi,
clockwise: true)
path.addLine(to: CGPoint(x: rect.minX, y: rect.minY + cornerRadii.topLeft))
return Path(path.cgPath)
}
}
struct MainMenuButton_Previews: PreviewProvider {
static var previews: some View {
MainMenuButton()
MainMenuButton(text: "test", destination: HistoricView(), sound: "TitleScreenButtonSound", horizontalAlignment: .leading, topRightCorner: 10, bottomRightCorner: 10)
}
}

@ -0,0 +1,45 @@
//
// PlayerResumeFrame.swift
// DouShouQi_App
//
// Created by Rémi REGNAULT on 21/05/2024.
//
import SwiftUI
struct PlayerResumeFrame: View {
// Player Params
let Name: String
let Rank: Int
let Wins: Int
let Looses: Int
var body: some View {
VStack {
HStack {
Text("\(Rank)")
.font(.headline)
.frame(width: 50, alignment: .trailing)
Text(Name)
Spacer()
Text("\(Wins)")
.frame(width: 55, alignment: .trailing)
Text("\(Looses)")
.frame(width: 55, alignment: .trailing)
}
.padding(10)
}
}
}
struct PlayerResumeFrame_Previews: PreviewProvider {
static var previews: some View {
PlayerResumeFrame(Name: "Michel Polnaref", Rank: 178, Wins: 0, Looses: 296)
}
}

@ -0,0 +1,43 @@
//
// PlayerRow.swift
// DouShouQi_App
//
// Created by étudiant on 26/05/2024.
//
import Foundation
import SwiftUI
struct PlayerRow: View {
var player: Player
var body: some View {
HStack {
VStack(alignment: .leading) {
Text(player.name)
.font(.headline)
Text("Victoires : \(player.wins) Défaites : \(player.losses)")
.font(.subheadline)
}
Spacer()
Button(action: {
// Action pour éditer le joueur
}) {
Image(systemName: "pencil")
.foregroundColor(.red)
}
Button(action: {
// Action pour supprimer le joueur
}) {
Image(systemName: "trash")
.foregroundColor(.red)
}
}
.padding()
.background(Color.white)
.cornerRadius(10)
.shadow(radius: 1)
}
}

@ -9,6 +9,9 @@ import SwiftUI
struct TitlePageFrame: View {
// Text Params
var Text: String
// Image Params
var ImageWidth: CGFloat
var ImageHeight: CGFloat
@ -20,9 +23,13 @@ struct TitlePageFrame: View {
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: ImageWidth, height: ImageHeight)
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
.textStyle(T: TextStyles.ViewTitle)
SwiftUI.Text(self.Text)
.foregroundColor(Colors.TitleText)
.fontWeight(.bold)
.font(.custom(Fonts.title, size: 30))
}
}
@ -31,6 +38,6 @@ struct TitlePageFrame: View {
struct TitlePageFrame_Previews: PreviewProvider {
static var previews: some View {
TitlePageFrame(ImageWidth: 200, ImageHeight: 200)
TitlePageFrame(Text: "DouShouQi", ImageWidth: 200, ImageHeight: 200)
}
}

@ -11,7 +11,7 @@ import SwiftUI
struct DouShouQi_AppApp: App {
var body: some Scene {
WindowGroup {
ContentView()
MainMenuView()
}
}
}

@ -0,0 +1,34 @@
//
// MusicPlayer.swift
// DouShouQi_App
//
// Created by étudiant on 26/05/2024.
//
import Foundation
import AVFoundation
class MusicPlayer {
static let shared = MusicPlayer()
var audioPlayer: AVAudioPlayer?
func playBackgroundMusic(music: String) {
if let bundle = Bundle.main.path(forResource: music, ofType: "mp3") {
let backgroundMusic = NSURL(fileURLWithPath: bundle)
do {
audioPlayer = try AVAudioPlayer(contentsOf: backgroundMusic as URL)
guard let audioPlayer = audioPlayer else { return }
audioPlayer.numberOfLoops = -1 // Loop indefinitely
audioPlayer.prepareToPlay()
audioPlayer.play()
} catch {
print(error)
}
}
}
func stopBackgroundMusic() {
audioPlayer?.stop()
}
}

@ -0,0 +1,22 @@
//
// SoundPlayer.swift
// DouShouQi_App
//
// Created by étudiant on 27/05/2024.
//
import Foundation
import AVFoundation
var audioPlayer: AVAudioPlayer?
func playSound(named soundName: String) {
guard let url = Bundle.main.url(forResource: soundName, withExtension: "mp3") else { return }
do {
audioPlayer = try AVAudioPlayer(contentsOf: url)
audioPlayer?.play()
} catch let error {
print("Error playing sound. \(error.localizedDescription)")
}
}

@ -0,0 +1,32 @@
//
// HistoricView.swift
// DouShouQi_App
//
// Created by Rémi REGNAULT on 21/05/2024.
//
import SwiftUI
struct HistoricView: View {
var body: some View {
VStack {
TitlePageFrame(Text: "Historic", ImageWidth: 200, ImageHeight: 200)
VStack {
GameResumeFrame(Player1Name: "Remi", Player2Name: "Nathan", Status: "Winner: Nathan")
GameResumeFrame(Player1Name: "Rayhan", Player2Name: "Nathan", Status: "Winner: Nathan")
GameResumeFrame(Player1Name: "Rayhan", Player2Name: "Rémi", Status: "Draw")
}
.padding(.horizontal, 10)
Spacer()
}
}
}
struct HistoricView_Previews: PreviewProvider {
static var previews: some View {
HistoricView()
}
}

@ -0,0 +1,98 @@
//
// SwiftUIView.swift
// DouShouQi_App
//
// Created by étudiant on 22/05/2024.
//
import SwiftUI
struct SwiftUIView: View {
var body: some View {
VStack {
TitlePageFrame(Text: "DOU SHOU QI", ImageWidth: 200, ImageHeight: 200)
Spacer()
VStack {
HStack{
VStack {
Button(action: {
// Action du bouton
}, label: {
Text("Play".uppercased())
.font(.headline)
.fontWeight(.semibold)
.foregroundColor(.white)
.frame(maxWidth: .infinity, maxHeight: 50)
.background(
Color.red
)
.cornerRadius(0)
})
.frame(width: UIScreen.main.bounds.width / 1.7)
.frame(maxWidth: .infinity, alignment: .leading)
Button(action: {
// Action du bouton
}, label: {
Text("Historique".uppercased())
.font(.headline)
.fontWeight(.semibold)
.foregroundColor(.white)
.frame(maxWidth: .infinity, maxHeight: 50)
.background(
Color.red
)
.cornerRadius(0)
})
.frame(width: UIScreen.main.bounds.width / 1.7)
.frame(maxWidth: .infinity, alignment: .leading)
Button(action: {
// Action du bouton
}, label: {
Text("Best scores".uppercased())
.font(.headline)
.fontWeight(.semibold)
.foregroundColor(.white)
.frame(maxWidth: .infinity, maxHeight: 50)
.background(
Color.red
)
.cornerRadius(0)
})
.frame(width: UIScreen.main.bounds.width / 1.7)
.frame(maxWidth: .infinity, alignment: .leading)
Button(action: {
// Action du bouton
}, label: {
Text("Players".uppercased())
.font(.headline)
.fontWeight(.semibold)
.foregroundColor(.white)
.frame(maxWidth: .infinity, maxHeight: 50)
.background(
Color.red
)
.cornerRadius(0)
})
.frame(width: UIScreen.main.bounds.width / 1.7)
.frame(maxWidth: .infinity, alignment: .leading)
}
.padding()
}
}
.padding(.horizontal, 10)
Spacer()
}
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
SwiftUIView()
}
}

@ -0,0 +1,71 @@
//
// MainMenuView.swift
// DouShouQi_App
//
// Created by Rémi REGNAULT on 16/05/2024.
//
import SwiftUI
struct MainMenuView: View {
var body: some View {
NavigationView {
VStack {
TitlePageFrame(Text: "DOU SHOU QI", ImageWidth: 200, ImageHeight: 200)
Spacer()
VStack {
HStack{
VStack(spacing: 25) {
MainMenuButton(text: "Play", destination: ScoreBoardView(), sound: "TitleScreenButtonSound", horizontalAlignment: .leading, topRightCorner: 10, bottomRightCorner: 10)
MainMenuButton(text: "Historique", destination: HistoricView(), sound: "TitleScreenButtonSound", horizontalAlignment: .leading, topRightCorner: 10, bottomRightCorner: 10)
MainMenuButton(text: "Best Scores", destination: ScoreBoardView(), sound: "TitleScreenButtonSound", horizontalAlignment: .leading, topRightCorner: 10, bottomRightCorner: 10)
MainMenuButton(text: "Players", destination: PlayersView(), sound: "TitleScreenButtonSound", horizontalAlignment: .leading, topRightCorner: 10, bottomRightCorner: 10)
}
Image(AppImages.SemiLion)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 200, height: 500)
}
}
Spacer()
HStack {
Text("Copyright @")
.font(.headline)
.frame(alignment: .trailing)
Text("Dou Shou Qi Team")
Spacer()
Text("2024")
.frame(alignment: .trailing)
}
.padding() // Ajout de padding pour éviter que le contenu ne touche la bordure
.background(Color.white) // Couleur de fond pour le HStack
.overlay(
Rectangle()
.stroke(Color.black, lineWidth: 1) // Couleur et épaisseur de la bordure
)
Spacer()
.onAppear {
MusicPlayer.shared.playBackgroundMusic(music: "TitleScreenMusic")
}
.onDisappear {
MusicPlayer.shared.stopBackgroundMusic()
}
}
}
}
}
struct MainMenuView_Previews: PreviewProvider {
static var previews: some View {
MainMenuView()
}
}

@ -0,0 +1,119 @@
//
// PlayersView.swift
// DouShouQi_App
//
// Created by étudiant on 26/05/2024.
//
import Foundation
import SwiftUI
// Modèle de données pour un joueur
struct Player: Identifiable {
var id = UUID()
var name: String
var wins: Int
var losses: Int
}
// Exemple de vue pour l'interface utilisateur des joueurs
struct PlayersView: View {
// Liste de joueurs pour l'exemple
@State private var players = [
Player(name: "Rayhan", wins: 7, losses: 6),
Player(name: "Remi", wins: 7, losses: 2),
Player(name: "Nathan", wins: 14, losses: 5)
]
@State private var searchText = ""
var filteredPlayers: [Player] {
if searchText.isEmpty {
return players
} else {
return players.filter { $0.name.lowercased().contains(searchText.lowercased()) }
}
}
var body: some View {
NavigationView {
VStack {
// Image en haut
TitlePageFrame(Text: "PLAYERS", ImageWidth: 200, ImageHeight: 200)
// Barre de recherche
SearchBar(text: $searchText)
.padding(.horizontal)
// Liste de joueurs
List {
ForEach(groupedPlayers.keys.sorted(), id: \.self) { key in
Section(header: Text(key)) {
ForEach(groupedPlayers[key]!) { player in
PlayerRow(player: player)
}
}
}
}
Button(action: {
}) {
Text("Add a player")
.font(.headline)
.foregroundColor(.white)
.padding()
.frame(maxWidth: .infinity)
.background(Color.red)
.cornerRadius(10)
.padding(.horizontal)
}
.padding(.bottom)
}
}
}
var groupedPlayers: [String: [Player]] {
Dictionary(grouping: filteredPlayers) { player in
String(player.name.prefix(1)).uppercased()
}
}
}
// Vue pour la barre de recherche
struct SearchBar: UIViewRepresentable {
@Binding var text: String
class Coordinator: NSObject, UISearchBarDelegate {
@Binding var text: String
init(text: Binding<String>) {
_text = text
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
text = searchText
}
}
func makeCoordinator() -> Coordinator {
return Coordinator(text: $text)
}
func makeUIView(context: Context) -> UISearchBar {
let searchBar = UISearchBar(frame: .zero)
searchBar.delegate = context.coordinator
return searchBar
}
func updateUIView(_ uiView: UISearchBar, context: Context) {
uiView.text = text
}
}
struct PlayersPageView_Previews: PreviewProvider {
static var previews: some View {
PlayersView()
}
}

@ -0,0 +1,57 @@
//
// ScoreBoardView.swift
// DouShouQi_App
//
// Created by Rémi REGNAULT on 21/05/2024.
//
import SwiftUI
import DouShouQiModel
struct ScoreBoardView: View {
var body: some View {
VStack {
HStack {
TitlePageFrame(Text: "Score Board", ImageWidth: 200, ImageHeight: 200)
}
VStack {
HStack {
Text("Rank")
.font(.headline)
.frame(width: 50, alignment: .trailing)
Text("Name")
Spacer()
Text("Wins")
.frame(width: 55, alignment: .trailing)
Text("Looses")
.frame(width: 55, alignment: .trailing)
}
.padding(10)
HStack {
Rectangle()
.frame(height: 2)
}
PlayerResumeFrame(Name: "Nathan Verdier", Rank: 1, Wins: 19, Looses: 15)
PlayerResumeFrame(Name: "Rayhan Hassou", Rank: 2, Wins: 17, Looses: 17)
PlayerResumeFrame(Name: "Rémi Regnault", Rank: 3, Wins: 15, Looses: 19)
Spacer()
}
}
.padding(10)
}
}
struct ScoreBoardView_Previews: PreviewProvider {
static var previews: some View {
ScoreBoardView()
}
}
Loading…
Cancel
Save