diff --git a/Rescues/Assets/Art/TestImages/MosaicTest.png b/Rescues/Assets/Art/TestImages/MosaicTest.png new file mode 100644 index 00000000..ce9fe0fc Binary files /dev/null and b/Rescues/Assets/Art/TestImages/MosaicTest.png differ diff --git a/Rescues/Assets/Art/TestImages/MosaicTest.png.meta b/Rescues/Assets/Art/TestImages/MosaicTest.png.meta new file mode 100644 index 00000000..c0fe3572 --- /dev/null +++ b/Rescues/Assets/Art/TestImages/MosaicTest.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 0f2b414aefc0b1f499f3abbcacc000e8 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Art/TestImages/arrow_left.png b/Rescues/Assets/Art/TestImages/arrow_left.png new file mode 100644 index 00000000..7e466054 Binary files /dev/null and b/Rescues/Assets/Art/TestImages/arrow_left.png differ diff --git a/Rescues/Assets/Art/TestImages/arrow_left.png.meta b/Rescues/Assets/Art/TestImages/arrow_left.png.meta new file mode 100644 index 00000000..2837055e --- /dev/null +++ b/Rescues/Assets/Art/TestImages/arrow_left.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 3c61cd78ed7bb25448a4b8311379b988 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Art/TestImages/arrow_right.png b/Rescues/Assets/Art/TestImages/arrow_right.png new file mode 100644 index 00000000..dab9fe40 Binary files /dev/null and b/Rescues/Assets/Art/TestImages/arrow_right.png differ diff --git a/Rescues/Assets/Art/TestImages/arrow_right.png.meta b/Rescues/Assets/Art/TestImages/arrow_right.png.meta new file mode 100644 index 00000000..4ea31673 --- /dev/null +++ b/Rescues/Assets/Art/TestImages/arrow_right.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: e1e08eb3f05dc6d429dec912d307a62a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Resources/Data/Puzzles.meta b/Rescues/Assets/Resources/Data/Puzzles.meta new file mode 100644 index 00000000..25dea64c --- /dev/null +++ b/Rescues/Assets/Resources/Data/Puzzles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5891a22507ccd3845b5943d8cc7a7219 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Resources/Data/Puzzles/CircleMosaicData.asset b/Rescues/Assets/Resources/Data/Puzzles/CircleMosaicData.asset new file mode 100644 index 00000000..b3ba18a4 --- /dev/null +++ b/Rescues/Assets/Resources/Data/Puzzles/CircleMosaicData.asset @@ -0,0 +1,36 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d4c0cc75405f2044c8a9284b9411ec91, type: 3} + m_Name: CircleMosaicData + m_EditorClassIdentifier: + Name: dads + Icon: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + Angle: 45 + Circles: + - InitialAngle: 45 + Rules: [] + - InitialAngle: 90 + Rules: + - Rule: {x: 5, y: -1} + - InitialAngle: 0 + Rules: + - Rule: {x: 2, y: 1} + - InitialAngle: 45 + Rules: + - Rule: {x: 1, y: -2} + - InitialAngle: 180 + Rules: + - Rule: {x: 5, y: 1} + - InitialAngle: 90 + Rules: + - Rule: {x: 4, y: 1} + - Rule: {x: 2, y: -2} diff --git a/Rescues/Assets/Resources/Data/Puzzles/CircleMosaicData.asset.meta b/Rescues/Assets/Resources/Data/Puzzles/CircleMosaicData.asset.meta new file mode 100644 index 00000000..a8bca135 --- /dev/null +++ b/Rescues/Assets/Resources/Data/Puzzles/CircleMosaicData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 69415afdbb5d23247859ea2c4080a70b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Resources/Data/Puzzles/TestMosaic.asset b/Rescues/Assets/Resources/Data/Puzzles/TestMosaic.asset new file mode 100644 index 00000000..c539fd15 --- /dev/null +++ b/Rescues/Assets/Resources/Data/Puzzles/TestMosaic.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d4c0cc75405f2044c8a9284b9411ec91, type: 3} + m_Name: TestMosaic + m_EditorClassIdentifier: + Name: test + Icon: {fileID: 0} + Angle: 45 + Circles: + - InitialAngle: 45 + Rules: [] + - InitialAngle: 90 + Rules: [] + - InitialAngle: 180 + Rules: [] diff --git a/Rescues/Assets/Resources/Data/Puzzles/TestMosaic.asset.meta b/Rescues/Assets/Resources/Data/Puzzles/TestMosaic.asset.meta new file mode 100644 index 00000000..9a6e8047 --- /dev/null +++ b/Rescues/Assets/Resources/Data/Puzzles/TestMosaic.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c26e37b0e6450b7498f04ebdd6b2b0e2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Resources/Prefabs/Puzzles.meta b/Rescues/Assets/Resources/Prefabs/Puzzles.meta new file mode 100644 index 00000000..936ede08 --- /dev/null +++ b/Rescues/Assets/Resources/Prefabs/Puzzles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a3b49b25214254447adb250014ced782 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle.meta b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle.meta new file mode 100644 index 00000000..51fd0160 --- /dev/null +++ b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 93f5b57356b9acd47960d101f9e92643 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/CircleMosaicPuzzleView.prefab b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/CircleMosaicPuzzleView.prefab new file mode 100644 index 00000000..3b9760f3 --- /dev/null +++ b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/CircleMosaicPuzzleView.prefab @@ -0,0 +1,258 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &492679994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 492679995} + - component: {fileID: 492679997} + - component: {fileID: 492679996} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &492679995 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 492679994} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1182749116} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &492679997 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 492679994} + m_CullTransparentMesh: 0 +--- !u!114 &492679996 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 492679994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 26 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u043F\u0430\u0437\u043B" +--- !u!1 &1182749115 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1182749116} + - component: {fileID: 1182749119} + - component: {fileID: 1182749118} + - component: {fileID: 1182749117} + m_Layer: 5 + m_Name: CloseButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1182749116 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1182749115} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 492679995} + m_Father: {fileID: 5985802490743960726} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 42} + m_SizeDelta: {x: 200, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1182749119 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1182749115} + m_CullTransparentMesh: 0 +--- !u!114 &1182749118 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1182749115} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1182749117 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1182749115} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1182749118} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 5035808665184864572} + m_MethodName: Close + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &1327543594636136411 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5985802490743960726} + - component: {fileID: 5035808665184864572} + m_Layer: 5 + m_Name: CircleMosaicPuzzleView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5985802490743960726 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1327543594636136411} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1182749116} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0.000015258789} + m_SizeDelta: {x: 0, y: 0.000061035} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5035808665184864572 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1327543594636136411} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8097c9501bcb1842b21be75741e54d2, type: 3} + m_Name: + m_EditorClassIdentifier: + IsFinished: 0 diff --git a/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/CircleMosaicPuzzleView.prefab.meta b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/CircleMosaicPuzzleView.prefab.meta new file mode 100644 index 00000000..4d0e78d4 --- /dev/null +++ b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/CircleMosaicPuzzleView.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 76988e77885b21a449538b98d6977f1d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/LeftRotationButton.prefab b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/LeftRotationButton.prefab new file mode 100644 index 00000000..216b3448 --- /dev/null +++ b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/LeftRotationButton.prefab @@ -0,0 +1,208 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8604968075746721796 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5742974492941762832} + - component: {fileID: 3451741565873588207} + - component: {fileID: 8519700516668784176} + - component: {fileID: 4427936746692720097} + m_Layer: 5 + m_Name: LeftRotationButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5742974492941762832 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8604968075746721796} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 5252724318830848237} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -35, y: 370.00006} + m_SizeDelta: {x: 60, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3451741565873588207 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8604968075746721796} + m_CullTransparentMesh: 0 +--- !u!114 &8519700516668784176 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8604968075746721796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 3c61cd78ed7bb25448a4b8311379b988, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4427936746692720097 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8604968075746721796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8519700516668784176} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: RotateLeft + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &9113849412200529884 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5252724318830848237} + - component: {fileID: 2102490300914958193} + - component: {fileID: 5222979875978404537} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5252724318830848237 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9113849412200529884} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 5742974492941762832} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2102490300914958193 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9113849412200529884} + m_CullTransparentMesh: 0 +--- !u!114 &5222979875978404537 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9113849412200529884} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: diff --git a/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/LeftRotationButton.prefab.meta b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/LeftRotationButton.prefab.meta new file mode 100644 index 00000000..e0089904 --- /dev/null +++ b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/LeftRotationButton.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 798308956d6075c4b841891b05e9a316 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RightRotationButton.prefab b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RightRotationButton.prefab new file mode 100644 index 00000000..d859871a --- /dev/null +++ b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RightRotationButton.prefab @@ -0,0 +1,208 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6751503566865258120 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6587834958409629510} + - component: {fileID: 6063616929010098130} + - component: {fileID: 8295091452759829728} + - component: {fileID: 4990461229895992137} + m_Layer: 5 + m_Name: RightRotationButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6587834958409629510 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6751503566865258120} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 8061813720960804563} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 35, y: 370.00006} + m_SizeDelta: {x: 60, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6063616929010098130 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6751503566865258120} + m_CullTransparentMesh: 0 +--- !u!114 &8295091452759829728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6751503566865258120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e1e08eb3f05dc6d429dec912d307a62a, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4990461229895992137 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6751503566865258120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8295091452759829728} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: RotateRight + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &8396270619366394760 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8061813720960804563} + - component: {fileID: 5568691044499500763} + - component: {fileID: 7544303897452563879} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8061813720960804563 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8396270619366394760} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6587834958409629510} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5568691044499500763 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8396270619366394760} + m_CullTransparentMesh: 0 +--- !u!114 &7544303897452563879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8396270619366394760} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: diff --git a/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RightRotationButton.prefab.meta b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RightRotationButton.prefab.meta new file mode 100644 index 00000000..e2e09c00 --- /dev/null +++ b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RightRotationButton.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1e009900849381145abeca64cd71deb9 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RotatingCircle.prefab b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RotatingCircle.prefab new file mode 100644 index 00000000..e864b303 --- /dev/null +++ b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RotatingCircle.prefab @@ -0,0 +1,133 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6927427174783677574 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3647339344330775748} + - component: {fileID: 6029328819500736042} + - component: {fileID: 361217493685625725} + - component: {fileID: 3438003328174313079} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3647339344330775748 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6927427174783677574} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 867966818671290255} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 900, y: 900} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6029328819500736042 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6927427174783677574} + m_CullTransparentMesh: 0 +--- !u!114 &361217493685625725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6927427174783677574} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 0f2b414aefc0b1f499f3abbcacc000e8, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3438003328174313079 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6927427174783677574} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8005dd99bccd91b40bc06e376f96952a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &8518570540395165503 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 867966818671290255} + - component: {fileID: 7374153112795862674} + m_Layer: 5 + m_Name: RotatingCircle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &867966818671290255 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8518570540395165503} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 3647339344330775748} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 800, y: 800} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7374153112795862674 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8518570540395165503} + m_CullTransparentMesh: 0 diff --git a/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RotatingCircle.prefab.meta b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RotatingCircle.prefab.meta new file mode 100644 index 00000000..b0d86f41 --- /dev/null +++ b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RotatingCircle.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d947144da63f6d148bbe037343e1bf56 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RotationButtons.prefab b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RotationButtons.prefab new file mode 100644 index 00000000..8164b3f0 --- /dev/null +++ b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RotationButtons.prefab @@ -0,0 +1,289 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6537085033724513595 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3681642564078749028} + m_Layer: 0 + m_Name: RotationButtons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3681642564078749028 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6537085033724513595} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 8165793359990326969} + - {fileID: 7447246877406750664} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 800, y: 800} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &4338478743376926862 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3681642564078749028} + m_Modifications: + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 35 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 370 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_SizeDelta.x + value: 60 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6751503566865258120, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + propertyPath: m_Name + value: RightRotationButton + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 1e009900849381145abeca64cd71deb9, type: 3} +--- !u!224 &7447246877406750664 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 6587834958409629510, guid: 1e009900849381145abeca64cd71deb9, + type: 3} + m_PrefabInstance: {fileID: 4338478743376926862} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &4531075410923603881 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3681642564078749028} + m_Modifications: + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_AnchoredPosition.x + value: -35 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 370 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_SizeDelta.x + value: 60 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8604968075746721796, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + propertyPath: m_Name + value: LeftRotationButton + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 798308956d6075c4b841891b05e9a316, type: 3} +--- !u!224 &8165793359990326969 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 5742974492941762832, guid: 798308956d6075c4b841891b05e9a316, + type: 3} + m_PrefabInstance: {fileID: 4531075410923603881} + m_PrefabAsset: {fileID: 0} diff --git a/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RotationButtons.prefab.meta b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RotationButtons.prefab.meta new file mode 100644 index 00000000..391d6323 --- /dev/null +++ b/Rescues/Assets/Resources/Prefabs/Puzzles/CircleMosaicPuzzle/RotationButtons.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a7532346e5d25bd49b2b197065152d1c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Scenes/SampleScene.unity b/Rescues/Assets/Scenes/SampleScene.unity index 6ffce185..c7364101 100644 --- a/Rescues/Assets/Scenes/SampleScene.unity +++ b/Rescues/Assets/Scenes/SampleScene.unity @@ -529,6 +529,130 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &183301740 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 183301741} + - component: {fileID: 183301744} + - component: {fileID: 183301743} + - component: {fileID: 183301742} + m_Layer: 0 + m_Name: Mosaic (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &183301741 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183301740} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 6.07, y: 0.44, z: 0} + m_LocalScale: {x: 1.7706351, y: 1.7706351, z: 1.7706351} + m_Children: [] + m_Father: {fileID: 507574214} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &183301742 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183301740} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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: 2 + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.16, y: 0.16} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!61 &183301743 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183301740} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0.049999997, y: 0.049999997, z: 0.049999997, w: 0.049999997} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 0.16, y: 0.16} + newSize: {x: 0.16, y: 0.16} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 +--- !u!114 &183301744 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183301740} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 41efc48d101730640bafad04df334b70, type: 3} + m_Name: + m_EditorClassIdentifier: + _type: 5 + Puzzle: {fileID: 5035808665184864572, guid: 76988e77885b21a449538b98d6977f1d, type: 3} + PuzzleData: {fileID: 11400000, guid: 69415afdbb5d23247859ea2c4080a70b, type: 2} --- !u!1 &329898914 GameObject: m_ObjectHideFlags: 0 @@ -984,6 +1108,8 @@ Transform: m_Children: - {fileID: 1369854627} - {fileID: 1373586909} + - {fileID: 1978422840} + - {fileID: 183301741} m_Father: {fileID: 961537365} m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1373,7 +1499,7 @@ Transform: m_LocalScale: {x: 5.384, y: 3.571, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &843085236 MonoBehaviour: @@ -1387,8 +1513,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 1d48da8e38c8e5348b3fc58058ecd3ef, type: 3} m_Name: m_EditorClassIdentifier: - _scale: 0.05 - _scaleVector: {x: 0, y: 0, z: 0} --- !u!1 &961537363 GameObject: m_ObjectHideFlags: 0 @@ -3514,6 +3638,130 @@ Transform: m_Father: {fileID: 961537365} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1978422838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1978422840} + - component: {fileID: 1978422839} + - component: {fileID: 1978422841} + - component: {fileID: 1978422842} + m_Layer: 0 + m_Name: Mosaic + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1978422839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1978422838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 41efc48d101730640bafad04df334b70, type: 3} + m_Name: + m_EditorClassIdentifier: + _type: 5 + Puzzle: {fileID: 5035808665184864572, guid: 76988e77885b21a449538b98d6977f1d, type: 3} + PuzzleData: {fileID: 11400000, guid: c26e37b0e6450b7498f04ebdd6b2b0e2, type: 2} +--- !u!4 &1978422840 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1978422838} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 23.929539, y: 0.3, z: 0} + m_LocalScale: {x: 1.7706351, y: 1.7706351, z: 1.7706351} + m_Children: [] + m_Father: {fileID: 507574214} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!61 &1978422841 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1978422838} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0.049999997, y: 0.049999997, z: 0.049999997, w: 0.049999997} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 0.16, y: 0.16} + newSize: {x: 0.16, y: 0.16} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 +--- !u!212 &1978422842 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1978422838} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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: 2 + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.16, y: 0.16} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &2031073391 GameObject: m_ObjectHideFlags: 0 diff --git a/Rescues/Assets/Scripts/Controllers/GameControllers/MainControllers.cs b/Rescues/Assets/Scripts/Controllers/GameControllers/MainControllers.cs index 21ce119c..69bf0fc3 100644 --- a/Rescues/Assets/Scripts/Controllers/GameControllers/MainControllers.cs +++ b/Rescues/Assets/Scripts/Controllers/GameControllers/MainControllers.cs @@ -12,6 +12,7 @@ public MainControllers(GameContext context, Services services) Add(new TimeRemainingController()); Add(new ItemActiveController(context, services)); Add(new DoorTeleporterController(context, services)); + Add(new MainPuzzleController(context, services)); Add(new HidingPlaceController(context, services)); Add(new EnemyVisionController(context, services)); Add(new EnemyMoveController(context, services)); diff --git a/Rescues/Assets/Scripts/Controllers/GameControllers/MainPuzzleController.cs b/Rescues/Assets/Scripts/Controllers/GameControllers/MainPuzzleController.cs new file mode 100644 index 00000000..29a8d465 --- /dev/null +++ b/Rescues/Assets/Scripts/Controllers/GameControllers/MainPuzzleController.cs @@ -0,0 +1,91 @@ +using UnityEngine; + + +namespace Rescues +{ + public sealed class MainPuzzleController : IInitializeController, ITearDownController + { + #region Fields + + private readonly GameContext _context; + + #endregion + + + #region ClassLifeCycles + + public MainPuzzleController(GameContext context, Services services) + { + _context = context; + } + + #endregion + + + #region IInitializeController + + public void Initialize() + { + var puzzleInteracts = _context.GetTriggers(InteractableObjectType.Puzzle); + var canvas = Object.FindObjectOfType(); + var puzzleControllers = new PuzzlesControllers(); + + foreach (var trigger in puzzleInteracts) + { + var puzlleBehaviour = trigger as PuzzleBehaviour; + puzlleBehaviour.OnFilterHandler += OnFilterHandler; + puzlleBehaviour.OnTriggerEnterHandler += OnTriggerEnterHandler; + puzlleBehaviour.OnTriggerExitHandler += OnTriggerExitHandler; + + foreach (var somePuzzleController in puzzleControllers.ControllersList) + { + if (somePuzzleController.Value == puzlleBehaviour.Puzzle.GetType()) + { + var puzzleInstance = GameObject.Instantiate(puzlleBehaviour.Puzzle, canvas.transform); + puzlleBehaviour.Puzzle = puzzleInstance; + somePuzzleController.Key.Initialize(puzzleInstance, puzlleBehaviour); + } + } + } + } + + #endregion + + + #region ITearDownController + + public void TearDown() + { + var puzlles = _context.GetTriggers(InteractableObjectType.Puzzle); + foreach (var trigger in puzlles) + { + var puzlleBehaviour = trigger as PuzzleBehaviour; + puzlleBehaviour.OnFilterHandler -= OnFilterHandler; + puzlleBehaviour.OnTriggerEnterHandler -= OnTriggerEnterHandler; + puzlleBehaviour.OnTriggerExitHandler -= OnTriggerExitHandler; + } + } + + #endregion + + + #region Methods + + private bool OnFilterHandler(Collider2D obj) + { + return obj.CompareTag(TagManager.PLAYER); + } + + private void OnTriggerEnterHandler(ITrigger enteredObject) + { + enteredObject.IsInteractable = true; + } + + private void OnTriggerExitHandler(ITrigger enteredObject) + { + enteredObject.IsInteractable = false; + } + + #endregion + } +} \ No newline at end of file diff --git a/Rescues/Assets/Scripts/Controllers/GameControllers/MainPuzzleController.cs.meta b/Rescues/Assets/Scripts/Controllers/GameControllers/MainPuzzleController.cs.meta new file mode 100644 index 00000000..2b4853ae --- /dev/null +++ b/Rescues/Assets/Scripts/Controllers/GameControllers/MainPuzzleController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58736472c3fb4124187f91ead548b991 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Scripts/Controllers/Player/InputController.cs b/Rescues/Assets/Scripts/Controllers/Player/InputController.cs index a50ec6e6..990397c5 100644 --- a/Rescues/Assets/Scripts/Controllers/Player/InputController.cs +++ b/Rescues/Assets/Scripts/Controllers/Player/InputController.cs @@ -69,6 +69,12 @@ public void Execute() } } + + var puzzleObject = GetInteractableObject(InteractableObjectType.Puzzle); + if (puzzleObject != null) + { + puzzleObject.Puzzle.Activate(); + } } if (Input.GetButtonUp("Inventory")) diff --git a/Rescues/Assets/Scripts/Controllers/PuzzlesControllers.meta b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers.meta new file mode 100644 index 00000000..ddca2653 --- /dev/null +++ b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4cfde2af4e1575046ba5cbd300c78dbe +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/CircleMosaicController.cs b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/CircleMosaicController.cs new file mode 100644 index 00000000..1b4c50b6 --- /dev/null +++ b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/CircleMosaicController.cs @@ -0,0 +1,59 @@ +using UnityEngine; + +namespace Rescues +{ + public class CircleMosaicController : IPuzzleController + { + + #region IPuzzleController + + public void Initialize(Puzzle puzzle, PuzzleBehaviour puzzleBehaviour) + { + puzzle.Activated += Activate; + puzzle.Closed += Close; + puzzle.Finished += Finish; + puzzle.CheckCompleted += CheckComplete; + puzzle.ResetValuesToDefault += ResetValues; + + var circlePuzzle = puzzle as CircleMosaicPuzzle; + circlePuzzle.Initialize(puzzleBehaviour.PuzzleData as CircleMosaicData); + Close(puzzle); + } + + public void Activate(Puzzle puzzle) + { + if (!puzzle.IsFinished) + puzzle.gameObject.SetActive(true); + //TODO Надо как-то останавливать игру, делать паузу? Или перехватывать управление? + } + + public void Close(Puzzle puzzle) + { + puzzle.gameObject.SetActive(false); + } + + public void Finish(Puzzle puzzle) + { + puzzle.IsFinished = true; + Close(puzzle); + } + + public void CheckComplete(Puzzle puzzle) + { + var specificPuzzle = puzzle as CircleMosaicPuzzle; + if (specificPuzzle != null) + { + var uncompleteCircles = specificPuzzle.Circles.FindAll(e => !e.IsComplete()); + if (uncompleteCircles.Count == 0) + Finish(specificPuzzle); + } + } + + public void ResetValues(Puzzle puzzle) + { + //TODO + } + + #endregion + } +} \ No newline at end of file diff --git a/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/CircleMosaicController.cs.meta b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/CircleMosaicController.cs.meta new file mode 100644 index 00000000..2580fe94 --- /dev/null +++ b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/CircleMosaicController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a15201783080654793ad968e8c82e62 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/PuzzlesControllers.cs b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/PuzzlesControllers.cs new file mode 100644 index 00000000..d1d5a616 --- /dev/null +++ b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/PuzzlesControllers.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; + + +namespace Rescues +{ + public sealed class PuzzlesControllers + { + #region Fileds + + private Dictionary _controllersList = new Dictionary(); + + #endregion + + + #region Properties + + public Dictionary ControllersList => _controllersList; + + #endregion + + + #region PrivateData + + /// + /// Add here controller your puzzle + /// + public PuzzlesControllers() + { + _controllersList.Add(new WiresController(), typeof(WiresPuzzle)); + _controllersList.Add(new CircleMosaicController(), typeof(CircleMosaicPuzzle)); + } + + #endregion + } +} \ No newline at end of file diff --git a/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/PuzzlesControllers.cs.meta b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/PuzzlesControllers.cs.meta new file mode 100644 index 00000000..7ff90869 --- /dev/null +++ b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/PuzzlesControllers.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3bacaf65f2ed48cfad92b1940fdf3304 +timeCreated: 1596573868 \ No newline at end of file diff --git a/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/WiresController.cs b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/WiresController.cs new file mode 100644 index 00000000..76d182a5 --- /dev/null +++ b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/WiresController.cs @@ -0,0 +1,61 @@ +namespace Rescues +{ + public class WiresController : IPuzzleController + { + + #region IPuzzleController + + public void Initialize(Puzzle puzzle, PuzzleBehaviour puzzleBehaviour) + { + puzzle.Activated += Activate; + puzzle.Closed += Close; + puzzle.Finished += Finish; + puzzle.CheckCompleted += CheckComplete; + puzzle.ResetValuesToDefault += ResetValues; + + Close(puzzle); + } + + public void Activate(Puzzle puzzle) + { + if (!puzzle.IsFinished) + puzzle.gameObject.SetActive(true); + //TODO Надо как-то останавливать игру, делать паузу? Или перехватывать управление? + } + + public void Close(Puzzle puzzle) + { + puzzle.gameObject.SetActive(false); + } + + public void Finish(Puzzle puzzle) + { + puzzle.IsFinished = true; + Close(puzzle); + } + + public void CheckComplete(Puzzle puzzle) + { + var specificPuzzle = puzzle as WiresPuzzle; + if (specificPuzzle != null) + { + var checkCounter = 0; + for (int i = 0; i < specificPuzzle.Connectors.Count; i++) + { + if (specificPuzzle.Connectors[i].IsCorrectWire) + checkCounter++; + } + + if (checkCounter == specificPuzzle.Connectors.Count - 1) + Finish(specificPuzzle); + } + } + + public void ResetValues(Puzzle puzzle) + { + //TODO + } + + #endregion + } +} \ No newline at end of file diff --git a/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/WiresController.cs.meta b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/WiresController.cs.meta new file mode 100644 index 00000000..d05586ca --- /dev/null +++ b/Rescues/Assets/Scripts/Controllers/PuzzlesControllers/WiresController.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 94565024f9434c9d8ac0c33c914a63fb +timeCreated: 1596569796 \ No newline at end of file diff --git a/Rescues/Assets/Scripts/Data/BasePuzzleData.cs b/Rescues/Assets/Scripts/Data/BasePuzzleData.cs new file mode 100644 index 00000000..d960501b --- /dev/null +++ b/Rescues/Assets/Scripts/Data/BasePuzzleData.cs @@ -0,0 +1,12 @@ +using UnityEngine; + + +namespace Rescues +{ + public class BasePuzzleData : ScriptableObject + { + public string Name; + public Sprite Icon; + } +} + diff --git a/Rescues/Assets/Scripts/Data/BasePuzzleData.cs.meta b/Rescues/Assets/Scripts/Data/BasePuzzleData.cs.meta new file mode 100644 index 00000000..f4ddd9e9 --- /dev/null +++ b/Rescues/Assets/Scripts/Data/BasePuzzleData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d010e435a33bc5240b4178d27299438f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Scripts/Data/CircleMosaicData.cs b/Rescues/Assets/Scripts/Data/CircleMosaicData.cs new file mode 100644 index 00000000..3a289562 --- /dev/null +++ b/Rescues/Assets/Scripts/Data/CircleMosaicData.cs @@ -0,0 +1,69 @@ +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using System; + +namespace Rescues +{ + [Serializable] + public struct Rules + { + public Vector2 Rule; + } + + [Serializable] + public struct CircleMoveScheme + { + [Range(0, 360)] + public int InitialAngle; + public Sprite Image; + [ArrayElementTitleAttribute("Rule")] + public Rules[] Rules; + } + + [CreateAssetMenu(fileName = "CircleMosaicData", menuName = "Data/CircleMosaicData")] + public sealed class CircleMosaicData : BasePuzzleData + { + #region Fields + + public int Angle = 45; + + [ArrayElementTitleAttribute("Circle")] + public CircleMoveScheme[] Circles; + + #endregion + } + + public class ArrayElementTitleAttribute : PropertyAttribute + { + public string Varname; + public ArrayElementTitleAttribute(string ElementTitleVar) + { + Varname = ElementTitleVar; + } + } + + [CustomPropertyDrawer(typeof(ArrayElementTitleAttribute))] + public class ArrayElementTitleDrawer : PropertyDrawer + { + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return EditorGUI.GetPropertyHeight(property, label, true); + } + + protected virtual ArrayElementTitleAttribute Atribute + { + get { return (ArrayElementTitleAttribute)attribute; } + } + + SerializedProperty TitleNameProp; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + Debug.Log(property.propertyPath); + var lastSquareBracketIndex = property.propertyPath.LastIndexOf('['); + int pos = int.Parse(property.propertyPath[lastSquareBracketIndex + 1].ToString()); + EditorGUI.PropertyField(position, property, new GUIContent(Atribute.Varname + $" {pos + 1}"), true); + } + } +} diff --git a/Rescues/Assets/Scripts/Data/CircleMosaicData.cs.meta b/Rescues/Assets/Scripts/Data/CircleMosaicData.cs.meta new file mode 100644 index 00000000..6663427c --- /dev/null +++ b/Rescues/Assets/Scripts/Data/CircleMosaicData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d4c0cc75405f2044c8a9284b9411ec91 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Scripts/Enum/InteractableObjectType.cs b/Rescues/Assets/Scripts/Enum/InteractableObjectType.cs index e4a20cc2..a2c4bac4 100644 --- a/Rescues/Assets/Scripts/Enum/InteractableObjectType.cs +++ b/Rescues/Assets/Scripts/Enum/InteractableObjectType.cs @@ -7,5 +7,6 @@ public enum InteractableObjectType Item = 2, HidingPlace = 3, Trap = 4, + Puzzle = 5, } } diff --git a/Rescues/Assets/Scripts/Interface/IPuzzle.cs b/Rescues/Assets/Scripts/Interface/IPuzzle.cs new file mode 100644 index 00000000..b2ee700e --- /dev/null +++ b/Rescues/Assets/Scripts/Interface/IPuzzle.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Rescues +{ + public interface IPuzzle + { + void Activate(); + void Close(); + void Finish(); + void ResetValues(); + } +} diff --git a/Rescues/Assets/Scripts/Interface/IPuzzle.cs.meta b/Rescues/Assets/Scripts/Interface/IPuzzle.cs.meta new file mode 100644 index 00000000..872155e5 --- /dev/null +++ b/Rescues/Assets/Scripts/Interface/IPuzzle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1ac1e3cf154abd48856a1bcc129f2da +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Scripts/Interface/IPuzzleController.cs b/Rescues/Assets/Scripts/Interface/IPuzzleController.cs new file mode 100644 index 00000000..231969cf --- /dev/null +++ b/Rescues/Assets/Scripts/Interface/IPuzzleController.cs @@ -0,0 +1,12 @@ +namespace Rescues +{ + public interface IPuzzleController : IController + { + void Initialize(Puzzle puzzle, PuzzleBehaviour puzzleBehaviour); + void Activate(Puzzle puzzle); + void Close(Puzzle puzzle); + void CheckComplete(Puzzle puzzle); + void Finish(Puzzle puzzle); + void ResetValues(Puzzle puzzle); + } +} \ No newline at end of file diff --git a/Rescues/Assets/Scripts/Interface/IPuzzleController.cs.meta b/Rescues/Assets/Scripts/Interface/IPuzzleController.cs.meta new file mode 100644 index 00000000..a968a996 --- /dev/null +++ b/Rescues/Assets/Scripts/Interface/IPuzzleController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 68ac762d84f7f1f46b8cc82dc8624c15 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Scripts/LoadAssets/AssetsPathGameObject.cs b/Rescues/Assets/Scripts/LoadAssets/AssetsPathGameObject.cs index 33ed79a1..606c25a7 100644 --- a/Rescues/Assets/Scripts/LoadAssets/AssetsPathGameObject.cs +++ b/Rescues/Assets/Scripts/LoadAssets/AssetsPathGameObject.cs @@ -19,6 +19,12 @@ public sealed class AssetsPathGameObject { ScreenType.GameOver, "Prefabs/UI/Screen/Prefabs_UI_Screen_GameOver" }, }; + public static readonly Dictionary MosaicPuzzleParts = new Dictionary() + { + { MosaicPuzzleAssets.RotatingCircle, "Prefabs/Puzzles/CircleMosaicPuzzle/RotatingCircle" }, + { MosaicPuzzleAssets.Buttons, "Prefabs/Puzzles/CircleMosaicPuzzle/RotationButtons" }, + }; + #endregion } } diff --git a/Rescues/Assets/Scripts/LoadAssets/Type/MosaicPuzzleAssets.cs b/Rescues/Assets/Scripts/LoadAssets/Type/MosaicPuzzleAssets.cs new file mode 100644 index 00000000..9a1bd216 --- /dev/null +++ b/Rescues/Assets/Scripts/LoadAssets/Type/MosaicPuzzleAssets.cs @@ -0,0 +1,8 @@ +namespace Rescues +{ + public enum MosaicPuzzleAssets + { + RotatingCircle = 0, + Buttons = 1 + } +} diff --git a/Rescues/Assets/Scripts/LoadAssets/Type/MosaicPuzzleAssets.cs.meta b/Rescues/Assets/Scripts/LoadAssets/Type/MosaicPuzzleAssets.cs.meta new file mode 100644 index 00000000..d6f73aef --- /dev/null +++ b/Rescues/Assets/Scripts/LoadAssets/Type/MosaicPuzzleAssets.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5d0eff1f4e3c4794b92a53ec8579ffcb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Scripts/Model/Behaviour/PuzzleBehaviour.cs b/Rescues/Assets/Scripts/Model/Behaviour/PuzzleBehaviour.cs new file mode 100644 index 00000000..450bc491 --- /dev/null +++ b/Rescues/Assets/Scripts/Model/Behaviour/PuzzleBehaviour.cs @@ -0,0 +1,15 @@ +using UnityEngine; + +namespace Rescues +{ + public sealed class PuzzleBehaviour : InteractableObjectBehavior + { + #region Fields + + public Puzzle Puzzle; + + public BasePuzzleData PuzzleData; + + #endregion + } +} \ No newline at end of file diff --git a/Rescues/Assets/Scripts/Model/Behaviour/PuzzleBehaviour.cs.meta b/Rescues/Assets/Scripts/Model/Behaviour/PuzzleBehaviour.cs.meta new file mode 100644 index 00000000..35bfa4e0 --- /dev/null +++ b/Rescues/Assets/Scripts/Model/Behaviour/PuzzleBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 41efc48d101730640bafad04df334b70 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Scripts/Model/CharacterModel.cs b/Rescues/Assets/Scripts/Model/CharacterModel.cs index 0cb4684e..d77cbb87 100644 --- a/Rescues/Assets/Scripts/Model/CharacterModel.cs +++ b/Rescues/Assets/Scripts/Model/CharacterModel.cs @@ -146,7 +146,7 @@ private void SetState(State value) public void StateHandler() { - CustomDebug.Log(PlayerState); + //CustomDebug.Log(PlayerState); switch (_state) { case State.Moving: diff --git a/Rescues/Assets/Scripts/Model/Puzzles.meta b/Rescues/Assets/Scripts/Model/Puzzles.meta new file mode 100644 index 00000000..318a216b --- /dev/null +++ b/Rescues/Assets/Scripts/Model/Puzzles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b5383d2e4e0c8c54cae82c103ccf997c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Scripts/Model/Puzzles/CircleMosaicPuzzle.meta b/Rescues/Assets/Scripts/Model/Puzzles/CircleMosaicPuzzle.meta new file mode 100644 index 00000000..552f04e5 --- /dev/null +++ b/Rescues/Assets/Scripts/Model/Puzzles/CircleMosaicPuzzle.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 27ebca53d493bd940b3e8453bee28aec +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Rescues/Assets/Scripts/Model/Puzzles/CircleMosaicPuzzle/CircleMosaicPuzzle.cs b/Rescues/Assets/Scripts/Model/Puzzles/CircleMosaicPuzzle/CircleMosaicPuzzle.cs new file mode 100644 index 00000000..7a5b31dd --- /dev/null +++ b/Rescues/Assets/Scripts/Model/Puzzles/CircleMosaicPuzzle/CircleMosaicPuzzle.cs @@ -0,0 +1,143 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace Rescues +{ + public class CircleMosaicPuzzle : Puzzle + { + #region Fileds + + private const float BUTTON_OFFSET = 30; + private const string LEFT_IN_NAME = "Left"; + private List _circles = new List(); + private RotatingCircle _selectedCircle; + private Button[] _buttons; + private Dictionary _rules = new Dictionary(); + + #endregion + + + #region Propeties + + public List Circles + { + get => _circles; + } + + #endregion + + + #region Methods + + public void Initialize(CircleMosaicData data) + { + var circlesData = data.Circles; + + CreateRotatingCircles(circlesData.Length); + CreateButtons(); + + for (int i = 0; i < circlesData.Length; i++) + { + InitializeCircle(_circles[i], data.Angle, circlesData[i]); + } + } + + private void InitializeCircle(RotatingCircle circle, int rotationAngle, CircleMoveScheme scheme) + { + circle.Initialize(rotationAngle, scheme.InitialAngle); + circle.Selected += OnCircleSelected; + circle.Rotated += OnCircleRotated; + + var image = circle.gameObject.GetComponent(); + image.sprite = scheme.Image; + _rules.Add(circle, scheme.Rules); + } + + private void CreateRotatingCircles(int count) + { + for (int i = count - 1; i >= 0; i--) + { + var circleAsset = Resources.Load(AssetsPathGameObject.MosaicPuzzleParts[MosaicPuzzleAssets.RotatingCircle]); + + var circleParentObject = Instantiate(circleAsset, transform); + circleParentObject.transform.SetAsFirstSibling(); + var circleObject = circleParentObject.GetComponentInChildren(); + RectTransform rt = circleObject.GetComponent(); + var size = rt.sizeDelta; + rt.sizeDelta = new Vector2(size.x - (size.x / count * i), size.y - (size.y / count * i)); + + _circles.Add(circleObject); + } + var closeButton = GetComponentInChildren