feat: map editor (#56)
| @@ -96,19 +96,6 @@ TextureImporter: | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: WebGL | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   spriteSheet: | ||||
|     serializedVersion: 2 | ||||
|     sprites: | ||||
| @@ -147,8 +134,7 @@ TextureImporter: | ||||
|     secondaryTextures: [] | ||||
|     spriteCustomMetadata: | ||||
|       entries: [] | ||||
|     nameFileIdTable: | ||||
|       RegularBlock01_0: 229215520534054086 | ||||
|     nameFileIdTable: {} | ||||
|   mipmapLimitGroupName:  | ||||
|   pSDRemoveMatte: 0 | ||||
|   userData:  | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: b51d2de513d090b4485816dbca782498 | ||||
| guid: e0426acdd6d763946bab617252a0f5aa | ||||
| TextureImporter: | ||||
|   internalIDToNameTable: | ||||
|   - first: | ||||
|       213: 6385790085498839582 | ||||
|     second: BlankSquare_0 | ||||
|       213: 1925945982471551178 | ||||
|     second: BlankSquare 1_0 | ||||
|   externalObjects: {} | ||||
|   serializedVersion: 13 | ||||
|   mipmaps: | ||||
| @@ -96,24 +96,11 @@ TextureImporter: | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: WebGL | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   spriteSheet: | ||||
|     serializedVersion: 2 | ||||
|     sprites: | ||||
|     - serializedVersion: 2 | ||||
|       name: BlankSquare_0 | ||||
|       name: BlankSquare 1_0 | ||||
|       rect: | ||||
|         serializedVersion: 2 | ||||
|         x: 0 | ||||
| @@ -128,8 +115,8 @@ TextureImporter: | ||||
|       physicsShape: [] | ||||
|       tessellationDetail: -1 | ||||
|       bones: [] | ||||
|       spriteID: e12ae58df32ee9850800000000000000 | ||||
|       internalID: 6385790085498839582 | ||||
|       spriteID: ac8becdbaa55aba10800000000000000 | ||||
|       internalID: 1925945982471551178 | ||||
|       vertices: [] | ||||
|       indices:  | ||||
|       edges: [] | ||||
| @@ -148,7 +135,7 @@ TextureImporter: | ||||
|     spriteCustomMetadata: | ||||
|       entries: [] | ||||
|     nameFileIdTable: | ||||
|       BlankSquare_0: 6385790085498839582 | ||||
|       BlankSquare 1_0: 1925945982471551178 | ||||
|   mipmapLimitGroupName:  | ||||
|   pSDRemoveMatte: 0 | ||||
|   userData:  | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/InGame/ButtonSkin/ExitButton.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 115 KiB | 
							
								
								
									
										156
									
								
								Assets/Resources/InGame/ButtonSkin/ExitButton.png.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,156 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: fa5971280ed90e04cafadbd76400bed2 | ||||
| TextureImporter: | ||||
|   internalIDToNameTable: | ||||
|   - first: | ||||
|       213: 6385790085498839582 | ||||
|     second: BlankSquare_0 | ||||
|   externalObjects: {} | ||||
|   serializedVersion: 13 | ||||
|   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 | ||||
|     flipGreenChannel: 0 | ||||
|   isReadable: 0 | ||||
|   streamingMipmaps: 0 | ||||
|   streamingMipmapsPriority: 0 | ||||
|   vTOnly: 0 | ||||
|   ignoreMipmapLimit: 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: 1 | ||||
|   nPOTScale: 0 | ||||
|   lightmap: 0 | ||||
|   compressionQuality: 50 | ||||
|   spriteMode: 2 | ||||
|   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 | ||||
|   swizzle: 50462976 | ||||
|   cookieLightType: 0 | ||||
|   platformSettings: | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: DefaultTexturePlatform | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: Standalone | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: WebGL | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   spriteSheet: | ||||
|     serializedVersion: 2 | ||||
|     sprites: | ||||
|     - serializedVersion: 2 | ||||
|       name: BlankSquare_0 | ||||
|       rect: | ||||
|         serializedVersion: 2 | ||||
|         x: 0 | ||||
|         y: 0 | ||||
|         width: 512 | ||||
|         height: 512 | ||||
|       alignment: 0 | ||||
|       pivot: {x: 0, y: 0} | ||||
|       border: {x: 0, y: 0, z: 0, w: 0} | ||||
|       customData:  | ||||
|       outline: [] | ||||
|       physicsShape: [] | ||||
|       tessellationDetail: -1 | ||||
|       bones: [] | ||||
|       spriteID: e12ae58df32ee9850800000000000000 | ||||
|       internalID: 6385790085498839582 | ||||
|       vertices: [] | ||||
|       indices:  | ||||
|       edges: [] | ||||
|       weights: [] | ||||
|     outline: [] | ||||
|     customData:  | ||||
|     physicsShape: [] | ||||
|     bones: [] | ||||
|     spriteID:  | ||||
|     internalID: 0 | ||||
|     vertices: [] | ||||
|     indices:  | ||||
|     edges: [] | ||||
|     weights: [] | ||||
|     secondaryTextures: [] | ||||
|     spriteCustomMetadata: | ||||
|       entries: [] | ||||
|     nameFileIdTable: | ||||
|       BlankSquare_0: 6385790085498839582 | ||||
|   mipmapLimitGroupName:  | ||||
|   pSDRemoveMatte: 0 | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/InGame/ButtonSkin/NewLevelButton 1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 13 KiB | 
							
								
								
									
										142
									
								
								Assets/Resources/InGame/ButtonSkin/NewLevelButton 1.png.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,142 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: ada92be653a1d184391ae7f1f61e32bb | ||||
| TextureImporter: | ||||
|   internalIDToNameTable: | ||||
|   - first: | ||||
|       213: 4829622404114481491 | ||||
|     second: NewLevelButton 1_0 | ||||
|   externalObjects: {} | ||||
|   serializedVersion: 13 | ||||
|   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 | ||||
|     flipGreenChannel: 0 | ||||
|   isReadable: 0 | ||||
|   streamingMipmaps: 0 | ||||
|   streamingMipmapsPriority: 0 | ||||
|   vTOnly: 0 | ||||
|   ignoreMipmapLimit: 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: 1 | ||||
|   nPOTScale: 0 | ||||
|   lightmap: 0 | ||||
|   compressionQuality: 50 | ||||
|   spriteMode: 2 | ||||
|   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 | ||||
|   swizzle: 50462976 | ||||
|   cookieLightType: 0 | ||||
|   platformSettings: | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: DefaultTexturePlatform | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: Standalone | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   spriteSheet: | ||||
|     serializedVersion: 2 | ||||
|     sprites: | ||||
|     - serializedVersion: 2 | ||||
|       name: NewLevelButton 1_0 | ||||
|       rect: | ||||
|         serializedVersion: 2 | ||||
|         x: 15 | ||||
|         y: 14 | ||||
|         width: 483 | ||||
|         height: 483 | ||||
|       alignment: 0 | ||||
|       pivot: {x: 0, y: 0} | ||||
|       border: {x: 0, y: 0, z: 0, w: 0} | ||||
|       customData:  | ||||
|       outline: [] | ||||
|       physicsShape: [] | ||||
|       tessellationDetail: -1 | ||||
|       bones: [] | ||||
|       spriteID: 3510384fcf3460340800000000000000 | ||||
|       internalID: 4829622404114481491 | ||||
|       vertices: [] | ||||
|       indices:  | ||||
|       edges: [] | ||||
|       weights: [] | ||||
|     outline: [] | ||||
|     customData:  | ||||
|     physicsShape: [] | ||||
|     bones: [] | ||||
|     spriteID:  | ||||
|     internalID: 0 | ||||
|     vertices: [] | ||||
|     indices:  | ||||
|     edges: [] | ||||
|     weights: [] | ||||
|     secondaryTextures: [] | ||||
|     spriteCustomMetadata: | ||||
|       entries: [] | ||||
|     nameFileIdTable: {} | ||||
|   mipmapLimitGroupName:  | ||||
|   pSDRemoveMatte: 0 | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/InGame/ButtonSkin/PlayButton.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 266 KiB | 
							
								
								
									
										156
									
								
								Assets/Resources/InGame/ButtonSkin/PlayButton.png.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,156 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: afd28cff37c57da4090ac3ddfdb8ee28 | ||||
| TextureImporter: | ||||
|   internalIDToNameTable: | ||||
|   - first: | ||||
|       213: -4781373940957465942 | ||||
|     second: exit_0 | ||||
|   externalObjects: {} | ||||
|   serializedVersion: 13 | ||||
|   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 | ||||
|     flipGreenChannel: 0 | ||||
|   isReadable: 0 | ||||
|   streamingMipmaps: 0 | ||||
|   streamingMipmapsPriority: 0 | ||||
|   vTOnly: 0 | ||||
|   ignoreMipmapLimit: 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: 1 | ||||
|   nPOTScale: 0 | ||||
|   lightmap: 0 | ||||
|   compressionQuality: 50 | ||||
|   spriteMode: 2 | ||||
|   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 | ||||
|   swizzle: 50462976 | ||||
|   cookieLightType: 0 | ||||
|   platformSettings: | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: DefaultTexturePlatform | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: Standalone | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: WebGL | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   spriteSheet: | ||||
|     serializedVersion: 2 | ||||
|     sprites: | ||||
|     - serializedVersion: 2 | ||||
|       name: exit_0 | ||||
|       rect: | ||||
|         serializedVersion: 2 | ||||
|         x: 31 | ||||
|         y: 31 | ||||
|         width: 298 | ||||
|         height: 298 | ||||
|       alignment: 0 | ||||
|       pivot: {x: 0, y: 0} | ||||
|       border: {x: 0, y: 0, z: 0, w: 0} | ||||
|       customData:  | ||||
|       outline: [] | ||||
|       physicsShape: [] | ||||
|       tessellationDetail: -1 | ||||
|       bones: [] | ||||
|       spriteID: aa2bbe6cbb525adb0800000000000000 | ||||
|       internalID: -4781373940957465942 | ||||
|       vertices: [] | ||||
|       indices:  | ||||
|       edges: [] | ||||
|       weights: [] | ||||
|     outline: [] | ||||
|     customData:  | ||||
|     physicsShape: [] | ||||
|     bones: [] | ||||
|     spriteID:  | ||||
|     internalID: 0 | ||||
|     vertices: [] | ||||
|     indices:  | ||||
|     edges: [] | ||||
|     weights: [] | ||||
|     secondaryTextures: [] | ||||
|     spriteCustomMetadata: | ||||
|       entries: [] | ||||
|     nameFileIdTable: | ||||
|       exit_0: -4781373940957465942 | ||||
|   mipmapLimitGroupName:  | ||||
|   pSDRemoveMatte: 0 | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/InGame/ButtonSkin/SettingsButton.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 33 KiB | 
							
								
								
									
										156
									
								
								Assets/Resources/InGame/ButtonSkin/SettingsButton.png.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,156 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: f34830d17508a4b478c164611c202e12 | ||||
| TextureImporter: | ||||
|   internalIDToNameTable: | ||||
|   - first: | ||||
|       213: 229215520534054086 | ||||
|     second: RegularBlock01_0 | ||||
|   externalObjects: {} | ||||
|   serializedVersion: 13 | ||||
|   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 | ||||
|     flipGreenChannel: 0 | ||||
|   isReadable: 0 | ||||
|   streamingMipmaps: 0 | ||||
|   streamingMipmapsPriority: 0 | ||||
|   vTOnly: 0 | ||||
|   ignoreMipmapLimit: 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: 1 | ||||
|   nPOTScale: 0 | ||||
|   lightmap: 0 | ||||
|   compressionQuality: 50 | ||||
|   spriteMode: 2 | ||||
|   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 | ||||
|   swizzle: 50462976 | ||||
|   cookieLightType: 0 | ||||
|   platformSettings: | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: DefaultTexturePlatform | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: Standalone | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: WebGL | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   spriteSheet: | ||||
|     serializedVersion: 2 | ||||
|     sprites: | ||||
|     - serializedVersion: 2 | ||||
|       name: RegularBlock01_0 | ||||
|       rect: | ||||
|         serializedVersion: 2 | ||||
|         x: 0 | ||||
|         y: 0 | ||||
|         width: 122 | ||||
|         height: 122 | ||||
|       alignment: 0 | ||||
|       pivot: {x: 0, y: 0} | ||||
|       border: {x: 0, y: 0, z: 0, w: 0} | ||||
|       customData:  | ||||
|       outline: [] | ||||
|       physicsShape: [] | ||||
|       tessellationDetail: -1 | ||||
|       bones: [] | ||||
|       spriteID: 6c4407e2d465e2300800000000000000 | ||||
|       internalID: 229215520534054086 | ||||
|       vertices: [] | ||||
|       indices:  | ||||
|       edges: [] | ||||
|       weights: [] | ||||
|     outline: [] | ||||
|     customData:  | ||||
|     physicsShape: [] | ||||
|     bones: [] | ||||
|     spriteID:  | ||||
|     internalID: 0 | ||||
|     vertices: [] | ||||
|     indices:  | ||||
|     edges: [] | ||||
|     weights: [] | ||||
|     secondaryTextures: [] | ||||
|     spriteCustomMetadata: | ||||
|       entries: [] | ||||
|     nameFileIdTable: | ||||
|       RegularBlock01_0: 229215520534054086 | ||||
|   mipmapLimitGroupName:  | ||||
|   pSDRemoveMatte: 0 | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
| @@ -1,5 +1,5 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: 1d7f8c8f8305efa4c8b78f4dd391c49b | ||||
| guid: 1b21bd4ccae70934eb86a3a2a6928e98 | ||||
| TextureImporter: | ||||
|   internalIDToNameTable: | ||||
|   - first: | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/InGame/Pause.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 14 KiB | 
							
								
								
									
										156
									
								
								Assets/Resources/InGame/Pause.png.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,156 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: 7fe0358ef92ff8a449d0bee123119795 | ||||
| TextureImporter: | ||||
|   internalIDToNameTable: | ||||
|   - first: | ||||
|       213: 2079131731516339571 | ||||
|     second: SaveButton_0 | ||||
|   externalObjects: {} | ||||
|   serializedVersion: 13 | ||||
|   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 | ||||
|     flipGreenChannel: 0 | ||||
|   isReadable: 0 | ||||
|   streamingMipmaps: 0 | ||||
|   streamingMipmapsPriority: 0 | ||||
|   vTOnly: 0 | ||||
|   ignoreMipmapLimit: 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: 1 | ||||
|   nPOTScale: 0 | ||||
|   lightmap: 0 | ||||
|   compressionQuality: 50 | ||||
|   spriteMode: 2 | ||||
|   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 | ||||
|   swizzle: 50462976 | ||||
|   cookieLightType: 0 | ||||
|   platformSettings: | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: DefaultTexturePlatform | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: Standalone | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: WebGL | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   spriteSheet: | ||||
|     serializedVersion: 2 | ||||
|     sprites: | ||||
|     - serializedVersion: 2 | ||||
|       name: SaveButton_0 | ||||
|       rect: | ||||
|         serializedVersion: 2 | ||||
|         x: 0 | ||||
|         y: 0 | ||||
|         width: 980 | ||||
|         height: 982 | ||||
|       alignment: 0 | ||||
|       pivot: {x: 0, y: 0} | ||||
|       border: {x: 0, y: 0, z: 0, w: 0} | ||||
|       customData:  | ||||
|       outline: [] | ||||
|       physicsShape: [] | ||||
|       tessellationDetail: -1 | ||||
|       bones: [] | ||||
|       spriteID: 375364a4b4f8adc10800000000000000 | ||||
|       internalID: 2079131731516339571 | ||||
|       vertices: [] | ||||
|       indices:  | ||||
|       edges: [] | ||||
|       weights: [] | ||||
|     outline: [] | ||||
|     customData:  | ||||
|     physicsShape: [] | ||||
|     bones: [] | ||||
|     spriteID:  | ||||
|     internalID: 0 | ||||
|     vertices: [] | ||||
|     indices:  | ||||
|     edges: [] | ||||
|     weights: [] | ||||
|     secondaryTextures: [] | ||||
|     spriteCustomMetadata: | ||||
|       entries: [] | ||||
|     nameFileIdTable: | ||||
|       SaveButton_0: 2079131731516339571 | ||||
|   mipmapLimitGroupName:  | ||||
|   pSDRemoveMatte: 0 | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
| @@ -1,5 +1,5 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: 7bbd15eb9b940f4c59561753a3d516ce | ||||
| guid: bcd6c4da7709ff9458a5784f7f807e30 | ||||
| TextureImporter: | ||||
|   internalIDToNameTable: | ||||
|   - first: | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/InGame/Play.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 56 KiB | 
							
								
								
									
										156
									
								
								Assets/Resources/InGame/Play.png.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,156 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: 6b64c942662170e44b2f80d605a405f4 | ||||
| TextureImporter: | ||||
|   internalIDToNameTable: | ||||
|   - first: | ||||
|       213: -2073137460773038770 | ||||
|     second: PauseIcon_0 | ||||
|   externalObjects: {} | ||||
|   serializedVersion: 13 | ||||
|   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 | ||||
|     flipGreenChannel: 0 | ||||
|   isReadable: 0 | ||||
|   streamingMipmaps: 0 | ||||
|   streamingMipmapsPriority: 0 | ||||
|   vTOnly: 0 | ||||
|   ignoreMipmapLimit: 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: 1 | ||||
|   nPOTScale: 0 | ||||
|   lightmap: 0 | ||||
|   compressionQuality: 50 | ||||
|   spriteMode: 2 | ||||
|   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 | ||||
|   swizzle: 50462976 | ||||
|   cookieLightType: 0 | ||||
|   platformSettings: | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: DefaultTexturePlatform | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: Standalone | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: WebGL | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   spriteSheet: | ||||
|     serializedVersion: 2 | ||||
|     sprites: | ||||
|     - serializedVersion: 2 | ||||
|       name: PauseIcon_0 | ||||
|       rect: | ||||
|         serializedVersion: 2 | ||||
|         x: 17 | ||||
|         y: 19 | ||||
|         width: 239 | ||||
|         height: 218 | ||||
|       alignment: 0 | ||||
|       pivot: {x: 0, y: 0} | ||||
|       border: {x: 0, y: 0, z: 0, w: 0} | ||||
|       customData:  | ||||
|       outline: [] | ||||
|       physicsShape: [] | ||||
|       tessellationDetail: -1 | ||||
|       bones: [] | ||||
|       spriteID: e455110a67cba33e0800000000000000 | ||||
|       internalID: -2073137460773038770 | ||||
|       vertices: [] | ||||
|       indices:  | ||||
|       edges: [] | ||||
|       weights: [] | ||||
|     outline: [] | ||||
|     customData:  | ||||
|     physicsShape: [] | ||||
|     bones: [] | ||||
|     spriteID:  | ||||
|     internalID: 0 | ||||
|     vertices: [] | ||||
|     indices:  | ||||
|     edges: [] | ||||
|     weights: [] | ||||
|     secondaryTextures: [] | ||||
|     spriteCustomMetadata: | ||||
|       entries: [] | ||||
|     nameFileIdTable: | ||||
|       PauseIcon_0: -2073137460773038770 | ||||
|   mipmapLimitGroupName:  | ||||
|   pSDRemoveMatte: 0 | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
| @@ -96,19 +96,6 @@ TextureImporter: | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: WebGL | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   spriteSheet: | ||||
|     serializedVersion: 2 | ||||
|     sprites: | ||||
| @@ -147,8 +134,7 @@ TextureImporter: | ||||
|     secondaryTextures: [] | ||||
|     spriteCustomMetadata: | ||||
|       entries: [] | ||||
|     nameFileIdTable: | ||||
|       CubePortalLabelled_0: -799402021850825835 | ||||
|     nameFileIdTable: {} | ||||
|   mipmapLimitGroupName:  | ||||
|   pSDRemoveMatte: 0 | ||||
|   userData:  | ||||
|   | ||||
| @@ -96,19 +96,6 @@ TextureImporter: | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: WebGL | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   spriteSheet: | ||||
|     serializedVersion: 2 | ||||
|     sprites: | ||||
| @@ -147,8 +134,7 @@ TextureImporter: | ||||
|     secondaryTextures: [] | ||||
|     spriteCustomMetadata: | ||||
|       entries: [] | ||||
|     nameFileIdTable: | ||||
|       ShipPortalLabelled_0: -1834338360412052916 | ||||
|     nameFileIdTable: {} | ||||
|   mipmapLimitGroupName:  | ||||
|   pSDRemoveMatte: 0 | ||||
|   userData:  | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/InGame/Remove.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 16 KiB | 
							
								
								
									
										142
									
								
								Assets/Resources/InGame/Remove.png.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,142 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: 79b56765ff1452848bd947d19c642244 | ||||
| TextureImporter: | ||||
|   internalIDToNameTable: | ||||
|   - first: | ||||
|       213: -6564193165698205349 | ||||
|     second: Remove_0 | ||||
|   externalObjects: {} | ||||
|   serializedVersion: 13 | ||||
|   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 | ||||
|     flipGreenChannel: 0 | ||||
|   isReadable: 0 | ||||
|   streamingMipmaps: 0 | ||||
|   streamingMipmapsPriority: 0 | ||||
|   vTOnly: 0 | ||||
|   ignoreMipmapLimit: 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: 1 | ||||
|   nPOTScale: 0 | ||||
|   lightmap: 0 | ||||
|   compressionQuality: 50 | ||||
|   spriteMode: 2 | ||||
|   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 | ||||
|   swizzle: 50462976 | ||||
|   cookieLightType: 0 | ||||
|   platformSettings: | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: DefaultTexturePlatform | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   - serializedVersion: 4 | ||||
|     buildTarget: Standalone | ||||
|     maxTextureSize: 2048 | ||||
|     resizeAlgorithm: 0 | ||||
|     textureFormat: -1 | ||||
|     textureCompression: 1 | ||||
|     compressionQuality: 50 | ||||
|     crunchedCompression: 0 | ||||
|     allowsAlphaSplitting: 0 | ||||
|     overridden: 0 | ||||
|     ignorePlatformSupport: 0 | ||||
|     androidETC2FallbackOverride: 0 | ||||
|     forceMaximumCompressionQuality_BC6H_BC7: 0 | ||||
|   spriteSheet: | ||||
|     serializedVersion: 2 | ||||
|     sprites: | ||||
|     - serializedVersion: 2 | ||||
|       name: Remove_0 | ||||
|       rect: | ||||
|         serializedVersion: 2 | ||||
|         x: 0 | ||||
|         y: 0 | ||||
|         width: 512 | ||||
|         height: 512 | ||||
|       alignment: 0 | ||||
|       pivot: {x: 0, y: 0} | ||||
|       border: {x: 0, y: 0, z: 0, w: 0} | ||||
|       customData:  | ||||
|       outline: [] | ||||
|       physicsShape: [] | ||||
|       tessellationDetail: -1 | ||||
|       bones: [] | ||||
|       spriteID: b59f289281d47e4a0800000000000000 | ||||
|       internalID: -6564193165698205349 | ||||
|       vertices: [] | ||||
|       indices:  | ||||
|       edges: [] | ||||
|       weights: [] | ||||
|     outline: [] | ||||
|     customData:  | ||||
|     physicsShape: [] | ||||
|     bones: [] | ||||
|     spriteID:  | ||||
|     internalID: 0 | ||||
|     vertices: [] | ||||
|     indices:  | ||||
|     edges: [] | ||||
|     weights: [] | ||||
|     secondaryTextures: [] | ||||
|     spriteCustomMetadata: | ||||
|       entries: [] | ||||
|     nameFileIdTable: {} | ||||
|   mipmapLimitGroupName:  | ||||
|   pSDRemoveMatte: 0 | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
| @@ -1,5 +1,5 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: 73b983a44d701df4bb6d8ceb94e05a2b | ||||
| guid: bdddba7e4ac5baa4e833a5e67122d0d3 | ||||
| DefaultImporter: | ||||
|   externalObjects: {} | ||||
|   userData:  | ||||
|   | ||||
| @@ -859,7 +859,7 @@ MonoBehaviour: | ||||
|       m_Calls: | ||||
|       - m_Target: {fileID: 1858033414} | ||||
|         m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp | ||||
|         m_MethodName: CreateLevel | ||||
|         m_MethodName: LevelEditor | ||||
|         m_Mode: 1 | ||||
|         m_Arguments: | ||||
|           m_ObjectArgument: {fileID: 0} | ||||
|   | ||||
| @@ -1164,7 +1164,7 @@ MonoBehaviour: | ||||
|   m_OnCullStateChanged: | ||||
|     m_PersistentCalls: | ||||
|       m_Calls: [] | ||||
|   m_Sprite: {fileID: -4781373940957465942, guid: 1d7f8c8f8305efa4c8b78f4dd391c49b, type: 3} | ||||
|   m_Sprite: {fileID: -4781373940957465942, guid: 1b21bd4ccae70934eb86a3a2a6928e98, type: 3} | ||||
|   m_Type: 0 | ||||
|   m_PreserveAspect: 0 | ||||
|   m_FillCenter: 1 | ||||
|   | ||||
							
								
								
									
										6875
									
								
								Assets/Scenes/LevelEditorScene.unity
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										7
									
								
								Assets/Scenes/LevelEditorScene.unity.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,7 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: 73b983a44d701df4bb6d8ceb94e05a2b | ||||
| DefaultImporter: | ||||
|   externalObjects: {} | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
| @@ -544,6 +544,7 @@ MonoBehaviour: | ||||
|   normalMinYFollow: 2 | ||||
|   shipMinYFollow: 6 | ||||
|   smoothSpeed: 5 | ||||
|   isPlaying: 1 | ||||
| --- !u!1 &521952199 | ||||
| GameObject: | ||||
|   m_ObjectHideFlags: 0 | ||||
| @@ -6221,7 +6222,7 @@ MonoBehaviour: | ||||
|   m_OnCullStateChanged: | ||||
|     m_PersistentCalls: | ||||
|       m_Calls: [] | ||||
|   m_Sprite: {fileID: -2073137460773038770, guid: 7bbd15eb9b940f4c59561753a3d516ce, type: 3} | ||||
|   m_Sprite: {fileID: -2073137460773038770, guid: bcd6c4da7709ff9458a5784f7f807e30, type: 3} | ||||
|   m_Type: 0 | ||||
|   m_PreserveAspect: 0 | ||||
|   m_FillCenter: 1 | ||||
| @@ -7317,7 +7318,6 @@ MonoBehaviour: | ||||
|   levelsLoader: {fileID: 0} | ||||
|   audioSource: {fileID: 1999482188} | ||||
|   progressionText: {fileID: 245275149} | ||||
|   groundWidth: 1 | ||||
| --- !u!4 &1999482187 | ||||
| Transform: | ||||
|   m_ObjectHideFlags: 0 | ||||
|   | ||||
							
								
								
									
										20
									
								
								Assets/Scripts/CameraController.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,20 @@ | ||||
| using UnityEngine; | ||||
|  | ||||
| public class CameraController : MonoBehaviour | ||||
| { | ||||
|     public float moveSpeed = 10f; | ||||
|  | ||||
|     void Update() | ||||
|     { | ||||
|         float horizontalInput = Input.GetAxisRaw("Horizontal"); // ← → ou A D | ||||
|         float verticalInput = Input.GetAxisRaw("Vertical");     // ↑ ↓ ou W S | ||||
|  | ||||
|         Vector3 movement = new Vector3( | ||||
|             horizontalInput * moveSpeed * Time.deltaTime, | ||||
|             verticalInput * moveSpeed * Time.deltaTime, | ||||
|             0f | ||||
|         ); | ||||
|  | ||||
|         Camera.main.transform.position += movement; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										2
									
								
								Assets/Scripts/CameraController.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,2 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: 74af3e3f2c02bde43b24c2f56589d071 | ||||
| @@ -42,7 +42,10 @@ public class NormalGameMode : IGameMode | ||||
|     { | ||||
|         player.RigidBody.linearVelocity = new Vector2(player.RigidBody.linearVelocity.x, 0); | ||||
|         player.RigidBody.AddForce(Vector2.up * JumpForce, ForceMode2D.Impulse); | ||||
|         player.LevelsLoader.IncreaseTotalJumps(); | ||||
|         if (player.LevelsLoader != null) | ||||
|         { | ||||
|             player.LevelsLoader.IncreaseTotalJumps(); | ||||
|         } | ||||
|         isRotating = true; | ||||
|         targetRotationAngle = player.transform.eulerAngles.z - 90f; | ||||
|     } | ||||
|   | ||||
| @@ -59,7 +59,10 @@ public class ShipGameMode : IGameMode | ||||
|     { | ||||
|         player.RigidBody.linearVelocity = new Vector2(player.RigidBody.linearVelocity.x, 0); | ||||
|         player.RigidBody.AddForce(Vector2.up * JumpForce, ForceMode2D.Impulse); | ||||
|         player.LevelsLoader.IncreaseTotalJumps(); | ||||
|         if (player.LevelsLoader != null) | ||||
|         { | ||||
|             player.LevelsLoader.IncreaseTotalJumps(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void OnCollisionEnter(Player player, Collision2D collision) | ||||
|   | ||||
| @@ -5,7 +5,6 @@ using System.Collections.Generic; | ||||
| public class LevelEditor : MonoBehaviour | ||||
| { | ||||
|     [Header("Placement")] | ||||
|     public Transform mapParent; | ||||
|     private GameObject currentBlock; | ||||
|     private bool isPlacingBlock = false; | ||||
|     private Vector3 currentScale = new Vector3(1f, 1f, 1); | ||||
| @@ -46,6 +45,12 @@ public class LevelEditor : MonoBehaviour | ||||
|  | ||||
|         Transform container = blockGroupContainer; | ||||
|  | ||||
|         if (container == null || buttonPrefabTemplate == null) | ||||
|         { | ||||
|             Debug.LogError("UI Container ou prefab de bouton manquant."); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         int start = currentPage * buttonsPerPage; | ||||
|         int end = Mathf.Min(start + buttonsPerPage, blockPrefabs.Count); | ||||
|  | ||||
| @@ -76,13 +81,9 @@ public class LevelEditor : MonoBehaviour | ||||
|  | ||||
|             string prefabName = blockPrefabs[i].name.ToLower(); | ||||
|             if (prefabName.Contains("smallspike") || prefabName.Contains("smallobstacle")) | ||||
|             { | ||||
|                 icon.GetComponent<RectTransform>().sizeDelta = new Vector2(50, 25); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 icon.GetComponent<RectTransform>().sizeDelta = new Vector2(50, 50); | ||||
|             } | ||||
|  | ||||
|             GameObject prefab = blockPrefabs[i]; | ||||
|             button.GetComponent<Button>().onClick.AddListener(() => SelectPrefab(prefab)); | ||||
| @@ -93,9 +94,7 @@ public class LevelEditor : MonoBehaviour | ||||
|     void ClearCurrentButtons() | ||||
|     { | ||||
|         foreach (var button in currentButtons) | ||||
|         { | ||||
|             Destroy(button); | ||||
|         } | ||||
|  | ||||
|         currentButtons.Clear(); | ||||
|     } | ||||
| @@ -103,6 +102,7 @@ public class LevelEditor : MonoBehaviour | ||||
|     public void NextPage() | ||||
|     { | ||||
|         int maxPage = 3; | ||||
|         Debug.Log(currentPage); | ||||
|         if (currentPage < maxPage - 1) | ||||
|         { | ||||
|             currentPage++; | ||||
| @@ -112,6 +112,7 @@ public class LevelEditor : MonoBehaviour | ||||
|  | ||||
|     public void PreviousPage() | ||||
|     { | ||||
|         Debug.Log(currentPage); | ||||
|         if (currentPage > 0) | ||||
|         { | ||||
|             currentPage--; | ||||
| @@ -121,49 +122,38 @@ public class LevelEditor : MonoBehaviour | ||||
|  | ||||
|     void SelectPrefab(GameObject prefab) | ||||
|     { | ||||
|         if (isPlacingBlock) | ||||
|         { | ||||
|             return; | ||||
|         } | ||||
|         if (isPlacingBlock) return; | ||||
|  | ||||
|         string name = prefab.name.ToLower(); | ||||
|  | ||||
|         if (name.Contains("portal")) | ||||
|         { | ||||
|             currentScale = new Vector3(0.5f, 0.5f, 1); | ||||
|         } | ||||
|         else if (name.Contains("small")) | ||||
|         { | ||||
|             currentScale = new Vector3(0.15f, 0.07f, 1); | ||||
|         } | ||||
|         else if (name.Contains("spike")) | ||||
|         { | ||||
|             currentScale = new Vector3(0.15f, 0.15f, 1); | ||||
|         } | ||||
|         else if (name.Contains("block")) | ||||
|         { | ||||
|  | ||||
|             currentScale = new Vector3(0.2f, 0.2f, 1); | ||||
|         } | ||||
|         else if (name.Contains("bonus")) | ||||
|         { | ||||
|             currentScale = new Vector3(0.3f, 0.3f, 1); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             currentScale = new Vector3(1f, 1f, 1); | ||||
|         } | ||||
|  | ||||
|         InstantiateAndPrepare(prefab, currentScale); | ||||
|     } | ||||
|  | ||||
|     void Update() | ||||
|     { | ||||
|         // Déplacement de l'objet en cours de placement | ||||
|         if (isPlacingBlock && currentBlock != null) | ||||
|         { | ||||
|             Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); | ||||
|             currentBlock.transform.position = new Vector3(Mathf.Round(mousePos.x), Mathf.Round(mousePos.y), -1); | ||||
|  | ||||
|             if (currentBlock != null && Input.GetKeyDown(KeyCode.R)) | ||||
|             { | ||||
|                 HandleBlockRotation(); // ✅ Nouvelle rotation | ||||
|             } | ||||
|  | ||||
|             if (!currentBlock.name.ToLower().Contains("portal")) | ||||
|             { | ||||
|                 float scroll = Input.GetAxis("Mouse ScrollWheel"); | ||||
| @@ -185,19 +175,40 @@ public class LevelEditor : MonoBehaviour | ||||
|  | ||||
|                 if (overlaps.Length > 1) | ||||
|                 { | ||||
|                     Debug.Log("Placement annulé : un objet est déjà présent à cet endroit."); | ||||
|                     return; | ||||
|                 } | ||||
|  | ||||
|                 PlaceBlock(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if (Input.GetMouseButtonDown(0) && !isPlacingBlock) | ||||
|         else if (Input.GetMouseButtonDown(0)) // Clic gauche pour reprendre un objet déjà placé | ||||
|         { | ||||
|             Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); | ||||
|             Collider2D hit = Physics2D.OverlapPoint(mousePos); | ||||
|  | ||||
|             if (hit != null) | ||||
|             if (hit != null && hit.transform != null) | ||||
|             { | ||||
|                 if (hit.CompareTag("Ground")) | ||||
|                 { | ||||
|                     Debug.Log("Impossible de déplacer le sol (tag Ground)."); | ||||
|                     return; | ||||
|                 } | ||||
|                 currentBlock = hit.gameObject; | ||||
|                 isPlacingBlock = true; | ||||
|                 currentScale = currentBlock.transform.localScale; | ||||
|                 Debug.Log($"Déplacement de l'objet : {currentBlock.name}"); | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         // Redimensionnement d'un objet déjà placé | ||||
|         if (Input.GetMouseButtonDown(0) && Input.GetKey(KeyCode.LeftShift) && !isPlacingBlock) | ||||
|         { | ||||
|             Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); | ||||
|             Collider2D hit = Physics2D.OverlapPoint(mousePos); | ||||
|  | ||||
|             if (hit != null && hit.transform != null && !hit.CompareTag("Ground")) | ||||
|             { | ||||
|                 resizingTarget = hit.gameObject; | ||||
|                 originalMousePos = mousePos; | ||||
| @@ -212,6 +223,7 @@ public class LevelEditor : MonoBehaviour | ||||
|                     : ResizeAxis.Vertical; | ||||
|  | ||||
|                 isResizing = true; | ||||
|                 Debug.Log($"Début de redimensionnement : {resizingTarget.name}, axe = {currentResizeAxis}"); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @@ -220,15 +232,34 @@ public class LevelEditor : MonoBehaviour | ||||
|             Vector3 currentMousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); | ||||
|             Vector3 delta = currentMousePos - originalMousePos; | ||||
|  | ||||
|             Vector3 newScale = originalScale; | ||||
|  | ||||
|             if (currentResizeAxis == ResizeAxis.Horizontal) | ||||
|             { | ||||
|                 float newScaleX = Mathf.Max(0.1f, originalScale.x + delta.x); | ||||
|                 resizingTarget.transform.localScale = new Vector3(newScaleX, originalScale.y, 1); | ||||
|             } | ||||
|                 newScale.x = Mathf.Max(0.1f, originalScale.x + delta.x); | ||||
|             else if (currentResizeAxis == ResizeAxis.Vertical) | ||||
|                 newScale.y = Mathf.Max(0.1f, originalScale.y + delta.y); | ||||
|  | ||||
|             // Temporarily apply the new scale for collision testing | ||||
|             Vector3 originalPos = resizingTarget.transform.position; | ||||
|             resizingTarget.transform.localScale = newScale; | ||||
|  | ||||
|             Bounds bounds = resizingTarget.GetComponent<Collider2D>().bounds; | ||||
|             Collider2D[] overlaps = Physics2D.OverlapBoxAll(bounds.center, bounds.size, 0f); | ||||
|  | ||||
|             bool hasCollision = false; | ||||
|             foreach (var col in overlaps) | ||||
|             { | ||||
|                 float newScaleY = Mathf.Max(0.1f, originalScale.y + delta.y); | ||||
|                 resizingTarget.transform.localScale = new Vector3(originalScale.x, newScaleY, 1); | ||||
|                 if (col.gameObject != resizingTarget) | ||||
|                 { | ||||
|                     hasCollision = true; | ||||
|                     break; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if (hasCollision) | ||||
|             { | ||||
|                 resizingTarget.transform.localScale = originalScale; // revert | ||||
|                 Debug.Log("Étirement annulé : collision détectée."); | ||||
|             } | ||||
|  | ||||
|             if (Input.GetMouseButtonUp(0)) | ||||
| @@ -238,30 +269,180 @@ public class LevelEditor : MonoBehaviour | ||||
|                 currentResizeAxis = ResizeAxis.None; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|  | ||||
|         // Clic droit pour supprimer un objet déjà placé (sauf le sol) | ||||
|         if (Input.GetMouseButtonDown(1)) | ||||
|         { | ||||
|             Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); | ||||
|             Collider2D hit = Physics2D.OverlapPoint(mousePos); | ||||
|  | ||||
|             if (hit != null && hit.transform != null) | ||||
|             { | ||||
|                 if (hit.CompareTag("Ground")) | ||||
|                 { | ||||
|                     Debug.Log("Impossible de supprimer le sol (tag Ground)."); | ||||
|                     return; | ||||
|                 } | ||||
|  | ||||
|                 Destroy(hit.gameObject); | ||||
|                 Debug.Log($"Objet supprimé : {hit.name}"); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     void PlaceBlock() | ||||
|     { | ||||
|         bool skipVerticalSnap = false; | ||||
|  | ||||
|         if (currentBlock.name.ToLower().Contains("smallobstacle") || currentBlock.name.ToLower().Contains("portal")) | ||||
|         { | ||||
|             skipVerticalSnap = true; // On saute l'alignement vertical pour ces cas-là | ||||
|         } | ||||
|  | ||||
|         if (!skipVerticalSnap) | ||||
|         { | ||||
|             Vector2 origin = currentBlock.transform.position; | ||||
|             RaycastHit2D[] hitsBelow = Physics2D.RaycastAll(origin, Vector2.down, 100f); | ||||
|  | ||||
|             float highestY = -Mathf.Infinity; | ||||
|             GameObject bestTargetBelow = null; | ||||
|  | ||||
|             foreach (var hit in hitsBelow) | ||||
|             { | ||||
|                 if (hit.collider != null && hit.collider.gameObject != currentBlock) | ||||
|                 { | ||||
|                     float topOfObject = hit.collider.bounds.max.y; | ||||
|                     if (topOfObject > highestY) | ||||
|                     { | ||||
|                         highestY = topOfObject; | ||||
|                         bestTargetBelow = hit.collider.gameObject; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if (bestTargetBelow != null) | ||||
|             { | ||||
|                 float height = currentBlock.GetComponent<Collider2D>().bounds.size.y; | ||||
|                 currentBlock.transform.position = new Vector3(currentBlock.transform.position.x, highestY + height / 2f, -1); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 float height = currentBlock.GetComponent<Collider2D>().bounds.size.y; | ||||
|                 currentBlock.transform.position = new Vector3(currentBlock.transform.position.x, height / 2f, -1); | ||||
|             } | ||||
|         } | ||||
|         // ➔ Toujours essayer de snap sur la droite et en bas même pour Portal et SmallObstacle | ||||
|         TrySnapToNearbyBlock(); | ||||
|  | ||||
|         isPlacingBlock = false; | ||||
|         currentBlock = null; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     private void TrySnapToNearbyBlock() | ||||
|     { | ||||
|         if (currentBlock == null) | ||||
|             return; | ||||
|  | ||||
|         Collider2D blockCollider = currentBlock.GetComponent<Collider2D>(); | ||||
|         Bounds bounds = blockCollider.bounds; | ||||
|  | ||||
|         float snapDistance = 1f; // Distance de snap (en Unity units) | ||||
|  | ||||
|         // Zone de scan à droite | ||||
|         Vector2 rightAreaStart = new Vector2(bounds.max.x, bounds.min.y); | ||||
|         Vector2 rightAreaEnd = new Vector2(bounds.max.x + snapDistance, bounds.max.y); | ||||
|  | ||||
|         // Zone de scan à gauche | ||||
|         Vector2 leftAreaStart = new Vector2(bounds.min.x - snapDistance, bounds.min.y); | ||||
|         Vector2 leftAreaEnd = new Vector2(bounds.min.x, bounds.max.y); | ||||
|  | ||||
|         // Zone de scan en dessous | ||||
|         Vector2 bottomAreaStart = new Vector2(bounds.min.x, bounds.min.y - snapDistance); | ||||
|         Vector2 bottomAreaEnd = new Vector2(bounds.max.x, bounds.min.y); | ||||
|  | ||||
|         // Zone de scan au dessus | ||||
|         Vector2 topAreaStart = new Vector2(bounds.min.x, bounds.max.y); | ||||
|         Vector2 topAreaEnd = new Vector2(bounds.max.x, bounds.max.y + snapDistance); | ||||
|  | ||||
|         Collider2D[] hitsRight = Physics2D.OverlapAreaAll(rightAreaStart, rightAreaEnd); | ||||
|         Collider2D[] hitsLeft = Physics2D.OverlapAreaAll(leftAreaStart, leftAreaEnd); | ||||
|         Collider2D[] hitsBelow = Physics2D.OverlapAreaAll(bottomAreaStart, bottomAreaEnd); | ||||
|         Collider2D[] hitsAbove = Physics2D.OverlapAreaAll(topAreaStart, topAreaEnd); | ||||
|  | ||||
|         // ➔ Priorité : droite > gauche > bas > haut | ||||
|  | ||||
|         foreach (var hit in hitsRight) | ||||
|         { | ||||
|             if (hit != null && hit.gameObject != currentBlock) | ||||
|             { | ||||
|                 float theirLeft = hit.bounds.min.x; | ||||
|                 float ourWidth = bounds.size.x; | ||||
|                 currentBlock.transform.position = new Vector3(theirLeft - ourWidth / 2f, currentBlock.transform.position.y, -1); | ||||
|                 Debug.Log("✅ Snap automatique à droite !"); | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         foreach (var hit in hitsLeft) | ||||
|         { | ||||
|             if (hit != null && hit.gameObject != currentBlock) | ||||
|             { | ||||
|                 float theirRight = hit.bounds.max.x; | ||||
|                 float ourWidth = bounds.size.x; | ||||
|                 currentBlock.transform.position = new Vector3(theirRight + ourWidth / 2f, currentBlock.transform.position.y, -1); | ||||
|                 Debug.Log("✅ Snap automatique à gauche !"); | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         foreach (var hit in hitsBelow) | ||||
|         { | ||||
|             if (hit != null && hit.gameObject != currentBlock) | ||||
|             { | ||||
|                 float theirTop = hit.bounds.max.y; | ||||
|                 float ourHeight = bounds.size.y; | ||||
|                 currentBlock.transform.position = new Vector3(currentBlock.transform.position.x, theirTop + ourHeight / 2f, -1); | ||||
|                 Debug.Log("✅ Snap automatique en bas !"); | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         foreach (var hit in hitsAbove) | ||||
|         { | ||||
|             if (hit != null && hit.gameObject != currentBlock) | ||||
|             { | ||||
|                 float theirBottom = hit.bounds.min.y; | ||||
|                 float ourHeight = bounds.size.y; | ||||
|                 currentBlock.transform.position = new Vector3(currentBlock.transform.position.x, theirBottom - ourHeight / 2f, -1); | ||||
|                 Debug.Log("✅ Snap automatique en haut !"); | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     void InstantiateAndPrepare(GameObject prefab, Vector3? scaleOverride = null) | ||||
|     { | ||||
|         GameObject obj = Instantiate(prefab); | ||||
|         obj.transform.position = new Vector3(0, 0, -1); | ||||
|         obj.transform.localScale = scaleOverride ?? currentScale; | ||||
|  | ||||
|         if (mapParent != null) | ||||
|         { | ||||
|             obj.transform.SetParent(mapParent); | ||||
|         } | ||||
|         try { obj.tag = prefab.name; } | ||||
|         catch { Debug.LogWarning($"Le tag '{prefab.name}' n'existe pas. Ajoutez-le dans Project Settings > Tags."); } | ||||
|  | ||||
|         currentBlock = obj; | ||||
|         isPlacingBlock = true; | ||||
|     } | ||||
|  | ||||
|     private void HandleBlockRotation() | ||||
|     { | ||||
|         currentBlock.transform.Rotate(0f, 0f, -90f); // ➔ Rotation de 90° dans le sens horaire | ||||
|         Debug.Log("🔄 Bloc pivoté de 90° !"); | ||||
|     } | ||||
|  | ||||
|     public void Save() | ||||
|     { | ||||
|         // TODO : Implémenter la sauvegarde du niveau | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -18,6 +18,11 @@ public class MainMenu : MonoBehaviour | ||||
|         Application.Quit(); | ||||
|     } | ||||
|  | ||||
|     public void LevelEditor() | ||||
|     { | ||||
|         SceneManager.LoadSceneAsync("LevelEditorScene"); | ||||
|     } | ||||
|  | ||||
|     public void EditorChoice() | ||||
|     { | ||||
|         SceneManager.LoadSceneAsync("EditorChoiceScene"); | ||||
|   | ||||
| @@ -6,9 +6,11 @@ public class Player : MonoBehaviour | ||||
|     public Rigidbody2D RigidBody { get; private set; } | ||||
|     public Transform Transform { get; private set; } | ||||
|     public ParticleSystem Particle { get; private set; } | ||||
|     public LevelsLoader LevelsLoader { get; private set; } | ||||
|     public LevelsLoader LevelsLoader { get; set; } | ||||
|     public SpriteRenderer SpriteRenderer { get; private set; } | ||||
|     public bool IsColliding { get; set; } = true; | ||||
|     public bool HasStarted { get; set; } = false; | ||||
|     public bool CanJump { get; set; } = true; | ||||
|  | ||||
|     public IGameMode CurrentGameMode { get; set; } | ||||
|     public float SpeedMultiplier = 1f; | ||||
| @@ -19,7 +21,12 @@ public class Player : MonoBehaviour | ||||
|         Transform = transform; | ||||
|         Particle = GetComponentInChildren<ParticleSystem>(); | ||||
|         SpriteRenderer = GetComponentInChildren<SpriteRenderer>(); | ||||
|         LevelsLoader = GameObject.FindGameObjectWithTag("LevelsLoader").GetComponent<LevelsLoader>(); | ||||
|  | ||||
|         GameObject loaderObj = GameObject.FindGameObjectWithTag("LevelsLoader"); | ||||
|         if (loaderObj != null) | ||||
|             LevelsLoader = loaderObj.GetComponent<LevelsLoader>(); | ||||
|         else | ||||
|             Debug.LogWarning("LevelsLoader introuvable : Progression désactivée pour ce niveau."); | ||||
|     } | ||||
|  | ||||
|     public void Start() | ||||
| @@ -33,21 +40,24 @@ public class Player : MonoBehaviour | ||||
|  | ||||
|     public void Update() | ||||
|     { | ||||
|         CurrentGameMode.Update(this); | ||||
|         LevelsLoader.CalculateCurrentProgressionPercent(transform.position); | ||||
|         if (CurrentGameMode != null) | ||||
|             CurrentGameMode.Update(this); | ||||
|  | ||||
|         if (LevelsLoader != null) | ||||
|             LevelsLoader.CalculateCurrentProgressionPercent(transform.position); | ||||
|     } | ||||
|  | ||||
|     public void OnCollisionEnter2D(Collision2D collision) | ||||
|     public virtual void OnCollisionEnter2D(Collision2D collision) | ||||
|     { | ||||
|         CurrentGameMode.OnCollisionEnter(this, collision); | ||||
|         CurrentGameMode?.OnCollisionEnter(this, collision); | ||||
|     } | ||||
|  | ||||
|     public void OnCollisionExit2D(Collision2D collision) | ||||
|     { | ||||
|         CurrentGameMode.OnCollisionExit(this, collision); | ||||
|         CurrentGameMode?.OnCollisionExit(this, collision); | ||||
|     } | ||||
|  | ||||
|     private void OnTriggerEnter2D(Collider2D collision) | ||||
|     public virtual void OnTriggerEnter2D(Collider2D collision) | ||||
|     { | ||||
|         if (collision.CompareTag("ShipPortal")) | ||||
|         { | ||||
|   | ||||
| @@ -8,6 +8,9 @@ public class PlayerCamera : MonoBehaviour | ||||
|     public float smoothSpeed = 5.0f; | ||||
|     private float initialY; | ||||
|  | ||||
|     [Header("References")] | ||||
|     public bool isPlaying; | ||||
|  | ||||
|     private void Start() | ||||
|     { | ||||
|         initialY = transform.position.y; | ||||
| @@ -15,22 +18,25 @@ public class PlayerCamera : MonoBehaviour | ||||
|  | ||||
|     private void Update() | ||||
|     { | ||||
|         Player player = playerObject.GetComponent<Player>(); | ||||
|  | ||||
|         float minYFollow = normalMinYFollow; | ||||
|         if (player.CurrentGameMode is ShipGameMode) | ||||
|         if (isPlaying) | ||||
|         { | ||||
|             minYFollow = shipMinYFollow; | ||||
|             Player player = playerObject.GetComponent<Player>(); | ||||
|  | ||||
|             float minYFollow = normalMinYFollow; | ||||
|             if (player.CurrentGameMode is ShipGameMode) | ||||
|             { | ||||
|                 minYFollow = shipMinYFollow; | ||||
|             } | ||||
|  | ||||
|             float targetY = initialY; | ||||
|             if (playerObject.transform.position.y > minYFollow) | ||||
|             { | ||||
|                 targetY = playerObject.transform.position.y; | ||||
|             } | ||||
|  | ||||
|             float newY = Mathf.Lerp(transform.position.y, targetY, smoothSpeed * Time.deltaTime); | ||||
|  | ||||
|             transform.position = new Vector3(playerObject.transform.position.x, newY, transform.position.z); | ||||
|         } | ||||
|  | ||||
|         float targetY = initialY; | ||||
|         if (playerObject.transform.position.y > minYFollow) | ||||
|         { | ||||
|             targetY = playerObject.transform.position.y; | ||||
|         } | ||||
|  | ||||
|         float newY = Mathf.Lerp(transform.position.y, targetY, smoothSpeed * Time.deltaTime); | ||||
|  | ||||
|         transform.position = new Vector3(playerObject.transform.position.x, newY, transform.position.z); | ||||
|     } | ||||
| } | ||||
|   | ||||
							
								
								
									
										127
									
								
								Assets/Scripts/TestManager.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,127 @@ | ||||
| using UnityEngine; | ||||
|  | ||||
| public class TestManager : MonoBehaviour | ||||
| { | ||||
|     [Header("References")] | ||||
|     public IGameMode gameMode; | ||||
|     public Player currentPlayer; | ||||
|     public Transform spawnPoint; | ||||
|     public GameObject editorUI; | ||||
|     public PlayerCamera playerCamera; | ||||
|  | ||||
|     private bool isTesting = false; | ||||
|  | ||||
|     void Start() | ||||
|     { | ||||
|         if (spawnPoint == null) | ||||
|         { | ||||
|             GameObject spawn = new GameObject("AutoSpawnPoint"); | ||||
|             spawn.transform.position = new Vector3(-16, -3, 0f); | ||||
|             spawnPoint = spawn.transform; | ||||
|         } | ||||
|  | ||||
|         if (currentPlayer == null) | ||||
|         { | ||||
|             Debug.LogError("[TestManager] Aucun Player assigné !"); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             gameMode = new NormalGameMode(); | ||||
|             currentPlayer.ChangeGameMode(gameMode); | ||||
|             currentPlayer.SpeedMultiplier = 0f; | ||||
|  | ||||
|             if (currentPlayer.SpriteRenderer != null) | ||||
|                 currentPlayer.SpriteRenderer.enabled = false; | ||||
|  | ||||
|             if (currentPlayer.Particle != null) | ||||
|                 currentPlayer.Particle.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear); // 🛑 Stop propre | ||||
|         } | ||||
|  | ||||
|         if (playerCamera != null) | ||||
|         { | ||||
|             playerCamera.isPlaying = false; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     void Update() | ||||
|     { | ||||
|         if (isTesting && currentPlayer == null) | ||||
|         { | ||||
|             StopTest(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void StartOrStop() | ||||
|     { | ||||
|         if (isTesting) | ||||
|             StopTest(); | ||||
|         else | ||||
|             StartTest(); | ||||
|     } | ||||
|  | ||||
|     public void StartTest() | ||||
|     { | ||||
|         if (currentPlayer == null) | ||||
|         { | ||||
|             Debug.LogError("[TestManager] Player manquant pour lancer le test !"); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         if (editorUI != null) | ||||
|             editorUI.SetActive(false); | ||||
|  | ||||
|         currentPlayer.transform.position = spawnPoint.position; | ||||
|         currentPlayer.RigidBody.linearVelocity = Vector2.zero; | ||||
|         currentPlayer.SpeedMultiplier = 1f; | ||||
|         currentPlayer.SpriteRenderer.sprite = Resources.Load<Sprite>("Shapes/BaseSquare"); | ||||
|  | ||||
|         currentPlayer.ChangeGameMode(gameMode); | ||||
|         isTesting = true; | ||||
|  | ||||
|         if (playerCamera != null) | ||||
|         { | ||||
|             playerCamera.playerObject = currentPlayer.gameObject; | ||||
|             playerCamera.isPlaying = true; | ||||
|         } | ||||
|  | ||||
|         if (currentPlayer.SpriteRenderer != null) | ||||
|             currentPlayer.SpriteRenderer.enabled = true; | ||||
|  | ||||
|         if (currentPlayer.Particle != null) | ||||
|             currentPlayer.Particle.Play(); // ✅ Démarrer la particule | ||||
|  | ||||
|         Debug.Log("[TestManager] Test du niveau démarré !"); | ||||
|     } | ||||
|  | ||||
|     public void StopTest() | ||||
|     { | ||||
|         if (currentPlayer != null) | ||||
|         { | ||||
|             currentPlayer.transform.position = spawnPoint.position; | ||||
|             currentPlayer.RigidBody.linearVelocity = Vector2.zero; | ||||
|             currentPlayer.RigidBody.angularVelocity = 0f; | ||||
|             currentPlayer.transform.rotation = Quaternion.identity; | ||||
|             currentPlayer.SpriteRenderer.sprite = Resources.Load<Sprite>("Shapes/BaseSquare"); | ||||
|             currentPlayer.SpeedMultiplier = 0f; | ||||
|  | ||||
|             if (currentPlayer.Particle != null) | ||||
|                 currentPlayer.Particle.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear); // ✅ Arrêter proprement | ||||
|  | ||||
|             if (currentPlayer.SpriteRenderer != null) | ||||
|                 currentPlayer.SpriteRenderer.enabled = false; | ||||
|         } | ||||
|  | ||||
|         if (editorUI != null) | ||||
|             editorUI.SetActive(true); | ||||
|  | ||||
|         if (playerCamera != null) | ||||
|         { | ||||
|             playerCamera.isPlaying = false; | ||||
|             playerCamera.transform.position = new Vector3(0f, 0f, -10f); | ||||
|         } | ||||
|  | ||||
|         isTesting = false; | ||||
|  | ||||
|         Debug.Log("[TestManager] Test du niveau arrêté, joueur reset et caméra recentrée !"); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										2
									
								
								Assets/Scripts/TestManager.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,2 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: 2c6d38f8c53ec314c9827a842e6f17d8 | ||||
| @@ -11,18 +11,21 @@ EditorBuildSettings: | ||||
|   - enabled: 1 | ||||
|     path: Assets/Scenes/ImportScene.unity | ||||
|     guid: 079203ac02d460d48a1208a03134d373 | ||||
|   - enabled: 1 | ||||
|     path: Assets/Scenes/EditorChoiceScene.unity | ||||
|     guid: 200c916866fde6f4bb0123b72f22771f | ||||
|   - enabled: 1 | ||||
|     path: Assets/Scenes/SelectLevelScene.unity | ||||
|     guid: ff897c289bbe86f499c0c88b6177ab5c | ||||
|   - enabled: 1 | ||||
|     path: Assets/Scenes/LevelScene.unity | ||||
|     guid: 8c9cfa26abfee488c85f1582747f6a02 | ||||
|   - enabled: 1 | ||||
|     path: Assets/Scenes/CreateLevelScene.unity | ||||
|   - enabled: 0 | ||||
|     path: Assets/Scenes/LevelEditorScene.unity | ||||
|     guid: 73b983a44d701df4bb6d8ceb94e05a2b | ||||
|   - enabled: 1 | ||||
|     path: Assets/Scenes/LevelEditorScene.unity | ||||
|     guid: 73b983a44d701df4bb6d8ceb94e05a2b | ||||
|   - enabled: 1 | ||||
|     path: Assets/Scenes/EditorChoiceScene.unity | ||||
|     guid: 200c916866fde6f4bb0123b72f22771f | ||||
|   m_configObjects: | ||||
|     com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3} | ||||
|   m_UseUCBPForAssetBundles: 0 | ||||
|   | ||||
| @@ -18,6 +18,7 @@ TagManager: | ||||
|   - PortalButtonGroup | ||||
|   - BonusBoostSpeed | ||||
|   - BonusSlowSpeed | ||||
|   - Ground | ||||
|   layers: | ||||
|   - Default | ||||
|   - TransparentFX | ||||
|   | ||||