diff --git a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CornHarvester.cs b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CornHarvester.cs index 574604b2..03b99862 100644 --- a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CornHarvester.cs +++ b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CornHarvester.cs @@ -1,6 +1,40 @@ +using System; +using System.Linq; +using TMPro; +using UniRx; using UnityEngine; public class CornHarvester : MonoBehaviour { + [SerializeField] private TextMeshPro cornCounter; + [SerializeField] private GameObject harvestedPrefab; + private float duration = .5f; + private string counterFormat = "{0}"; + private Coroutine animationCoroutine; + + private readonly ReactiveProperty count = new ReactiveProperty(0); + private void Start() + { + count.AddTo(this); + cornCounter.text = "0"; + count.BatchFrame().Select(x => x.Sum()).Pairwise().Subscribe(x => + { + this.SafeStopCoroutine(animationCoroutine); + animationCoroutine = this.CallLerpSmooth(duration, lerp => { + cornCounter.text = string.Format(counterFormat, (int)Mathf.Lerp(x.Previous, x.Current, lerp)); + }); + + for (int i = 0; i < x.Current; i++) + { + var corn = Instantiate(harvestedPrefab, cornCounter.transform.position, Quaternion.identity); + corn.GetComponent().AddForce(Vector2.down * 20f, ForceMode2D.Impulse); + } + }).AddTo(this); + } + + public void AddCount(int value) + { + count.Value += value; + } } diff --git a/popcorn/Assets/MyGame/Scenes/CornField/CornField.unity b/popcorn/Assets/MyGame/Scenes/CornField/CornField.unity index 0f9c6d9e..8363d4e5 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/CornField.unity +++ b/popcorn/Assets/MyGame/Scenes/CornField/CornField.unity @@ -172,6 +172,182 @@ Transform: m_Father: {fileID: 1501215306} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &242576838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 242576839} + - component: {fileID: 242576842} + - component: {fileID: 242576841} + - component: {fileID: 242576840} + m_Layer: 0 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &242576839 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 242576838} + 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: 2138129848} + 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.8} + m_SizeDelta: {x: 1.8557076, y: 1.0995677} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &242576840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 242576838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 999 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 1ecb91d9b4f7d1b4d9ac80b14e928555, type: 2} + m_sharedMaterial: {fileID: 5374284371091958195, guid: 1ecb91d9b4f7d1b4d9ac80b14e928555, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4283487482 + m_fontColor: {r: 0.98039216, g: 0.83137256, b: 0.3137255, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 4.76 + m_fontSizeBase: 4.76 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 2 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 1 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 242576842} + m_maskType: 0 + _SortingLayerID: 0 + _SortingOrder: 0 +--- !u!222 &242576841 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 242576838} + m_CullTransparentMesh: 0 +--- !u!23 &242576842 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 242576838} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 5374284371091958195, guid: 1ecb91d9b4f7d1b4d9ac80b14e928555, 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 27 --- !u!1 &282523122 GameObject: m_ObjectHideFlags: 0 @@ -181,6 +357,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 282523123} + - component: {fileID: 282523124} m_Layer: 0 m_Name: machine m_TagString: Untagged @@ -205,6 +382,19 @@ Transform: m_Father: {fileID: 1501215306} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &282523124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282523122} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 126d56890a16475f8bb5bf49970a50c8, type: 3} + m_Name: + m_EditorClassIdentifier: + cornCounter: {fileID: 242576840} --- !u!4 &371589523 stripped Transform: m_CorrespondingSourceObject: {fileID: 8524901521850801685, guid: e642499b3643dab4ba05b02e8c6bde1c, @@ -234,6 +424,66 @@ PrefabInstance: propertyPath: m_IsActive value: 0 objectReference: {fileID: 0} + - target: {fileID: 1174152333972670061, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1174152333972670061, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1174152333972670061, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_SizeDelta.x + value: 91.25 + objectReference: {fileID: 0} + - target: {fileID: 1174152333972670061, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 89.625 + objectReference: {fileID: 0} + - target: {fileID: 1174152333972670061, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -25 + objectReference: {fileID: 0} + - target: {fileID: 1174152334443072208, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_SizeDelta.x + value: 135.25 + objectReference: {fileID: 0} + - target: {fileID: 1174152334443072209, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1174152334880891973, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1174152334880891973, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1174152334880891973, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_SizeDelta.x + value: 44 + objectReference: {fileID: 0} + - target: {fileID: 1174152334880891973, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 22 + objectReference: {fileID: 0} + - target: {fileID: 1174152334880891973, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -22 + objectReference: {fileID: 0} - target: {fileID: 3664916832310506794, guid: caaa748dbeed576499e8cae74d33f689, type: 3} propertyPath: m_AnchorMax.y @@ -414,6 +664,11 @@ PrefabInstance: propertyPath: m_IsActive value: 0 objectReference: {fileID: 0} + - target: {fileID: 4348639590627783772, guid: caaa748dbeed576499e8cae74d33f689, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: caaa748dbeed576499e8cae74d33f689, type: 3} --- !u!1 &536970157 @@ -615,6 +870,7 @@ MonoBehaviour: harvestPrefab: {fileID: 8524901521850801684, guid: e642499b3643dab4ba05b02e8c6bde1c, type: 3} harvestInsertPosition: {fileID: 895001959} + cornHarvester: {fileID: 282523124} plantLines: [] centerPlants: - {fileID: 1059216306} @@ -754,6 +1010,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 371589523} + - {fileID: 2041127587} m_Father: {fileID: 1501215306} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -983,6 +1240,26 @@ PrefabInstance: propertyPath: m_IsActive value: 0 objectReference: {fileID: 0} + - target: {fileID: 2975087781723360421, guid: 90ea860c4ec589d4aab99bfc127949f4, + type: 3} + propertyPath: m_text + value: x1 + objectReference: {fileID: 0} + - target: {fileID: 2975087781723360421, guid: 90ea860c4ec589d4aab99bfc127949f4, + type: 3} + propertyPath: m_sharedMaterial + value: + objectReference: {fileID: 2100000, guid: 6b0ec8d08c1e64575b9889e8f2732bd0, type: 2} + - target: {fileID: 2975087781723360421, guid: 90ea860c4ec589d4aab99bfc127949f4, + type: 3} + propertyPath: m_HorizontalAlignment + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6894893683192387336, guid: 90ea860c4ec589d4aab99bfc127949f4, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 6b0ec8d08c1e64575b9889e8f2732bd0, type: 2} - target: {fileID: 8144837015556047765, guid: 90ea860c4ec589d4aab99bfc127949f4, type: 3} propertyPath: m_AnchoredPosition.x @@ -1522,6 +1799,12 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!4 &2041127587 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2111766585493962375, guid: d52f3514ed7fd461b8ab77a202c122c6, + type: 3} + m_PrefabInstance: {fileID: 3833948995124101854} + m_PrefabAsset: {fileID: 0} --- !u!1 &2138129847 GameObject: m_ObjectHideFlags: 0 @@ -1532,7 +1815,6 @@ GameObject: m_Component: - component: {fileID: 2138129848} - component: {fileID: 2138129849} - - component: {fileID: 2138129851} - component: {fileID: 2138129850} m_Layer: 0 m_Name: machine_a @@ -1541,25 +1823,21 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &2138129848 -RectTransform: +--- !u!4 &2138129848 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2138129847} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: 0, y: -4.88, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] + m_Children: + - {fileID: 242576839} m_Father: {fileID: 282523123} 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: -4.88} - m_SizeDelta: {x: 8.88, y: 6.38} - m_Pivot: {x: 0.5, y: 0.5} --- !u!212 &2138129849 SpriteRenderer: m_ObjectHideFlags: 0 @@ -1610,47 +1888,28 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 ---- !u!114 &2138129850 -MonoBehaviour: +--- !u!68 &2138129850 +EdgeCollider2D: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2138129847} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 938a43f7855884176a5aafbe11ed912d, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Density: 1 m_Material: {fileID: 0} - m_Color: {r: 0.98039216, g: 0.83137256, b: 0.3137255, a: 1} - m_RaycastTarget: 0 - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 12800000, guid: b5532e9ce15694f55a0893a76a98cd78, type: 3} - m_FontSize: 50 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 5 - m_MaxSize: 50 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: 100 ---- !u!222 &2138129851 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2138129847} - m_CullTransparentMesh: 0 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_EdgeRadius: 0.64 + m_Points: + - {x: -3.931622, y: -1.2346358} + - {x: -3.2924247, y: -2.953443} + - {x: -1.7156212, y: -3.625627} + - {x: 1.7783345, y: -3.7068028} + - {x: 3.4502363, y: -2.8666859} + - {x: 3.9558334, y: -1.2588444} --- !u!1001 &875275074606616260 PrefabInstance: m_ObjectHideFlags: 0 @@ -1829,3 +2088,72 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 90ea860c4ec589d4aab99bfc127949f4, type: 3} +--- !u!1001 &3833948995124101854 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 895001959} + m_Modifications: + - target: {fileID: 2111766585493962375, guid: d52f3514ed7fd461b8ab77a202c122c6, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2111766585493962375, guid: d52f3514ed7fd461b8ab77a202c122c6, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.05 + objectReference: {fileID: 0} + - target: {fileID: 2111766585493962375, guid: d52f3514ed7fd461b8ab77a202c122c6, + type: 3} + propertyPath: m_LocalPosition.y + value: -3.6 + objectReference: {fileID: 0} + - target: {fileID: 2111766585493962375, guid: d52f3514ed7fd461b8ab77a202c122c6, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2111766585493962375, guid: d52f3514ed7fd461b8ab77a202c122c6, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2111766585493962375, guid: d52f3514ed7fd461b8ab77a202c122c6, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2111766585493962375, guid: d52f3514ed7fd461b8ab77a202c122c6, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2111766585493962375, guid: d52f3514ed7fd461b8ab77a202c122c6, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2111766585493962375, guid: d52f3514ed7fd461b8ab77a202c122c6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2111766585493962375, guid: d52f3514ed7fd461b8ab77a202c122c6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2111766585493962375, guid: d52f3514ed7fd461b8ab77a202c122c6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2111766585493962378, guid: d52f3514ed7fd461b8ab77a202c122c6, + type: 3} + propertyPath: m_Name + value: HarvestedCorn + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d52f3514ed7fd461b8ab77a202c122c6, type: 3} diff --git a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs index 4e342b65..92b019ff 100644 --- a/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs +++ b/popcorn/Assets/MyGame/Scenes/CornField/Scripts/CornField.cs @@ -11,7 +11,8 @@ public class CornField : MonoBehaviour { [SerializeField] private Button promoteGrowthButton; [SerializeField] private GameObject harvestPrefab; - [SerializeField] private Transform harvestInsertPosition; + [SerializeField] private Transform harvestInsertPosition; + [SerializeField] private CornHarvester cornHarvester; [Space] [SerializeField] private List plantLines = new List(); [SerializeField] private List centerPlants = new List(); @@ -65,6 +66,8 @@ public class CornField : MonoBehaviour harvest.transform.position = Vector3.Lerp(beginPos, harvestInsertPosition.position, f.EaseInCubic()); }, () => { + var seedCount = 25; + cornHarvester.AddCount(seedCount); Destroy(harvest); }); });