diff --git a/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head1.png b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head1.png new file mode 100644 index 00000000..99176868 Binary files /dev/null and b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head1.png differ diff --git a/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head1.png.meta b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head1.png.meta new file mode 100644 index 00000000..f00dd004 --- /dev/null +++ b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head1.png.meta @@ -0,0 +1,194 @@ +fileFormatVersion: 2 +guid: 1021fffcba2a03d40ae5371555089a22 +TextureImporter: + internalIDToNameTable: + - first: + 213: 7766407121562134464 + second: monster_head1_0 + - first: + 213: -9125130289615156199 + second: monster_head1_1 + - first: + 213: -3901095240998639361 + second: monster_head1_2 + - first: + 213: 8247604547213676640 + second: monster_head1_3 + 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: Android + 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 + - serializedVersion: 4 + buildTarget: iOS + 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: monster_head1_1 + rect: + serializedVersion: 2 + x: 10 + y: 5 + width: 246 + height: 345 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 91cc45e39560d5180800000000000000 + internalID: -9125130289615156199 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: e64f2633c5a06984296cf655c4c0de04 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + monster_head1_0: 7766407121562134464 + monster_head1_1: -9125130289615156199 + monster_head1_2: -3901095240998639361 + monster_head1_3: 8247604547213676640 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head2.png b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head2.png new file mode 100644 index 00000000..2cb719fc Binary files /dev/null and b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head2.png differ diff --git a/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head2.png.meta b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head2.png.meta new file mode 100644 index 00000000..68f3fa56 --- /dev/null +++ b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head2.png.meta @@ -0,0 +1,190 @@ +fileFormatVersion: 2 +guid: e9ac6c3e349f9b247a0ea03665da57ce +TextureImporter: + internalIDToNameTable: + - first: + 213: -7812277834941893986 + second: monster_head2_0 + - first: + 213: 8776893643225885828 + second: monster_head2_1 + - first: + 213: -1611368835902351828 + second: monster_head2_2 + 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: Android + 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 + - serializedVersion: 4 + buildTarget: iOS + 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: monster_head2_0 + rect: + serializedVersion: 2 + x: 31 + y: 0 + width: 200 + height: 275 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: e9271a943b6359390800000000000000 + internalID: -7812277834941893986 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 53b458ab419e36f47a2f4e7800de67d7 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + monster_head2_0: -7812277834941893986 + monster_head2_1: 8776893643225885828 + monster_head2_2: -1611368835902351828 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head3.png b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head3.png new file mode 100644 index 00000000..10aac68b Binary files /dev/null and b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head3.png differ diff --git a/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head3.png.meta b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head3.png.meta new file mode 100644 index 00000000..b4bef196 --- /dev/null +++ b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head3.png.meta @@ -0,0 +1,190 @@ +fileFormatVersion: 2 +guid: 1043ceca06eb2ac48b22c20d281278b0 +TextureImporter: + internalIDToNameTable: + - first: + 213: 4139348639081821586 + second: monster_head3_0 + - first: + 213: 2144489520682081444 + second: monster_head3_1 + - first: + 213: 6575383119194002169 + second: monster_head3_2 + 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: Android + 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 + - serializedVersion: 4 + buildTarget: iOS + 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: monster_head3_0 + rect: + serializedVersion: 2 + x: 29 + y: 0 + width: 199 + height: 286 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 295f7f1f7abe17930800000000000000 + internalID: 4139348639081821586 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: c24627f1ff7adbc498117b1ab2dc914c + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + monster_head3_0: 4139348639081821586 + monster_head3_1: 2144489520682081444 + monster_head3_2: 6575383119194002169 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head4.png b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head4.png new file mode 100644 index 00000000..e90bdabf Binary files /dev/null and b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head4.png differ diff --git a/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head4.png.meta b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head4.png.meta new file mode 100644 index 00000000..bfc92eec --- /dev/null +++ b/Assets/Art/Sprites/Spritesheets/Quarry/Minigame/Monster/monster_head4.png.meta @@ -0,0 +1,190 @@ +fileFormatVersion: 2 +guid: c85ce41979ed896429c62330c546d3ce +TextureImporter: + internalIDToNameTable: + - first: + 213: -3471612407960728276 + second: monster_head4_0 + - first: + 213: 7033164403599601001 + second: monster_head4_1 + - first: + 213: -8127244325322508915 + second: monster_head4_2 + 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: Android + 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 + - serializedVersion: 4 + buildTarget: iOS + 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: monster_head4_0 + rect: + serializedVersion: 2 + x: 21 + y: 0 + width: 221 + height: 278 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: c2d89a988ea52dfc0800000000000000 + internalID: -3471612407960728276 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: dd6e5478aaac282458b9f8d39a624aca + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + monster_head4_0: -3471612407960728276 + monster_head4_1: 7033164403599601001 + monster_head4_2: -8127244325322508915 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/PrefabVariantGeneratorWindow.cs b/Assets/Editor/PrefabVariantGeneratorWindow.cs new file mode 100644 index 00000000..489fe223 --- /dev/null +++ b/Assets/Editor/PrefabVariantGeneratorWindow.cs @@ -0,0 +1,312 @@ +using UnityEditor; +using UnityEngine; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEditor.Experimental.SceneManagement; + +namespace Editor +{ + public class PrefabVariantGeneratorWindow : EditorWindow + { + private GameObject sourcePrefab; + private GameObject previousSourcePrefab; + private List selectedSprites = new List(); + private Vector2 scrollPosition; + private string variantSaveFolder = "Assets/Prefabs/Variants"; + private string namingPattern = "{0}_{1}"; // {0} = prefab name, {1} = sprite name + private bool userChangedSavePath = false; + + [MenuItem("Tools/Prefab Variant Generator")] + public static void ShowWindow() + { + var window = GetWindow("Prefab Variant Generator"); + window.minSize = new Vector2(400, 500); + } + + private void OnGUI() + { + EditorGUILayout.LabelField("Prefab Variant Generator", EditorStyles.boldLabel); + EditorGUILayout.HelpBox("This tool generates prefab variants with different sprites assigned to a sprite renderer.", MessageType.Info); + EditorGUILayout.Space(); + + // Source Prefab Selection + EditorGUILayout.LabelField("Step 1: Select Source Prefab", EditorStyles.boldLabel); + + // Store previous selection to detect changes + GameObject newSourcePrefab = (GameObject)EditorGUILayout.ObjectField("Source Prefab", sourcePrefab, typeof(GameObject), false); + + // Check if prefab selection changed + if (newSourcePrefab != previousSourcePrefab) + { + sourcePrefab = newSourcePrefab; + previousSourcePrefab = newSourcePrefab; + + // Auto-set save folder to match source prefab's directory if a valid prefab is selected + if (sourcePrefab != null && !userChangedSavePath) + { + string prefabPath = AssetDatabase.GetAssetPath(sourcePrefab); + if (!string.IsNullOrEmpty(prefabPath)) + { + variantSaveFolder = Path.GetDirectoryName(prefabPath).Replace("\\", "/"); + } + } + } + + // Warn if not a prefab + if (sourcePrefab != null && !PrefabUtility.IsPartOfPrefabAsset(sourcePrefab) && !PrefabUtility.IsPartOfPrefabInstance(sourcePrefab)) + { + EditorGUILayout.HelpBox("Please select a prefab asset.", MessageType.Warning); + } + + // Sprite Selection + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Step 2: Select Sprites", EditorStyles.boldLabel); + EditorGUILayout.BeginHorizontal(); + + // Drag and drop area for sprites + EditorGUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.Height(80)); + EditorGUILayout.LabelField("Drag and drop sprites here", EditorStyles.centeredGreyMiniLabel); + + Rect dropArea = GUILayoutUtility.GetRect(0, 50, GUILayout.ExpandWidth(true)); + Event evt = Event.current; + switch (evt.type) + { + case EventType.DragUpdated: + case EventType.DragPerform: + if (!dropArea.Contains(evt.mousePosition)) + break; + + DragAndDrop.visualMode = DragAndDropVisualMode.Copy; + + if (evt.type == EventType.DragPerform) + { + DragAndDrop.AcceptDrag(); + + foreach (var draggedObject in DragAndDrop.objectReferences) + { + if (draggedObject is Sprite sprite) + { + if (!selectedSprites.Contains(sprite)) + selectedSprites.Add(sprite); + } + else if (draggedObject is Texture2D texture) + { + // Try to get sprites from texture + string texturePath = AssetDatabase.GetAssetPath(texture); + var sprites = AssetDatabase.LoadAllAssetsAtPath(texturePath) + .OfType() + .ToArray(); + + foreach (var s in sprites) + { + if (!selectedSprites.Contains(s)) + selectedSprites.Add(s); + } + } + } + + evt.Use(); + } + break; + } + EditorGUILayout.EndVertical(); + + if (GUILayout.Button("Add Selected Sprites", GUILayout.Width(120), GUILayout.Height(80))) + { + var selectedObjects = Selection.objects; + foreach (var obj in selectedObjects) + { + if (obj is Sprite sprite) + { + if (!selectedSprites.Contains(sprite)) + selectedSprites.Add(sprite); + } + else if (obj is Texture2D texture) + { + // Try to get sprites from texture + string texturePath = AssetDatabase.GetAssetPath(texture); + var sprites = AssetDatabase.LoadAllAssetsAtPath(texturePath) + .OfType() + .ToArray(); + + foreach (var s in sprites) + { + if (!selectedSprites.Contains(s)) + selectedSprites.Add(s); + } + } + } + } + + EditorGUILayout.EndHorizontal(); + + if (GUILayout.Button("Clear Sprites")) + { + selectedSprites.Clear(); + } + + // Display selected sprites + EditorGUILayout.Space(); + EditorGUILayout.LabelField($"Selected Sprites ({selectedSprites.Count}):", EditorStyles.boldLabel); + + scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition, GUILayout.Height(150)); + for (int i = selectedSprites.Count - 1; i >= 0; i--) + { + EditorGUILayout.BeginHorizontal(); + selectedSprites[i] = (Sprite)EditorGUILayout.ObjectField(selectedSprites[i], typeof(Sprite), false); + + // Preview sprite + if (selectedSprites[i] != null) + { + GUILayout.Box(selectedSprites[i].texture, GUILayout.Width(40), GUILayout.Height(40)); + } + + if (GUILayout.Button("Remove", GUILayout.Width(60))) + { + selectedSprites.RemoveAt(i); + } + EditorGUILayout.EndHorizontal(); + } + EditorGUILayout.EndScrollView(); + + // Output settings + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Step 3: Output Settings", EditorStyles.boldLabel); + + // Save folder + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel("Save Folder"); + EditorGUILayout.SelectableLabel(variantSaveFolder, EditorStyles.textField, GUILayout.Height(EditorGUIUtility.singleLineHeight)); + if (GUILayout.Button("Select...", GUILayout.Width(80))) + { + string newFolder = PrefabEditorUtility.SelectFolder(variantSaveFolder, "Prefabs/Variants"); + if (newFolder != variantSaveFolder) + { + variantSaveFolder = newFolder; + userChangedSavePath = true; // Mark that user manually changed the path + } + } + EditorGUILayout.EndHorizontal(); + + // Naming pattern + // Add a reset button if user changed the path and a valid prefab is selected + if (userChangedSavePath && sourcePrefab != null) + { + string prefabPath = AssetDatabase.GetAssetPath(sourcePrefab); + if (!string.IsNullOrEmpty(prefabPath)) + { + if (GUILayout.Button("Reset Path to Prefab Directory")) + { + variantSaveFolder = Path.GetDirectoryName(prefabPath).Replace("\\", "/"); + userChangedSavePath = false; + } + } + } + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel("Naming Pattern"); + namingPattern = EditorGUILayout.TextField(namingPattern); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.HelpBox("Use {0} for prefab name and {1} for sprite name", MessageType.Info); + + // Generate button + EditorGUILayout.Space(); + GUI.enabled = sourcePrefab != null && selectedSprites.Count > 0; + if (GUILayout.Button("Generate Prefab Variants", GUILayout.Height(30))) + { + GeneratePrefabVariants(); + } + GUI.enabled = true; + } + + private void GeneratePrefabVariants() + { + if (sourcePrefab == null) + { + EditorUtility.DisplayDialog("Error", "Please select a source prefab.", "OK"); + return; + } + + if (selectedSprites.Count == 0) + { + EditorUtility.DisplayDialog("Error", "Please select at least one sprite.", "OK"); + return; + } + + // Ensure the save folder exists + if (!AssetDatabase.IsValidFolder(variantSaveFolder)) + { + string[] folderPath = variantSaveFolder.Split('/'); + string currentPath = folderPath[0]; + + for (int i = 1; i < folderPath.Length; i++) + { + string folderName = folderPath[i]; + string newPath = Path.Combine(currentPath, folderName); + + if (!AssetDatabase.IsValidFolder(newPath)) + { + AssetDatabase.CreateFolder(currentPath, folderName); + } + + currentPath = newPath; + } + + AssetDatabase.Refresh(); + } + + string sourcePrefabPath = AssetDatabase.GetAssetPath(sourcePrefab); + string prefabName = Path.GetFileNameWithoutExtension(sourcePrefabPath); + int successCount = 0; + + // For each sprite, create a prefab variant + foreach (var sprite in selectedSprites) + { + if (sprite == null) continue; + + string variantName = string.Format(namingPattern, prefabName, sprite.name); + variantName = PrefabEditorUtility.SanitizeFileName(variantName); + string variantPath = Path.Combine(variantSaveFolder, variantName + ".prefab").Replace("\\", "/"); + + // Create the prefab variant + GameObject prefabInstance = (GameObject)PrefabUtility.InstantiatePrefab(sourcePrefab); + + try + { + // Check if it has a SpriteRenderer + SpriteRenderer spriteRenderer = prefabInstance.GetComponent(); + if (spriteRenderer == null) + { + // Add a SpriteRenderer if it doesn't exist + spriteRenderer = prefabInstance.AddComponent(); + } + + // Assign the sprite + spriteRenderer.sprite = sprite; + + // Create the prefab variant + GameObject prefabVariant = PrefabUtility.SaveAsPrefabAsset(prefabInstance, variantPath); + + if (prefabVariant != null) + { + successCount++; + } + } + catch (System.Exception e) + { + Debug.LogError($"Error creating prefab variant: {e.Message}"); + } + finally + { + // Clean up the instance + DestroyImmediate(prefabInstance); + } + } + + AssetDatabase.Refresh(); + EditorUtility.DisplayDialog("Prefab Variants Created", $"Successfully created {successCount} prefab variants.", "OK"); + } + } +} diff --git a/Assets/Editor/PrefabVariantGeneratorWindow.cs.meta b/Assets/Editor/PrefabVariantGeneratorWindow.cs.meta new file mode 100644 index 00000000..b7592ee7 --- /dev/null +++ b/Assets/Editor/PrefabVariantGeneratorWindow.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7b49d63944914b3b87e5f6112aee72ca +timeCreated: 1758278821 \ No newline at end of file diff --git a/Assets/Prefabs/Minigames/DivingForPictures/MonsterSpawnPoint.prefab b/Assets/Prefabs/Minigames/DivingForPictures/MonsterSpawnPoint.prefab new file mode 100644 index 00000000..297a2fdc --- /dev/null +++ b/Assets/Prefabs/Minigames/DivingForPictures/MonsterSpawnPoint.prefab @@ -0,0 +1,47 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3481232588610935369 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4085125724917306679} + - component: {fileID: 3621591697259925837} + m_Layer: 0 + m_Name: MonsterSpawnPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4085125724917306679 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3481232588610935369} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.86637, y: -0.03259, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3621591697259925837 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3481232588610935369} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5ddb6d3629fe4b46b1d7ae972a83539c, type: 3} + m_Name: + m_EditorClassIdentifier: + gizmoRadius: 0.5 diff --git a/Assets/Prefabs/Minigames/DivingForPictures/MonsterSpawnPoint.prefab.meta b/Assets/Prefabs/Minigames/DivingForPictures/MonsterSpawnPoint.prefab.meta new file mode 100644 index 00000000..b96b9a21 --- /dev/null +++ b/Assets/Prefabs/Minigames/DivingForPictures/MonsterSpawnPoint.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: da700d1636dcd9348bc52deaf44bdfb7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Minigames/DivingForPictures/QuarryMonster.prefab b/Assets/Prefabs/Minigames/DivingForPictures/QuarryMonster.prefab new file mode 100644 index 00000000..4203173d --- /dev/null +++ b/Assets/Prefabs/Minigames/DivingForPictures/QuarryMonster.prefab @@ -0,0 +1,140 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2015720985618639356 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6779310478082390115} + - component: {fileID: 8447572436637192077} + - component: {fileID: 4998672042618199381} + - component: {fileID: 3714732064953161914} + m_Layer: 0 + m_Name: QuarryMonster + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6779310478082390115 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2015720985618639356} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.46, y: -1.79, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &8447572436637192077 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2015720985618639356} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -9125130289615156199, guid: 1021fffcba2a03d40ae5371555089a22, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 2.46, y: 3.45} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!58 &4998672042618199381 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2015720985618639356} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_Radius: 3 +--- !u!114 &3714732064953161914 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2015720985618639356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e1b1889b120f4259a9fa9b7e415ea58a, type: 3} + m_Name: + m_EditorClassIdentifier: + detectionCollider: {fileID: 4998672042618199381} diff --git a/Assets/Prefabs/Minigames/DivingForPictures/QuarryMonster.prefab.meta b/Assets/Prefabs/Minigames/DivingForPictures/QuarryMonster.prefab.meta new file mode 100644 index 00000000..c866f70b --- /dev/null +++ b/Assets/Prefabs/Minigames/DivingForPictures/QuarryMonster.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7754d064d743d1b419acb859c2db6121 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Minigames/DivingForPictures/Tile1.prefab b/Assets/Prefabs/Minigames/DivingForPictures/Tile1.prefab index c2fe9982..2557bd2d 100644 --- a/Assets/Prefabs/Minigames/DivingForPictures/Tile1.prefab +++ b/Assets/Prefabs/Minigames/DivingForPictures/Tile1.prefab @@ -328,6 +328,8 @@ Transform: m_Children: - {fileID: 7111145574660306503} - {fileID: 1003080013996268193} + - {fileID: 7482385467620467196} + - {fileID: 3904535660151308887} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &2488201930835981397 @@ -343,3 +345,127 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: tileIndex: 0 +--- !u!1001 &1053554571951708000 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4925660644986369589} + m_Modifications: + - target: {fileID: 3481232588610935369, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_Name + value: MonsterSpawnPoint (1) + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.x + value: 2.24 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.y + value: 0.71 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} +--- !u!4 &3904535660151308887 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + m_PrefabInstance: {fileID: 1053554571951708000} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6874619227254404299 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4925660644986369589} + m_Modifications: + - target: {fileID: 3481232588610935369, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_Name + value: MonsterSpawnPoint + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.x + value: -2.31 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.y + value: -0.69 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} +--- !u!4 &7482385467620467196 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + m_PrefabInstance: {fileID: 6874619227254404299} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Minigames/DivingForPictures/Tile1_flipped.prefab b/Assets/Prefabs/Minigames/DivingForPictures/Tile1_flipped.prefab index 0eba2c60..fc6ab7f1 100644 --- a/Assets/Prefabs/Minigames/DivingForPictures/Tile1_flipped.prefab +++ b/Assets/Prefabs/Minigames/DivingForPictures/Tile1_flipped.prefab @@ -206,6 +206,8 @@ Transform: m_Children: - {fileID: 7111145574660306503} - {fileID: 1003080013996268193} + - {fileID: 5183714158540249435} + - {fileID: 4427395838151565125} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} --- !u!114 &7876353970701168068 @@ -221,3 +223,127 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: tileIndex: 0 +--- !u!1001 &414345722529352306 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4925660644986369589} + m_Modifications: + - target: {fileID: 3481232588610935369, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_Name + value: MonsterSpawnPoint (1) + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.x + value: -2.26 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.y + value: -0.72 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} +--- !u!4 &4427395838151565125 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + m_PrefabInstance: {fileID: 414345722529352306} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &9169619816711310444 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4925660644986369589} + m_Modifications: + - target: {fileID: 3481232588610935369, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_Name + value: MonsterSpawnPoint + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.x + value: 2.4 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.y + value: 1.48 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} +--- !u!4 &5183714158540249435 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + m_PrefabInstance: {fileID: 9169619816711310444} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Minigames/DivingForPictures/Tile2.prefab b/Assets/Prefabs/Minigames/DivingForPictures/Tile2.prefab index edf0dc6f..bc9918dc 100644 --- a/Assets/Prefabs/Minigames/DivingForPictures/Tile2.prefab +++ b/Assets/Prefabs/Minigames/DivingForPictures/Tile2.prefab @@ -206,6 +206,8 @@ Transform: m_Children: - {fileID: 7111145574660306503} - {fileID: 1003080013996268193} + - {fileID: 779930052227149768} + - {fileID: 6717719249848646349} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &2017387953723006367 @@ -221,3 +223,127 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: tileIndex: 0 +--- !u!1001 &3630911149016824575 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4925660644986369589} + m_Modifications: + - target: {fileID: 3481232588610935369, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_Name + value: MonsterSpawnPoint + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.x + value: 2.27 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.y + value: -0.7 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} +--- !u!4 &779930052227149768 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + m_PrefabInstance: {fileID: 3630911149016824575} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &7317058718762905594 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4925660644986369589} + m_Modifications: + - target: {fileID: 3481232588610935369, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_Name + value: MonsterSpawnPoint (1) + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.x + value: -1.98 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.y + value: -1.5 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} +--- !u!4 &6717719249848646349 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + m_PrefabInstance: {fileID: 7317058718762905594} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Minigames/DivingForPictures/Tile2_flipped.prefab b/Assets/Prefabs/Minigames/DivingForPictures/Tile2_flipped.prefab index fe66e7f0..08587f8a 100644 --- a/Assets/Prefabs/Minigames/DivingForPictures/Tile2_flipped.prefab +++ b/Assets/Prefabs/Minigames/DivingForPictures/Tile2_flipped.prefab @@ -206,6 +206,8 @@ Transform: m_Children: - {fileID: 7111145574660306503} - {fileID: 1003080013996268193} + - {fileID: 3622650182130189122} + - {fileID: 6128198891967149402} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} --- !u!114 &451715946189956124 @@ -221,3 +223,127 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: tileIndex: 0 +--- !u!1001 &790228998383621749 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4925660644986369589} + m_Modifications: + - target: {fileID: 3481232588610935369, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_Name + value: MonsterSpawnPoint + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.x + value: -2.22 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.y + value: 0.8 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} +--- !u!4 &3622650182130189122 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + m_PrefabInstance: {fileID: 790228998383621749} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &7906900786878439533 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4925660644986369589} + m_Modifications: + - target: {fileID: 3481232588610935369, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_Name + value: MonsterSpawnPoint (1) + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.x + value: 1.77 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.y + value: 2.28 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} +--- !u!4 &6128198891967149402 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + m_PrefabInstance: {fileID: 7906900786878439533} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Minigames/DivingForPictures/Tile3.prefab b/Assets/Prefabs/Minigames/DivingForPictures/Tile3.prefab index 39d42281..42766dba 100644 --- a/Assets/Prefabs/Minigames/DivingForPictures/Tile3.prefab +++ b/Assets/Prefabs/Minigames/DivingForPictures/Tile3.prefab @@ -206,6 +206,8 @@ Transform: m_Children: - {fileID: 7111145574660306503} - {fileID: 1003080013996268193} + - {fileID: 1007295630034795055} + - {fileID: 1590951442778015581} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &8822397971507360111 @@ -221,3 +223,127 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: tileIndex: 0 +--- !u!1001 &3361226680573907562 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4925660644986369589} + m_Modifications: + - target: {fileID: 3481232588610935369, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_Name + value: MonsterSpawnPoint (1) + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.x + value: -1.95 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.y + value: -1.48 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} +--- !u!4 &1590951442778015581 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + m_PrefabInstance: {fileID: 3361226680573907562} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3840420642436902680 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4925660644986369589} + m_Modifications: + - target: {fileID: 3481232588610935369, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_Name + value: MonsterSpawnPoint + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.x + value: 2.27 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.y + value: -1.58 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} +--- !u!4 &1007295630034795055 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + m_PrefabInstance: {fileID: 3840420642436902680} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Minigames/DivingForPictures/Tile3_flipped.prefab b/Assets/Prefabs/Minigames/DivingForPictures/Tile3_flipped.prefab index 687a609a..35f0cb88 100644 --- a/Assets/Prefabs/Minigames/DivingForPictures/Tile3_flipped.prefab +++ b/Assets/Prefabs/Minigames/DivingForPictures/Tile3_flipped.prefab @@ -206,6 +206,8 @@ Transform: m_Children: - {fileID: 7111145574660306503} - {fileID: 1003080013996268193} + - {fileID: 6011507792702974644} + - {fileID: 8778559433790709003} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} --- !u!114 &2006557459409230470 @@ -221,3 +223,127 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: tileIndex: 0 +--- !u!1001 &4711606854742853692 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4925660644986369589} + m_Modifications: + - target: {fileID: 3481232588610935369, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_Name + value: MonsterSpawnPoint (1) + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.x + value: -2.23 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.y + value: 0.77 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} +--- !u!4 &8778559433790709003 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + m_PrefabInstance: {fileID: 4711606854742853692} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &7772195149518225283 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4925660644986369589} + m_Modifications: + - target: {fileID: 3481232588610935369, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_Name + value: MonsterSpawnPoint + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.x + value: 2.33 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.y + value: 0.77 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} +--- !u!4 &6011507792702974644 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4085125724917306679, guid: da700d1636dcd9348bc52deaf44bdfb7, type: 3} + m_PrefabInstance: {fileID: 7772195149518225283} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Scenes/MiniGames/DivingForPictures.unity b/Assets/Scenes/MiniGames/DivingForPictures.unity index 1870c8eb..fe96a45d 100644 --- a/Assets/Scenes/MiniGames/DivingForPictures.unity +++ b/Assets/Scenes/MiniGames/DivingForPictures.unity @@ -119,6 +119,148 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &92107905 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 92107907} + - component: {fileID: 92107906} + - component: {fileID: 92107908} + - component: {fileID: 92107909} + m_Layer: 0 + m_Name: QuarryMonster + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &92107906 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 92107905} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -9125130289615156199, guid: 1021fffcba2a03d40ae5371555089a22, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 2.46, y: 3.45} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &92107907 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 92107905} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.46, y: -1.79, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!58 &92107908 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 92107905} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_Radius: 3 +--- !u!114 &92107909 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 92107905} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e1b1889b120f4259a9fa9b7e415ea58a, type: 3} + m_Name: + m_EditorClassIdentifier: + pointValue: 100 + pictureRadius: 3 + timeToLive: 5 + detectionCollider: {fileID: 0} + spriteRenderer: {fileID: 0} --- !u!1 &173052724 GameObject: m_ObjectHideFlags: 0 @@ -1455,3 +1597,4 @@ SceneRoots: - {fileID: 1003335105} - {fileID: 2106431002} - {fileID: 1679185998} + - {fileID: 92107907} diff --git a/Assets/Scripts/Minigames/DivingForPictures/DivingGameManager.cs b/Assets/Scripts/Minigames/DivingForPictures/DivingGameManager.cs new file mode 100644 index 00000000..3880eaa7 --- /dev/null +++ b/Assets/Scripts/Minigames/DivingForPictures/DivingGameManager.cs @@ -0,0 +1,194 @@ +using UnityEngine; +using System.Collections.Generic; +using System; +using UnityEngine.Events; + +namespace Minigames.DivingForPictures +{ + public class DivingGameManager : MonoBehaviour + { + [Header("Monster Prefabs")] + [Tooltip("Array of monster prefabs to spawn randomly")] + [SerializeField] private GameObject[] monsterPrefabs; + + [Header("Spawn Probability")] + [Tooltip("Base chance (0-1) of spawning a monster on each tile")] + [SerializeField] private float baseSpawnProbability = 0.2f; + [Tooltip("Maximum chance (0-1) of spawning a monster")] + [SerializeField] private float maxSpawnProbability = 0.5f; + [Tooltip("How fast the probability increases per second")] + [SerializeField] private float probabilityIncreaseRate = 0.01f; + + [Header("Spawn Timing")] + [Tooltip("Force a spawn after this many seconds without spawns")] + [SerializeField] private float guaranteedSpawnTime = 30f; + [Tooltip("Minimum time between monster spawns")] + [SerializeField] private float spawnCooldown = 5f; + + [Header("Scoring")] + [Tooltip("Base points for taking a picture")] + [SerializeField] private int basePoints = 100; + [Tooltip("Additional points per depth unit")] + [SerializeField] private int depthMultiplier = 10; + + // Private state variables + private int playerScore = 0; + private float currentSpawnProbability; + private float lastSpawnTime = -100f; + private float timeSinceLastSpawn = 0f; + private List activeMonsters = new List(); + + // Public properties + public int PlayerScore => playerScore; + + // Events + public event Action OnScoreChanged; + public event Action OnMonsterSpawned; + public event Action OnPictureTaken; + public event Action OnSpawnProbabilityChanged; + + private void Awake() + { + currentSpawnProbability = baseSpawnProbability; + } + + private void Start() + { + // Subscribe to tile spawned event + TrenchTileSpawner tileSpawner = FindObjectOfType(); + if (tileSpawner != null) + { + tileSpawner.onTileSpawned.AddListener(OnTileSpawned); + } + else + { + Debug.LogWarning("No TrenchTileSpawner found in scene. Monster spawning won't work."); + } + } + + private void Update() + { + timeSinceLastSpawn += Time.deltaTime; + + // Gradually increase spawn probability over time + float previousProbability = currentSpawnProbability; + if (currentSpawnProbability < maxSpawnProbability) + { + currentSpawnProbability += probabilityIncreaseRate * Time.deltaTime; + currentSpawnProbability = Mathf.Min(currentSpawnProbability, maxSpawnProbability); + + // Only fire event if probability changed significantly + if (Mathf.Abs(currentSpawnProbability - previousProbability) > 0.01f) + { + OnSpawnProbabilityChanged?.Invoke(currentSpawnProbability); + } + } + } + + private void OnTileSpawned(GameObject tile) + { + // Check for spawn points in the new tile + MonsterSpawnPoint[] spawnPoints = tile.GetComponentsInChildren(); + + if (spawnPoints.Length == 0) return; + + bool forceSpawn = timeSinceLastSpawn >= guaranteedSpawnTime; + bool onCooldown = timeSinceLastSpawn < spawnCooldown; + + // Don't spawn if on cooldown, unless forced + if (onCooldown && !forceSpawn) return; + + // Check probability or forced spawn + if (forceSpawn || UnityEngine.Random.value <= currentSpawnProbability) + { + // Pick a random spawn point from this tile + MonsterSpawnPoint spawnPoint = spawnPoints[UnityEngine.Random.Range(0, spawnPoints.Length)]; + + // Spawn the monster + SpawnMonster(spawnPoint.transform.position); + + // Reset timer and adjust probability + lastSpawnTime = Time.time; + timeSinceLastSpawn = 0f; + currentSpawnProbability = baseSpawnProbability; + OnSpawnProbabilityChanged?.Invoke(currentSpawnProbability); + } + } + + private void SpawnMonster(Vector3 position) + { + if (monsterPrefabs.Length == 0) + { + Debug.LogWarning("No monster prefabs assigned to DivingGameManager."); + return; + } + + // Select random monster prefab + GameObject prefab = monsterPrefabs[UnityEngine.Random.Range(0, monsterPrefabs.Length)]; + + // Instantiate monster + GameObject monsterObj = Instantiate(prefab, position, Quaternion.identity); + Monster monster = monsterObj.GetComponent(); + + if (monster != null) + { + // Subscribe to monster events + monster.OnPictureTaken += OnMonsterPictureTaken; + monster.OnMonsterDespawned += OnMonsterDespawned; + + // Add to active monsters list + activeMonsters.Add(monster); + + // Fire event + OnMonsterSpawned?.Invoke(monster); + } + else + { + Debug.LogError($"Monster prefab {prefab.name} does not have a Monster component!"); + Destroy(monsterObj); + } + } + + private void OnMonsterPictureTaken(Monster monster) + { + // Calculate points based on depth + int depthBonus = Mathf.FloorToInt(Mathf.Abs(monster.transform.position.y) * depthMultiplier); + int pointsAwarded = basePoints + depthBonus; + + // Add score + playerScore += pointsAwarded; + + // Fire events + OnScoreChanged?.Invoke(playerScore); + OnPictureTaken?.Invoke(monster, pointsAwarded); + } + + private void OnMonsterDespawned(Monster monster) + { + // Remove from active list + activeMonsters.Remove(monster); + + // Unsubscribe from events + monster.OnPictureTaken -= OnMonsterPictureTaken; + monster.OnMonsterDespawned -= OnMonsterDespawned; + } + + // Call this when the game ends + public void EndGame() + { + // Clean up active monsters + foreach (var monster in activeMonsters.ToArray()) + { + if (monster != null) + { + monster.DespawnMonster(); + } + } + + activeMonsters.Clear(); + + // Final score could be saved to player prefs or other persistence + Debug.Log($"Final Score: {playerScore}"); + } + } +} diff --git a/Assets/Scripts/Minigames/DivingForPictures/DivingGameManager.cs.meta b/Assets/Scripts/Minigames/DivingForPictures/DivingGameManager.cs.meta new file mode 100644 index 00000000..be63d340 --- /dev/null +++ b/Assets/Scripts/Minigames/DivingForPictures/DivingGameManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4b2b072821054504b03fc4014b063153 +timeCreated: 1758273243 \ No newline at end of file diff --git a/Assets/Scripts/Minigames/DivingForPictures/DivingScoreUI.cs b/Assets/Scripts/Minigames/DivingForPictures/DivingScoreUI.cs new file mode 100644 index 00000000..b64d7b14 --- /dev/null +++ b/Assets/Scripts/Minigames/DivingForPictures/DivingScoreUI.cs @@ -0,0 +1,75 @@ +using UnityEngine; +using TMPro; + +namespace Minigames.DivingForPictures +{ + public class DivingScoreUI : MonoBehaviour + { + [SerializeField] private TextMeshProUGUI scoreText; + [SerializeField] private GameObject scorePopupPrefab; + [SerializeField] private Transform popupParent; + + private DivingGameManager gameManager; + + private void Start() + { + gameManager = FindObjectOfType(); + + if (gameManager != null) + { + // Subscribe to events + gameManager.OnScoreChanged += UpdateScoreDisplay; + gameManager.OnPictureTaken += ShowScorePopup; + + // Initialize display + UpdateScoreDisplay(gameManager.PlayerScore); + } + else + { + Debug.LogWarning("No DivingGameManager found in scene."); + } + + // Create popup parent if needed + if (popupParent == null) + { + popupParent = transform; + } + } + + private void OnDestroy() + { + if (gameManager != null) + { + // Unsubscribe from events + gameManager.OnScoreChanged -= UpdateScoreDisplay; + gameManager.OnPictureTaken -= ShowScorePopup; + } + } + + private void UpdateScoreDisplay(int score) + { + if (scoreText != null) + { + scoreText.text = $"Score: {score}"; + } + } + + private void ShowScorePopup(Monster monster, int points) + { + if (scorePopupPrefab == null) return; + + // Create popup at monster position + GameObject popup = Instantiate(scorePopupPrefab, monster.transform.position, Quaternion.identity, popupParent); + + // Find text component and set value + TextMeshProUGUI popupText = popup.GetComponentInChildren(); + if (popupText != null) + { + popupText.text = $"+{points}"; + } + + // Auto-destroy after delay + Destroy(popup, 2f); + } + } +} diff --git a/Assets/Scripts/Minigames/DivingForPictures/DivingScoreUI.cs.meta b/Assets/Scripts/Minigames/DivingForPictures/DivingScoreUI.cs.meta new file mode 100644 index 00000000..b468d736 --- /dev/null +++ b/Assets/Scripts/Minigames/DivingForPictures/DivingScoreUI.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d5ec365b02ab496d8fa1d5f7d41a33e9 +timeCreated: 1758273243 \ No newline at end of file diff --git a/Assets/Scripts/Minigames/DivingForPictures/Monster.cs b/Assets/Scripts/Minigames/DivingForPictures/Monster.cs new file mode 100644 index 00000000..04eefcd5 --- /dev/null +++ b/Assets/Scripts/Minigames/DivingForPictures/Monster.cs @@ -0,0 +1,127 @@ +using UnityEngine; +using System; +using System.Collections; + +namespace Minigames.DivingForPictures +{ + public class Monster : MonoBehaviour + { + [Header("References")] + [SerializeField] private CircleCollider2D detectionCollider; + + private bool pictureAlreadyTaken = false; + private Camera mainCamera; + + // Events + public event Action OnPictureTaken; + public event Action OnMonsterSpawned; + public event Action OnMonsterDespawned; + + // Properties + public float PictureRadius => detectionCollider != null ? detectionCollider.radius : 0f; + + private void Awake() + { + if (detectionCollider == null) + detectionCollider = GetComponent(); + + mainCamera = Camera.main; + + // Start checking if monster is off-screen + StartCoroutine(CheckIfOffScreen()); + } + + private void OnEnable() + { + pictureAlreadyTaken = false; + OnMonsterSpawned?.Invoke(this); + } + + private IEnumerator CheckIfOffScreen() + { + WaitForSeconds wait = new WaitForSeconds(0.5f); + + while (true) + { + yield return wait; + + if (!IsVisibleToCamera()) + { + DespawnMonster(); + yield break; + } + } + } + + private bool IsVisibleToCamera() + { + if (mainCamera == null) + mainCamera = Camera.main; + + if (mainCamera == null) + return false; + + Vector3 viewportPoint = mainCamera.WorldToViewportPoint(transform.position); + float buffer = 0.2f; // Extra buffer outside the screen + + return viewportPoint.x > -buffer && + viewportPoint.x < 1 + buffer && + viewportPoint.y > -buffer && + viewportPoint.y < 1 + buffer; + } + + private void OnTriggerEnter2D(Collider2D other) + { + // Check if it's the player + if (other.CompareTag("Player") && !pictureAlreadyTaken) + { + TakePicture(); + } + } + + // Called when a picture is taken of this monster + public void TakePicture() + { + if (pictureAlreadyTaken) return; + + pictureAlreadyTaken = true; + OnPictureTaken?.Invoke(this); + + DespawnMonster(); + } + + // Public method to despawn this monster + public void DespawnMonster() + { + if (gameObject.activeSelf) + { + OnMonsterDespawned?.Invoke(this); + gameObject.SetActive(false); + Destroy(gameObject); + } + } + + // Visualization for the picture radius in editor + private void OnDrawGizmosSelected() + { + // Get the collider in edit mode + if (detectionCollider == null) + detectionCollider = GetComponent(); + + if (detectionCollider != null) + { + Gizmos.color = Color.yellow; + Gizmos.DrawWireSphere(transform.position, detectionCollider.radius / 2); + } + } + +#if UNITY_EDITOR + // Update collider radius in editor + private void OnValidate() + { + if (detectionCollider == null) + detectionCollider = GetComponent(); + } +#endif + } +} diff --git a/Assets/Scripts/Minigames/DivingForPictures/Monster.cs.meta b/Assets/Scripts/Minigames/DivingForPictures/Monster.cs.meta new file mode 100644 index 00000000..608ef6aa --- /dev/null +++ b/Assets/Scripts/Minigames/DivingForPictures/Monster.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e1b1889b120f4259a9fa9b7e415ea58a +timeCreated: 1758273243 \ No newline at end of file diff --git a/Assets/Scripts/Minigames/DivingForPictures/MonsterSpawnPoint.cs b/Assets/Scripts/Minigames/DivingForPictures/MonsterSpawnPoint.cs new file mode 100644 index 00000000..9e799d0a --- /dev/null +++ b/Assets/Scripts/Minigames/DivingForPictures/MonsterSpawnPoint.cs @@ -0,0 +1,25 @@ +using UnityEngine; + +namespace Minigames.DivingForPictures +{ + public class MonsterSpawnPoint : MonoBehaviour + { + [Tooltip("Visual radius for spawn point in editor")] + public float gizmoRadius = 0.5f; + + // Visual indicator for editor only + private void OnDrawGizmos() + { + Gizmos.color = Color.red; + Gizmos.DrawWireSphere(transform.position, gizmoRadius); + + // Draw a cross in the center for better visibility + Gizmos.DrawLine( + transform.position + Vector3.left * gizmoRadius * 0.5f, + transform.position + Vector3.right * gizmoRadius * 0.5f); + Gizmos.DrawLine( + transform.position + Vector3.up * gizmoRadius * 0.5f, + transform.position + Vector3.down * gizmoRadius * 0.5f); + } + } +} diff --git a/Assets/Scripts/Minigames/DivingForPictures/MonsterSpawnPoint.cs.meta b/Assets/Scripts/Minigames/DivingForPictures/MonsterSpawnPoint.cs.meta new file mode 100644 index 00000000..2ef3e03b --- /dev/null +++ b/Assets/Scripts/Minigames/DivingForPictures/MonsterSpawnPoint.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5ddb6d3629fe4b46b1d7ae972a83539c +timeCreated: 1758273243 \ No newline at end of file