From e23de9a2d360ed30130cadf84ba0d2cf459a25f9 Mon Sep 17 00:00:00 2001 From: Jerome Coudron Date: Sun, 19 Mar 2023 23:02:50 +0000 Subject: [PATCH] Introduced Hangman in DEV-compatible branch --- .../ScriptableObjects/MinigameList.asset | 1 + Assets/Hangman/Images/Hangman0.png | Bin 0 -> 3614 bytes Assets/Hangman/Images/Hangman0.png.meta | 135 + Assets/Hangman/Images/Hangman1.png | Bin 0 -> 3735 bytes Assets/Hangman/Images/Hangman1.png.meta | 135 + Assets/Hangman/Images/Hangman10.png | Bin 0 -> 4822 bytes Assets/Hangman/Images/Hangman10.png.meta | 135 + Assets/Hangman/Images/Hangman2.png | Bin 0 -> 3753 bytes Assets/Hangman/Images/Hangman2.png.meta | 135 + Assets/Hangman/Images/Hangman3.png | Bin 0 -> 3786 bytes Assets/Hangman/Images/Hangman3.png.meta | 135 + Assets/Hangman/Images/Hangman4.png | Bin 0 -> 4217 bytes Assets/Hangman/Images/Hangman4.png.meta | 135 + Assets/Hangman/Images/Hangman5.png | Bin 0 -> 4239 bytes Assets/Hangman/Images/Hangman5.png.meta | 135 + Assets/Hangman/Images/Hangman6.png | Bin 0 -> 4404 bytes Assets/Hangman/Images/Hangman6.png.meta | 135 + Assets/Hangman/Images/Hangman7.png | Bin 0 -> 4554 bytes Assets/Hangman/Images/Hangman7.png.meta | 135 + Assets/Hangman/Images/Hangman8.png | Bin 0 -> 4591 bytes Assets/Hangman/Images/Hangman8.png.meta | 135 + Assets/Hangman/Images/Hangman9.png | Bin 0 -> 4607 bytes Assets/Hangman/Images/Hangman9.png.meta | 135 + Assets/Hangman/Images/Thumbnail.png | Bin 0 -> 27595 bytes Assets/Hangman/Images/Thumbnail.png.meta | 135 + Assets/Hangman/Scenes/Hangman.unity | 6428 +++++++++++++++++ .../Hangman.unity.meta} | 4 +- .../Hangman/ScriptableObjects/Hangman.asset | 26 + .../ScriptableObjects/Hangman.asset.meta | 8 + .../ScriptableObjects/HangmanImages.asset | 26 + .../HangmanImages.asset.meta | 8 + Assets/Hangman/Scripts/HangManWebcam.cs | 62 + Assets/Hangman/Scripts/HangManWebcam.cs.meta | 11 + .../Hangman/Scripts/HangmanGameController.cs | 709 ++ .../Scripts/HangmanGameController.cs.meta | 11 + Assets/Hangman/Scripts/HangmanImages.cs | 16 + Assets/Hangman/Scripts/HangmanImages.cs.meta | 11 + Assets/Hangman/Scripts/HangmanScripts.asmdef | 3 - Assets/Hangman/Scripts/WebCam.cs | 95 + Assets/Hangman/Scripts/WebCam.cs.meta | 11 + Assets/users.json | 2 +- ProjectSettings/EditorBuildSettings.asset | 3 + 42 files changed, 9049 insertions(+), 6 deletions(-) create mode 100644 Assets/Hangman/Images/Hangman0.png create mode 100644 Assets/Hangman/Images/Hangman0.png.meta create mode 100644 Assets/Hangman/Images/Hangman1.png create mode 100644 Assets/Hangman/Images/Hangman1.png.meta create mode 100644 Assets/Hangman/Images/Hangman10.png create mode 100644 Assets/Hangman/Images/Hangman10.png.meta create mode 100644 Assets/Hangman/Images/Hangman2.png create mode 100644 Assets/Hangman/Images/Hangman2.png.meta create mode 100644 Assets/Hangman/Images/Hangman3.png create mode 100644 Assets/Hangman/Images/Hangman3.png.meta create mode 100644 Assets/Hangman/Images/Hangman4.png create mode 100644 Assets/Hangman/Images/Hangman4.png.meta create mode 100644 Assets/Hangman/Images/Hangman5.png create mode 100644 Assets/Hangman/Images/Hangman5.png.meta create mode 100644 Assets/Hangman/Images/Hangman6.png create mode 100644 Assets/Hangman/Images/Hangman6.png.meta create mode 100644 Assets/Hangman/Images/Hangman7.png create mode 100644 Assets/Hangman/Images/Hangman7.png.meta create mode 100644 Assets/Hangman/Images/Hangman8.png create mode 100644 Assets/Hangman/Images/Hangman8.png.meta create mode 100644 Assets/Hangman/Images/Hangman9.png create mode 100644 Assets/Hangman/Images/Hangman9.png.meta create mode 100644 Assets/Hangman/Images/Thumbnail.png create mode 100644 Assets/Hangman/Images/Thumbnail.png.meta create mode 100644 Assets/Hangman/Scenes/Hangman.unity rename Assets/Hangman/{Scripts/HangmanScripts.asmdef.meta => Scenes/Hangman.unity.meta} (59%) create mode 100644 Assets/Hangman/ScriptableObjects/Hangman.asset create mode 100644 Assets/Hangman/ScriptableObjects/Hangman.asset.meta create mode 100644 Assets/Hangman/ScriptableObjects/HangmanImages.asset create mode 100644 Assets/Hangman/ScriptableObjects/HangmanImages.asset.meta create mode 100644 Assets/Hangman/Scripts/HangManWebcam.cs create mode 100644 Assets/Hangman/Scripts/HangManWebcam.cs.meta create mode 100644 Assets/Hangman/Scripts/HangmanGameController.cs create mode 100644 Assets/Hangman/Scripts/HangmanGameController.cs.meta create mode 100644 Assets/Hangman/Scripts/HangmanImages.cs create mode 100644 Assets/Hangman/Scripts/HangmanImages.cs.meta delete mode 100644 Assets/Hangman/Scripts/HangmanScripts.asmdef create mode 100644 Assets/Hangman/Scripts/WebCam.cs create mode 100644 Assets/Hangman/Scripts/WebCam.cs.meta diff --git a/Assets/Common/ScriptableObjects/MinigameList.asset b/Assets/Common/ScriptableObjects/MinigameList.asset index a873b9c..d4509c1 100644 --- a/Assets/Common/ScriptableObjects/MinigameList.asset +++ b/Assets/Common/ScriptableObjects/MinigameList.asset @@ -16,3 +16,4 @@ MonoBehaviour: minigames: - {fileID: 11400000, guid: 8a087d241d652634eb4f6352267ea7dc, type: 2} - {fileID: 11400000, guid: e726e0b93ea88465db7ee27605deb83f, type: 2} + - {fileID: 11400000, guid: 165c1d9867275924d9720d409e935f95, type: 2} diff --git a/Assets/Hangman/Images/Hangman0.png b/Assets/Hangman/Images/Hangman0.png new file mode 100644 index 0000000000000000000000000000000000000000..f2cd41caf21a6a8752f4fef1c7f8caf8a09409f1 GIT binary patch literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU}<1rVCvvt0*bVIibVk_#^NA%Cx&(BWL^R}Ea{HE zjtmSN`?>!lvI6;>1s;*b3=BdgAk26#O}+wX(q>N=$B>G+x7Q6B85npDFZgMGcjpOK zy&XW_1OWpEhK7y?Ak&3~hk-#sDFJATAR{vaLkEWh1A~Lh0U%$AiH(6lKyXy)Xb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1Jh5(gAK!lvI6;>1s;*b3=BdgAk26#O}>JGfltTN#WAEJ?(OxBoD7CMEC=83&#Yf` zg-={MEz4rUw`ia?6&48w1_zf0Mg|6#QRZkkj3$E7%rIIKjFyO_)xl`BINBzlZriBf z)4|}h9SjB9+qrJcnl3ia=re1Bwq?kHYkxL>m@-qJA?D;lrftvWw=O?Z!}!39Pqe^D zU)Lt7jhkV6(Q05*O^Jzzfk8p(z$kMx97YqtXl9^lNwD!6e|ko6en4WF2C#f#@O1Ta JS?83{1OVCr>$d;^ literal 0 HcmV?d00001 diff --git a/Assets/Hangman/Images/Hangman1.png.meta b/Assets/Hangman/Images/Hangman1.png.meta new file mode 100644 index 0000000..72caa37 --- /dev/null +++ b/Assets/Hangman/Images/Hangman1.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 52d049779da61224d9c3419e70aee033 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Hangman/Images/Hangman10.png b/Assets/Hangman/Images/Hangman10.png new file mode 100644 index 0000000000000000000000000000000000000000..240382efb9f930560fbd6645fd76447570aecaa3 GIT binary patch literal 4822 zcmeHJ`B#%?7QSB+B9wqE4ojfOG9VsNg32NwYm^;q9o8bmj;JgGqO!=AN)d3Z6hy!x zAXts3Y;j|erSV|ZG9?x$%Sc(HMZgLgKm>%jANs@i2h2H~Q+~+F{odud_df4^@AGEt zad(jUg!u^o$T&H&KL?<30VwH`6dXx&Qu4z;;@Ia7c2Fr)AH@&aAzL?FfE$_83;QMT zTPo7g_ZWb}aq>s>A6y@cMyM0p_8+kUfA)<>m5wRdw6(@9#YFSWqpKfEE2M7BGg{nk zMBnVR|6s-1c(X$HC4}KOEEO&x9%ny=0idZZz%lJr^Dn}~)=Ta@u^vdPogRvBu2Y6{ zPF#YWH1;oJakZqN)WDX;U3z{1lypC;ib3m2g39^K>T9ZI)QO{69TU!GTOh~vqctn3 zh(09g!aP0HFrC&h@o?X#S({|#z(tM&@rrU-Ni zxC@bm5aR)m>sH?mZ@7!otL@3)-YOl#W21OeevEN(jd`)o}| zMBv-FH*~>0-&2x;%Cl4L-Uf}ox`?cegZ9wDnx+Etuk_O%=!Bff+Ig4-*GS;|eR51G zp0eeW0y>qWjczq8f2b07m2X!8L!1u_@C_V5yGkDIF9MfsLkvEwhc`BkTLxddzXZSD)}Zt8Dw4wIPypfewYiEu0->wWu?=8Mw0G_Un!3wNxNRiUl*A1p4#^ zdvD=DekKm>W%RRv>76`f@vcc!eOaTiNK|3`O5fEox}*4SkQPLt3;t;I3JkpV`_PP4 zOvHkA4a7Qg3BE^++Gy9Kz6WnuN0%THi->RJ_SQ8nhxbN482rhwd;3z8Yo3Wu)T|#V zSp3fDe0Yp3)%R@2V(4LZd<^j|hyBN2_U)!09;sT| zx|2HSO_DTy``lASFhYuo5_P-!T23CH&wMqJR1mcuYX6RiKU&|JP8JTR7$?+{W&*J-fC*H z>}#H1O9)k`3GV%CI(w#Lp^76HoI%JheWpqr; zho`w0pY-e&yMoUSMFbc#iL$yWyC;!g6=K-l!}NK_*93nbR)$QyMQBUu^OscBWP*hW z@{bgUu%;yh(qyG{o953^290sqPJK1kL}GF)GUsj?!dKn)qOJcoWl$s|5`8Aw+Rn+0 zE^UH*Ve);3T-}_wZ!~6ysBXH~JE^~sh>WB#P+FWtol{2^W3nIPEpSh|UA53nw$E{ zTvVE9oYT4cOtK}lZIG5WNaM9r?|#I0Ng?<&>=Rn9z6rBAC{J$a=Use7Q-J<< zP}v}WK`m){f^^0i>Gw~#j*hd?e%xPPc2u@d&G#RjIoMqjuIP~iQq~d*BOlj6f$Lr9sn_u&AGY^v^MX2|daL#W( zLE)R=%s0MbpPw;~2S~R`gy)qFxI+?AbIXst8rq9NMc|^=9_Pd(rBcK!&VcxqoIJOl z#NoI7l$M8}xI(7q%jNUfj9Z@^iHRhGc<-xZhzyjJ&(7-FSvk;(~1^gF|>lkg2iu|X_X|Yn+SEk0`C8RN89TRWtND3x=c6=mtmQSOYCJzla!=@2? zGr%5zFNqbWfh$*?S0h`IkEYdQS&_$*k-Yd;S;~3-`Z}4b1K4K3X_q^@(vEZLzyFaV Am;e9( literal 0 HcmV?d00001 diff --git a/Assets/Hangman/Images/Hangman10.png.meta b/Assets/Hangman/Images/Hangman10.png.meta new file mode 100644 index 0000000..341e63d --- /dev/null +++ b/Assets/Hangman/Images/Hangman10.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: fbabb766db1873c4bb1e0b4c3c623437 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Hangman/Images/Hangman2.png b/Assets/Hangman/Images/Hangman2.png new file mode 100644 index 0000000000000000000000000000000000000000..dce056074ac6cc0e6be4710559f793f09886af9a GIT binary patch literal 3753 zcmeAS@N?(olHy`uVBq!ia0y~yU}<1rVCvvt0*bVIibVk_#^NA%Cx&(BWL^R}Ea{HE zjtmSN`?>!lvI6;>1s;*b3=BdgAk26#O}>JGfzQs<#WAEJ?(Lnxtd;-)21oVp`#-A) zL^37X=T2GstB~(Qz^sRsyQ_iP3-+%6%*nuT;3$g(1A~K010w^2%P4b%ghNW%cNxYV zH_rUwySJC&!_1rm3`*;N{rXtW#$eaZz|6qV!C}C_(9ki;91VxjL@=5eMoWUx5^=OT zpkB3j;>|ltra#8U&sqE*EM_}!_GSZP{z`qh;|p0IJVR-NeVF#z#HP=g`@q?sob146 z+7UJ$1_lMC1Hks164NMiG#o|~!DwcnR!LAObN`!~EW6Y4Ta$t13xlVtpUXO@geCwR CGC=46 literal 0 HcmV?d00001 diff --git a/Assets/Hangman/Images/Hangman2.png.meta b/Assets/Hangman/Images/Hangman2.png.meta new file mode 100644 index 0000000..31c7a0e --- /dev/null +++ b/Assets/Hangman/Images/Hangman2.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 4b2c8d43057b806489e9a02ed87a2db0 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Hangman/Images/Hangman3.png b/Assets/Hangman/Images/Hangman3.png new file mode 100644 index 0000000000000000000000000000000000000000..3a96877daeffa5b6313df338d430163565c7daa2 GIT binary patch literal 3786 zcmeAS@N?(olHy`uVBq!ia0y~yU}<1rVCvvt0*bVIibVk_#^NA%Cx&(BWL^R}Ea{HE zjtmSN`?>!lvI6;>1s;*b3=BdgAk26#O}>JGfiK?E#WAEJ?(H4NtRn^j437T){-?7F zO;+Ws4oQBz>h!t0Zi_CS+I-ClsQ#Q&Ap*M?b)0Md^uSRF>{0s9_W5O`nDpIafby; z8*R^1E8gvom$E*1RMWx?ti~RVR%WAx*J$B2T6oc-@G6v<|J23meQT%^sE^9v>FVdQ I&MBb@0Q{=KGXMYp literal 0 HcmV?d00001 diff --git a/Assets/Hangman/Images/Hangman3.png.meta b/Assets/Hangman/Images/Hangman3.png.meta new file mode 100644 index 0000000..5a2753c --- /dev/null +++ b/Assets/Hangman/Images/Hangman3.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: fa77106b3b6d45a4f8c6c01d26868bd6 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Hangman/Images/Hangman4.png b/Assets/Hangman/Images/Hangman4.png new file mode 100644 index 0000000000000000000000000000000000000000..8847af8a7346ba22cf9dcda62bfe11602da6fc08 GIT binary patch literal 4217 zcmeAS@N?(olHy`uVBq!ia0y~yU}<1rVCvvt0*bVIibVk_#^NA%Cx&(BWL^R}Ea{HE zjtmSN`?>!lvI6;>1s;*b3=BdgAk26#O}>JGL4eQG#WAEJ?(N-+ez(0u94`L)_uqc` z3$?63r#?z@VTs${Zo# zaQSJ`&RC`mn=@yv6Q8%2;ln%@35O^CwS_77#29Z()$L&TFx`(WAsjU{{uQzDG{pW? zmSLE<`>?Cre)fm^7y^tKnHd;5I1CsV8afyT74t;N&X~OE3~w@LExUd7zfE2IyLWwe z3Y!^jG&3-FaBNVX(Z4SJjt;}NByJ^!{D;bWuU);~KEFnfp$3>EEOxH_l)1W;p(34$ zr{VG~<(c0igd4s;`3(+f2&x`vyZ*q9S68QBha)<`-TKiqO?^HmcG z25wFRhI0=hYwxZzTY8Wo!nc9ZV9%y~>wq$^fuVcs+V$&Gf!bJs+785p#)nJsG`tr| zV3^|-79alcG^2qPP-2B#y08Apg~!EBS(qP4f-KlmAd$+)cEAbf3q{$QQz;y52d1+~ zFrv0*=oF1LoYfo4ExWtbwu{WwRd7 zkL_SMBb)#%G6WgffCZ0W0>g%-yJI{08W}&#WMEEEDYt!mMwB5LD2}9rAhYL4eH>dt z2GEj5-^(Stt$KFrdm1u5AFs@P*Ch$b?}NfgEmmE?YjAl zUrY(IKqDll@Gjd2j=BP&^HMp7d8)U~0!o2Que9M_=qvT+rqV0!hNo)z(hR-3@G>RvgH2&z zNIw9KkF literal 0 HcmV?d00001 diff --git a/Assets/Hangman/Images/Hangman4.png.meta b/Assets/Hangman/Images/Hangman4.png.meta new file mode 100644 index 0000000..94183b7 --- /dev/null +++ b/Assets/Hangman/Images/Hangman4.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 9a12543b28aeaea45a226d1976ce99c5 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Hangman/Images/Hangman5.png b/Assets/Hangman/Images/Hangman5.png new file mode 100644 index 0000000000000000000000000000000000000000..8dac15574a58131f13d11e4f9b38bd26321357df GIT binary patch literal 4239 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 literal 0 HcmV?d00001 diff --git a/Assets/Hangman/Images/Hangman7.png.meta b/Assets/Hangman/Images/Hangman7.png.meta new file mode 100644 index 0000000..1601d61 --- /dev/null +++ b/Assets/Hangman/Images/Hangman7.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 790b187dfb9617e4aa12c791a8707efc +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Hangman/Images/Hangman8.png b/Assets/Hangman/Images/Hangman8.png new file mode 100644 index 0000000000000000000000000000000000000000..6c912a84d047177e0165ca12198f1621012f9c4d GIT binary patch literal 4591 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 + /// The display for player 1 + /// + public RawImage display1; + + /// + /// The display for player 2 + /// + public RawImage display2; + + /// + /// We use a different awake, since we dont want the camera to start immediatelly + /// + void Awake() + { + WebCamDevice device = WebCamTexture.devices[camdex]; + tex = new WebCamTexture(device.name); + display.texture = tex; + } + + /// + /// Hangman uses two different webcam_textures, we need to be able to toggle between them + /// + public void Switch_texture() + { + if(display == display1) + { + display = display2; + } + else + { + display = display1; + } + // Give the webcamTexture to the new webcam + display.texture = tex; + } + + /// + /// Scene changing is implemented here to avoid problems with webcam + /// + public new void GotoThemeSelection() + { + //minigameList.GetIndexInMinigameList(MinigameIndex.HANGMAN); + if (tex != null) + { + if (tex.isPlaying) + { + display.texture = null; + tex.Stop(); + tex = null; + } + } + SystemController.GetInstance().BackToPreviousScene(); + } +} diff --git a/Assets/Hangman/Scripts/HangManWebcam.cs.meta b/Assets/Hangman/Scripts/HangManWebcam.cs.meta new file mode 100644 index 0000000..de815e7 --- /dev/null +++ b/Assets/Hangman/Scripts/HangManWebcam.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a62d2b8bded916443835dc19010b83c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Hangman/Scripts/HangmanGameController.cs b/Assets/Hangman/Scripts/HangmanGameController.cs new file mode 100644 index 0000000..a131a93 --- /dev/null +++ b/Assets/Hangman/Scripts/HangmanGameController.cs @@ -0,0 +1,709 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using System.Linq; +using UnityEngine; +using UnityEngine.UI; +using TMPro; + +public class HangmanGameController : MonoBehaviour +{ + /// + /// The scriptable with all the themes, will be used to select a random word for hangman. + /// The spellingthemeList will be used for the words. + /// + public ThemeList themelist; + + /// + /// The word that is currently being spelled + /// + private string currentWord; + + /// + /// All of the words that can be used in this session + /// + private string[] words; + + /// + /// This integer holds the total amount of wrong guesses the player has made + /// + private int wrongs; + + /// + /// This integer holds the total amount of times a user can be wrong to lose. + /// + private int maxWrong = 9; + + /// + /// This integer holds the amount of correct letters of the word that the user has guessed + /// + private int corrects; + + /// + /// This integer holds the length of the word that needs to be guessed, game ends in victory if corrects == word_length + /// + private int wordLength; + + /// + /// Indicates if the game is still going + /// + private bool gameEnded; + + /// + /// Letter prefab + /// + public GameObject letterPrefab; + + /// + /// Reference to letter prefab + /// + public Transform letterContainer; + + /// + /// The Image component for displaying the appropriate sprite + /// + public Image hangmanImage; + + /// + /// The GameObjects representing the letters + /// + private List letters = new List(); + + /// + /// This scriptable holds all the images for the different stages of hangman + /// + public HangmanImages images; + + /// + /// This initially empty list holds all the previous guesses that the user has made, as to not allow repeated msitakes + /// + private List guesses; + + /// + /// This lists holds all valid guesses that the user can make + /// + private List guessables = new List { 'a', 'z', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'q', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'w', 'x', 'c', 'v', 'b', 'n' }; + + // The following attributes are necessary for multiplayer interactions + /// + /// The panel holding the actual game + /// + public GameObject gamePanel; + + /// + /// The panel holding the player-selection screen + /// + public GameObject playerPanel; + + /// + /// The panel holding the screen where player 1 can input their word + /// + public GameObject inputPanel; + + /// + /// This textfield holds the word that player 1 is typing + /// + public TMP_Text inputTextField; + + /// + /// This int shows what mode we are in, used in update: 0 is playerselect, 1 is wordInput, 2 is the actual game + /// + private int mode; + + /// + /// We give the controller access to the webcam so that it can toggle between the two displays effectivelly. + /// + public HangManWebcam webcam; + + // The following attributes are necessary to finish and gameover + + /// + /// "Game over" or "You win!" + /// + public TMP_Text endText; + + /// + /// The game over panel + /// + public GameObject gameEndedPanel; + + /// + /// Button for restarting the game + /// + public Button replayButton; + + /// + /// Letters + /// + public TMP_Text lettersText; + + /// + /// Letters ( right | wrong ) + /// + public TMP_Text lettersRightText; + public TMP_Text lettersWrongText; + + /// + /// Accuracy + /// + public TMP_Text accuracyText; + + /// + /// Words + /// + public TMP_Text wordsText; + + /// + /// Score + /// + public TMP_Text scoreText; + + // The following attributes are necessary for user interaction + + /// + /// Reference to the minigame ScriptableObject + /// + public Minigame minigame; + + /// + /// Reference to the user list to access the current user + /// + public UserList userList; + + /// + /// Reference to the current user + /// + private User user; + + /// + /// Reference to the minigame progress of the current user + /// + private Progress progress = null; + + /// + /// Reference to the scoreboard + /// + public Transform Scoreboard; + + /// + /// Reference to the entries grid + /// + public Transform EntriesGrid; + + /// + /// The GameObjects representing the letters + /// + private List entries = new List(); + + /// + /// Reference to the ScoreboardEntry prefab + /// + public GameObject scoreboardEntry; + + // Start is called before the first frame update + void Start() + { + // Make sure the mode starts at zero + mode = 0; + + // Make sure that the webcam is turned off + webcam.StopCam(); + + // Make sure that only the player-selection panel is the one shown + gamePanel.SetActive(false); + inputPanel.SetActive(false); + playerPanel.SetActive(true); + + // Create entry in current user for keeping track of progress + user = userList.GetCurrentUser(); + Progress progress = user.GetMinigameProgress(minigame.index); + if (progress == null) + { + progress = new Progress(); + progress.AddOrUpdate("minigameIndex", minigame.index); + progress.AddOrUpdate>("highestScores", new List()); + progress.AddOrUpdate>("latestScores", new List()); + user.minigames.Add(progress); + } + userList.Save(); + } + + /// + /// Hangman starts by asking the amount of players, so this function holds all the info needed to start the actual game + /// + public void StartGame() + { + // Change the mode + mode = 2; + + // Activate the right panel + gamePanel.SetActive(true); + inputPanel.SetActive(false); + playerPanel.SetActive(false); + + // Reset values of parameters, so that the replaybutton works properly + corrects = 0; + wrongs = 0; + guesses = new List(); + // Display a test-word to test the functionality + wordLength = currentWord.Length; + gameEnded = false; + gameEndedPanel.SetActive(false); + + // Delete first, to make sure that the letters are empty + DeleteWord(); + DisplayWord(currentWord); + + replayButton.onClick.AddListener(Start); + // Call to display the first image, corresponding to a clean image. + ChangeSprite(); + } + + /// + /// This function is called when the "two player"-button is clicked, it goed to the input-screen + /// + public void GoToInput() + { + // Change the mode + mode = 1; + + // Initialise the word to an empty String + currentWord = ""; + inputTextField.text = currentWord.ToString(); + + // Switch to the P1-display and Turn the webcam on + webcam.Switch_texture(); + webcam.PlayCam(); + + // Activate the right panel + gamePanel.SetActive(false); + inputPanel.SetActive(true); + playerPanel.SetActive(false); + } + /// + /// This function is called if singleplayer is selected, we generate a random word for the player and start the game. + /// + public void SinglePlayer() + { + // This word is used for testing before dynamic word-fetching is added + PickRandomWord(); + + // Turn the webcam on + webcam.PlayCam(); + + StartGame(); + } + /// + /// Randomly select a word from a randomly selected theme, use this word for the hangman game for singleplayer. + /// + private void PickRandomWord() + { + // Get a random index for the themes + // Then get a random index for a word to pull + + // First get random index for the themes + int amountThemes = themelist.themes.Count; + System.Random r = new System.Random(); + int themeIndex = r.Next(amountThemes); + + // Check how many words are in this theme + int amountWords = themelist.themes[themeIndex].learnables.Count; + int wordIndex = r.Next(amountWords); + + // Take the word, but lowercase it. + currentWord = themelist.themes[themeIndex].learnables[wordIndex].name.ToLower(); + } + + /// + /// This function starts the game after player 1 has entered their word, but only if its length >= 2. + /// + public void TwoPlayer() + { + if (currentWord.Length >= 2) + { + // Switch display to the P2-display + webcam.Switch_texture(); + + StartGame(); + } + } + + /// + /// Update is called once per frame + /// + public void Update() + { + if(mode == 1) + { + // We are in the word-input mode + // We want to show the user what they are typing + // Check to make sure the inputfield is not empty + if (Input.inputString != "") + { + char firstLetter = Input.inputString.ToLower()[0]; + if (Input.GetKey(KeyCode.Backspace)) + { + // Remove the last letter from the currentword + if(currentWord.Length > 0) + { + currentWord = currentWord.Substring(0, currentWord.Length - 1); + inputTextField.text = currentWord.ToString(); + } + } + else if (guessables.Contains(firstLetter)) + { + // Append the letter to the currentWord and display it to the user + currentWord = currentWord + firstLetter.ToString(); + inputTextField.text = currentWord.ToString(); + } + } + + } + + if (mode == 2) + { + // We are in the actual game + if (!gameEnded) + { + // Get keyboard input + // For the first input char given by the user, check if the letter is in the word that needs to be spelled. + + // Check to make sure the inputfield is not empty + if (Input.inputString != "") + { + char firstLetter = Input.inputString.ToLower()[0]; + // Check if the letter is a valid guess and that it has not been guessed before + if (!guesses.Contains(firstLetter) && guessables.Contains(firstLetter)) + { + if (currentWord.Contains(firstLetter)) + { + // The guess was correct, we can display all the letters that correspond to the guess + UpdateWord(firstLetter); + } + else + { + // The guess was wrong, the wrongs integer needs to be incremented + wrongs++; + + // For now, we will loop back to stage zero after we reach the losing stage 10 + wrongs = wrongs % 11; + + // Afterwards, the next stage needs to be displayed + ChangeSprite(); + } + + guesses.Add(firstLetter); + } + } + + if (corrects == wordLength) + { + // Victory + ActivateWin(); + } + else if (wrongs == maxWrong) + { + // You lost + ActivateGameOver(); + } + } + + } + } + /// + /// Change the image that is being displayed + /// + private void ChangeSprite() + { + + // Load the new sprite from the HangmanImages scriptable + Sprite sprite = images.hangmanStages[wrongs]; + + // Set the new sprite as the Image component's source image + hangmanImage.sprite = sprite; + } + /// + /// In this function, the letters of the word selected in DisplayWord are updated after a correct guess. + /// + /// The letter that needs to be updated + private void UpdateWord(char c) + { + for (int i = 0; i < currentWord.Length; i++) + { + if (currentWord[i] == c) + { + // Display the letter and change its background to green + Image background = letters[i].GetComponent(); + background.color = Color.green; + TMP_Text txt = letters[i].GetComponentInChildren(); + txt.text = Char.ToString(c); + + // You correctly guessed a letter + corrects++; + } + } + } + /// + /// This function returns the score that the user currently has + /// + /// The current score of the user + private int getScore() + { + // Scoring works as follows: + // You get 3 points for each letter in the word that is correctly guessed (corrects * 3) + // You get 9 points for each part of the hangman figure which is NOT displayed ((10 - wrongs) * 9) + + return 3 * corrects + (10 - wrongs) * 9; + } + + /// + /// Set score metrics + /// + private void SetScoreMetrics() + { + // Letters ( right | wrong ) total + lettersRightText.text = corrects.ToString(); + lettersWrongText.text = wrongs.ToString(); + lettersText.text = (corrects + wrongs).ToString(); + + // Accuracy + if (corrects + wrongs > 0) + { + accuracyText.text = ((corrects) * 100f / (corrects + wrongs)).ToString("#.##") + "%"; + } + else + { + accuracyText.text = "-"; + } + + + // The word that needed to be guessed + wordsText.text = currentWord.ToString(); + + // Score + scoreText.text = "Score: " + getScore().ToString(); + } + + // The following functions originate from Spellingbee + + /// + /// Delete all letter objects + /// + private void DeleteWord() + { + for (int i = 0; i < letters.Count; i++) + { + Destroy(letters[i]); + } + letters.Clear(); + } + + /// + /// Displays the word that needs to be spelled + /// + /// The word to display + private void DisplayWord(string word) + { + for (int i = 0; i < word.Length; i++) + { + // Create instance of prefab + GameObject instance = GameObject.Instantiate(letterPrefab, letterContainer); + letters.Add(instance); + + // Dynamically load appearance + Image background = instance.GetComponent(); + background.color = Color.red; + TMP_Text txt = instance.GetComponentInChildren(); + txt.text = Char.ToString(' '); + } + } + + /// + /// Randomly shuffle the list of words + /// + private void ShuffleWords() + { + for (int i = words.Length - 1; i > 0; i--) + { + // Generate a random index between 0 and i (inclusive) + int j = UnityEngine.Random.Range(0, i + 1); + + // Swap the values at indices i and j + (words[j], words[i]) = (words[i], words[j]); + } + } + + /// + /// Update and save the scores + /// + private void SaveScores() + { + // Calculate new score + int newScore = getScore(); + // Save the score as a tuple: < int score, string time ago> + Score score = new Score(); + score.scoreValue = newScore; + score.time = DateTime.Now.ToString(); + + // Save the new score + user = userList.GetCurrentUser(); + Progress progress = user.GetMinigameProgress(minigame.index); + + // Get the current list of scores + List latestScores = progress.Get>("latestScores"); + List highestScores = progress.Get>("highestScores"); + + // Add the new score + latestScores.Add(score); + highestScores.Add(score); + + // Sort the scores + highestScores.Sort((a, b) => b.scoreValue.CompareTo(a.scoreValue)); + + // Only save the top 10 scores, so this list doesn't keep growing endlessly + progress.AddOrUpdate>("latestScores", latestScores.Take(10).ToList()); + progress.AddOrUpdate>("highestScores", highestScores.Take(10).ToList()); + + userList.Save(); + } + + /// + /// Display win screen + /// + private void ActivateWin() + { + // @lukas stuff + DeleteWord(); + endText.text = "YOU WIN!"; + + SetScoreMetrics(); + + gameEndedPanel.SetActive(true); + gameEndedPanel.transform.SetAsLastSibling(); + + gameEnded = true; + + //Save the scores and show the scoreboard + SaveScores(); + SetScoreBoard(); + } + + /// + /// Displays the game over panel and score values + /// + private void ActivateGameOver() + { + DeleteWord(); + endText.text = "GAME OVER"; + + SetScoreMetrics(); + + gameEndedPanel.SetActive(true); + gameEndedPanel.transform.SetAsLastSibling(); + + gameEnded = true; + + // Save the scores and show the scoreboard + SaveScores(); + SetScoreBoard(); + } + + /// + /// Sets the scoreboard + /// + private void SetScoreBoard() + { + // Clean the previous scoreboard entries + for (int i = 0; i < entries.Count; i++) + { + Destroy(entries[i]); + } + entries.Clear(); + + // Instantiate new entries + // Get all scores from all users + List> allScores = new List>(); + foreach (User user in userList.GetUsers()) + { + // Get user's progress for this minigame + progress = user.minigames.Find((p) => p != null && p.Get("minigameIndex") == minigame.index); + if (progress != null) + { + // Add scores to dictionary + List scores = progress.Get>("highestScores"); + foreach (Score score in scores) + { + allScores.Add(new Tuple(user.username, score)); + } + } + } + + // Sort allScores based on Score.scoreValue + allScores.Sort((a, b) => b.Item2.scoreValue.CompareTo(a.Item2.scoreValue)); + + // Instantiate scoreboard entries + int rank = 1; + foreach (Tuple tup in allScores.Take(10)) + { + string username = tup.Item1; + Score score = tup.Item2; + + GameObject entry = Instantiate(scoreboardEntry, EntriesGrid); + entries.Add(entry); + // Set the player icon + entry.transform.Find("Image").GetComponent().sprite = userList.GetUserByUsername(username).avatar; + + // Set the player name + entry.transform.Find("PlayerName").GetComponent().text = username; + + // Set the score + entry.transform.Find("Score").GetComponent().text = score.scoreValue.ToString(); + + // Set the rank + entry.transform.Find("Rank").GetComponent().text = rank.ToString(); + + // Set the ago + // Convert the score.time to Datetime + DateTime time = DateTime.Parse(score.time); + DateTime currentTime = DateTime.Now; + TimeSpan diff = currentTime.Subtract(time); + + string formatted; + if (diff.Days > 0) + { + formatted = $"{diff.Days}d "; + } + else if (diff.Hours > 0) + { + formatted = $"{diff.Hours}h "; + } + else if (diff.Minutes > 0) + { + formatted = $"{diff.Minutes}m "; + } + else + { + formatted = "now"; + } + + entry.transform.Find("Ago").GetComponent().text = formatted; + + + // Alternating colors looks nice + if (rank % 2 == 0) + { + Image image = entry.transform.GetComponent(); + image.color = new Color(image.color.r, image.color.g, image.color.b, 0f); + } + + // Make new score stand out + if (diff.TotalSeconds < 1) + { + Image image = entry.transform.GetComponent(); + image.color = new Color(0, 229, 255, 233); + } + + rank++; + } + } +} diff --git a/Assets/Hangman/Scripts/HangmanGameController.cs.meta b/Assets/Hangman/Scripts/HangmanGameController.cs.meta new file mode 100644 index 0000000..64564c9 --- /dev/null +++ b/Assets/Hangman/Scripts/HangmanGameController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2db44635e0eb1e9429a2e6195785364d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Hangman/Scripts/HangmanImages.cs b/Assets/Hangman/Scripts/HangmanImages.cs new file mode 100644 index 0000000..0cc77a1 --- /dev/null +++ b/Assets/Hangman/Scripts/HangmanImages.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Video; + +/// +/// Class for holding all stage images for the hangman minigame +/// +[CreateAssetMenu(menuName = "Create new Scriptable/HangmanImages")] +public class HangmanImages : ScriptableObject +{ + /// + /// This list will hold all the images for the stages of hangman. + /// + public List hangmanStages = new List(); +} \ No newline at end of file diff --git a/Assets/Hangman/Scripts/HangmanImages.cs.meta b/Assets/Hangman/Scripts/HangmanImages.cs.meta new file mode 100644 index 0000000..1f1643e --- /dev/null +++ b/Assets/Hangman/Scripts/HangmanImages.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d9c124cfcaadaf040b00ede50b1b022c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Hangman/Scripts/HangmanScripts.asmdef b/Assets/Hangman/Scripts/HangmanScripts.asmdef deleted file mode 100644 index 6de379d..0000000 --- a/Assets/Hangman/Scripts/HangmanScripts.asmdef +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "HangmanScripts" -} diff --git a/Assets/Hangman/Scripts/WebCam.cs b/Assets/Hangman/Scripts/WebCam.cs new file mode 100644 index 0000000..7809b77 --- /dev/null +++ b/Assets/Hangman/Scripts/WebCam.cs @@ -0,0 +1,95 @@ +using UnityEngine.UI; +using UnityEngine; + +public class WebCam : MonoBehaviour +{ + /// + /// Index of the current camera + /// + protected int camdex = 0; + + /// + /// Texture to paste on the display + /// + protected WebCamTexture tex; + + /// + /// Display for the video feed + /// + public RawImage display; + + /// + /// Setup the webcam correctly + /// + void Awake() + { + WebCamDevice device = WebCamTexture.devices[camdex]; + tex = new WebCamTexture(device.name); + display.texture = tex; + + tex.Play(); + } + + /// + /// Function to toggle between stopping and starting + /// + /* + public void toggle() + { + if (tex.isPlaying) + { + tex.Stop(); + } + else + { + tex.Play(); + } + } + */ + public void PlayCam() + { + if (!tex.isPlaying) tex.Play(); + } + + public void StopCam() + { + if (tex.isPlaying) tex.Stop(); + } + + /// + /// Swap webcam by cycling through the `WebCamTexture.devices` list + /// + public void SwapCam() + { + if (WebCamTexture.devices.Length > 0) + { + // Stop the old camera + display.texture = null; + tex.Stop(); + tex = null; + + // Find the new camera + camdex += 1; + camdex %= WebCamTexture.devices.Length; + + // Start the new camera + WebCamDevice device = WebCamTexture.devices[camdex]; + tex = new WebCamTexture(device.name); + display.texture = tex; + + tex.Play(); + } + } + + /// + /// Scene changing is implemented here to avoid problems with webcam + /// + public void GotoThemeSelection() + { + display.texture = null; + tex.Stop(); + tex = null; + + SystemController.GetInstance().BackToPreviousScene(); + } +} diff --git a/Assets/Hangman/Scripts/WebCam.cs.meta b/Assets/Hangman/Scripts/WebCam.cs.meta new file mode 100644 index 0000000..37b2cee --- /dev/null +++ b/Assets/Hangman/Scripts/WebCam.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5db51e2552e03de4b9e7e91b5746adbc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/users.json b/Assets/users.json index 8c8eea1..b573965 100644 --- a/Assets/users.json +++ b/Assets/users.json @@ -1 +1 @@ -{"currentUserIndex":0,"storedUsers":[{"username":"mettn","avatar":{"instanceID":25006},"playtime":0.0,"courses":[],"minigames":[{"entries":[{"key":"minigameIndex","bytes":[0,1,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,12,2,0,0,0,72,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,5,1,0,0,0,13,77,105,110,105,103,97,109,101,73,110,100,101,120,1,0,0,0,7,118,97,108,117,101,95,95,0,8,2,0,0,0,0,0,0,0,11]},{"key":"highestScores","bytes":[0,1,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,12,2,0,0,0,72,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,4,1,0,0,0,116,83,121,115,116,101,109,46,67,111,108,108,101,99,116,105,111,110,115,46,71,101,110,101,114,105,99,46,76,105,115,116,96,49,91,91,83,99,111,114,101,44,32,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,93,93,3,0,0,0,6,95,105,116,101,109,115,5,95,115,105,122,101,8,95,118,101,114,115,105,111,110,4,0,0,7,83,99,111,114,101,91,93,2,0,0,0,8,8,9,3,0,0,0,0,0,0,0,0,0,0,0,7,3,0,0,0,0,1,0,0,0,0,0,0,0,4,5,83,99,111,114,101,2,0,0,0,11]},{"key":"latestScores","bytes":[0,1,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,12,2,0,0,0,72,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,4,1,0,0,0,116,83,121,115,116,101,109,46,67,111,108,108,101,99,116,105,111,110,115,46,71,101,110,101,114,105,99,46,76,105,115,116,96,49,91,91,83,99,111,114,101,44,32,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,93,93,3,0,0,0,6,95,105,116,101,109,115,5,95,115,105,122,101,8,95,118,101,114,115,105,111,110,4,0,0,7,83,99,111,114,101,91,93,2,0,0,0,8,8,9,3,0,0,0,0,0,0,0,0,0,0,0,7,3,0,0,0,0,1,0,0,0,0,0,0,0,4,5,83,99,111,114,101,2,0,0,0,11]}]}]}]} \ No newline at end of file +{"currentUserIndex":0,"storedUsers":[{"username":"mettn","avatar":{"instanceID":25006},"playtime":0.0,"courses":[],"minigames":[{"entries":[{"key":"minigameIndex","bytes":[0,1,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,12,2,0,0,0,72,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,5,1,0,0,0,13,77,105,110,105,103,97,109,101,73,110,100,101,120,1,0,0,0,7,118,97,108,117,101,95,95,0,8,2,0,0,0,0,0,0,0,11]},{"key":"highestScores","bytes":[0,1,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,12,2,0,0,0,72,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,4,1,0,0,0,116,83,121,115,116,101,109,46,67,111,108,108,101,99,116,105,111,110,115,46,71,101,110,101,114,105,99,46,76,105,115,116,96,49,91,91,83,99,111,114,101,44,32,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,93,93,3,0,0,0,6,95,105,116,101,109,115,5,95,115,105,122,101,8,95,118,101,114,115,105,111,110,4,0,0,7,83,99,111,114,101,91,93,2,0,0,0,8,8,9,3,0,0,0,0,0,0,0,0,0,0,0,7,3,0,0,0,0,1,0,0,0,0,0,0,0,4,5,83,99,111,114,101,2,0,0,0,11]},{"key":"latestScores","bytes":[0,1,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,12,2,0,0,0,72,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,4,1,0,0,0,116,83,121,115,116,101,109,46,67,111,108,108,101,99,116,105,111,110,115,46,71,101,110,101,114,105,99,46,76,105,115,116,96,49,91,91,83,99,111,114,101,44,32,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,93,93,3,0,0,0,6,95,105,116,101,109,115,5,95,115,105,122,101,8,95,118,101,114,115,105,111,110,4,0,0,7,83,99,111,114,101,91,93,2,0,0,0,8,8,9,3,0,0,0,0,0,0,0,0,0,0,0,7,3,0,0,0,0,1,0,0,0,0,0,0,0,4,5,83,99,111,114,101,2,0,0,0,11]}]},{"entries":[{"key":"minigameIndex","bytes":[0,1,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,12,2,0,0,0,72,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,5,1,0,0,0,13,77,105,110,105,103,97,109,101,73,110,100,101,120,1,0,0,0,7,118,97,108,117,101,95,95,0,8,2,0,0,0,1,0,0,0,11]},{"key":"highestScores","bytes":[0,1,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,12,2,0,0,0,72,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,4,1,0,0,0,116,83,121,115,116,101,109,46,67,111,108,108,101,99,116,105,111,110,115,46,71,101,110,101,114,105,99,46,76,105,115,116,96,49,91,91,83,99,111,114,101,44,32,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,93,93,3,0,0,0,6,95,105,116,101,109,115,5,95,115,105,122,101,8,95,118,101,114,115,105,111,110,4,0,0,7,83,99,111,114,101,91,93,2,0,0,0,8,8,9,3,0,0,0,3,0,0,0,3,0,0,0,7,3,0,0,0,0,1,0,0,0,3,0,0,0,4,5,83,99,111,114,101,2,0,0,0,9,4,0,0,0,9,5,0,0,0,9,6,0,0,0,5,4,0,0,0,5,83,99,111,114,101,2,0,0,0,10,115,99,111,114,101,86,97,108,117,101,4,116,105,109,101,0,1,8,2,0,0,0,99,0,0,0,6,7,0,0,0,19,49,57,47,48,51,47,50,48,50,51,32,50,51,58,49,51,58,52,48,1,5,0,0,0,4,0,0,0,51,0,0,0,6,8,0,0,0,19,49,57,47,48,51,47,50,48,50,51,32,50,50,58,51,55,58,52,49,1,6,0,0,0,4,0,0,0,9,0,0,0,6,9,0,0,0,19,49,57,47,48,51,47,50,48,50,51,32,50,50,58,51,55,58,52,54,11]},{"key":"latestScores","bytes":[0,1,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,12,2,0,0,0,72,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,4,1,0,0,0,116,83,121,115,116,101,109,46,67,111,108,108,101,99,116,105,111,110,115,46,71,101,110,101,114,105,99,46,76,105,115,116,96,49,91,91,83,99,111,114,101,44,32,73,110,116,101,114,102,97,99,101,115,83,99,114,105,112,116,115,44,32,86,101,114,115,105,111,110,61,48,46,48,46,48,46,48,44,32,67,117,108,116,117,114,101,61,110,101,117,116,114,97,108,44,32,80,117,98,108,105,99,75,101,121,84,111,107,101,110,61,110,117,108,108,93,93,3,0,0,0,6,95,105,116,101,109,115,5,95,115,105,122,101,8,95,118,101,114,115,105,111,110,4,0,0,7,83,99,111,114,101,91,93,2,0,0,0,8,8,9,3,0,0,0,3,0,0,0,3,0,0,0,7,3,0,0,0,0,1,0,0,0,3,0,0,0,4,5,83,99,111,114,101,2,0,0,0,9,4,0,0,0,9,5,0,0,0,9,6,0,0,0,5,4,0,0,0,5,83,99,111,114,101,2,0,0,0,10,115,99,111,114,101,86,97,108,117,101,4,116,105,109,101,0,1,8,2,0,0,0,51,0,0,0,6,7,0,0,0,19,49,57,47,48,51,47,50,48,50,51,32,50,50,58,51,55,58,52,49,1,5,0,0,0,4,0,0,0,9,0,0,0,6,8,0,0,0,19,49,57,47,48,51,47,50,48,50,51,32,50,50,58,51,55,58,52,54,1,6,0,0,0,4,0,0,0,99,0,0,0,6,9,0,0,0,19,49,57,47,48,51,47,50,48,50,51,32,50,51,58,49,51,58,52,48,11]}]}]}]} \ No newline at end of file diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index a17bf9c..a5f647d 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -47,4 +47,7 @@ EditorBuildSettings: - enabled: 1 path: Assets/SpellingBee/Scenes/Game.unity guid: 652195ae9a0ff3ad18f6338db6a909bd + - enabled: 1 + path: Assets/Hangman/Scenes/Hangman.unity + guid: 5ddd59ce344ac51459725a4878330faf m_configObjects: {}