From 5f08865a2b269bef186a4eb6c6b55e15db06e020 Mon Sep 17 00:00:00 2001 From: Janis Date: Sat, 4 Mar 2023 15:53:47 +0100 Subject: [PATCH] interactable --- Assets/Scenes/SampleScene.unity | 563 +++++++++---------- Assets/Scripts/Field.meta | 8 + Assets/Scripts/{ => Field}/Field.cs | 26 +- Assets/Scripts/{ => Field}/Field.cs.meta | 2 +- Assets/Scripts/Field/FieldController.cs | 14 + Assets/Scripts/Field/FieldController.cs.meta | 11 + Assets/Scripts/Interactable.cs | 53 ++ Assets/Scripts/Interactable.cs.meta | 11 + Assets/Scripts/PlayerController.cs | 23 +- Assets/Scripts/TimeManager.cs | 2 +- Assets/Scripts/UI/CursorText.cs | 53 ++ Assets/Scripts/UI/CursorText.cs.meta | 11 + Packages/manifest.json | 8 +- Packages/packages-lock.json | 56 +- ProjectSettings/ProjectVersion.txt | 4 +- ProjectSettings/TagManager.asset | 2 +- ProjectSettings/TimelineSettings.asset | 16 + 17 files changed, 506 insertions(+), 357 deletions(-) create mode 100644 Assets/Scripts/Field.meta rename Assets/Scripts/{ => Field}/Field.cs (60%) rename Assets/Scripts/{ => Field}/Field.cs.meta (83%) create mode 100644 Assets/Scripts/Field/FieldController.cs create mode 100644 Assets/Scripts/Field/FieldController.cs.meta create mode 100644 Assets/Scripts/Interactable.cs create mode 100644 Assets/Scripts/Interactable.cs.meta create mode 100644 Assets/Scripts/UI/CursorText.cs create mode 100644 Assets/Scripts/UI/CursorText.cs.meta create mode 100644 ProjectSettings/TimelineSettings.asset diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 5500f9f..3dbfe02 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -123,7 +123,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &153338327 +--- !u!1 &122753038 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -131,117 +131,127 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 153338328} - - component: {fileID: 153338330} - - component: {fileID: 153338329} - - component: {fileID: 153338332} - - component: {fileID: 153338331} - m_Layer: 5 - m_Name: Hotbar + - component: {fileID: 122753039} + - component: {fileID: 122753041} + - component: {fileID: 122753040} + - component: {fileID: 122753042} + m_Layer: 6 + m_Name: FieldController m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &153338328 -RectTransform: + m_IsActive: 1 +--- !u!4 &122753039 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 153338327} + m_GameObject: {fileID: 122753038} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: 9.95, y: 5.15, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 2143575113} + m_Father: {fileID: 1047402456} m_RootOrder: 2 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: 36.9} - m_SizeDelta: {x: 506.1665, y: 64.8931} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &153338329 -MonoBehaviour: +--- !u!212 &122753040 +SpriteRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 153338327} + m_GameObject: {fileID: 122753038} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -156035294, guid: c509c1aa8fcd34e40a98cdc96591e35b, type: 3} m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 605103416, guid: 795db869fd014b14fab2f82e44829257, 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!222 &153338330 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 153338327} - m_CullTransparentMesh: 1 ---- !u!114 &153338331 + 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!114 &122753041 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 153338327} + m_GameObject: {fileID: 122753038} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: daff4f23cf5534f478f13df54b51124a, type: 3} + m_Script: {fileID: 11500000, guid: 6b43d0d1aa7cd2c4db0db026202eb972, type: 3} m_Name: m_EditorClassIdentifier: - panelName: Hotbar - hotbarSlotPrefab: {fileID: 1989902681405785901, guid: 9bed75a8e605a864fb4b41f3e0ae9517, type: 3} - slots: [] - playerController: {fileID: 0} - hotbarSlotCount: 9 ---- !u!114 &153338332 -MonoBehaviour: + radius: 3 + interactText: Interact + interactTextOutOfRange: Out of range + field: {fileID: 0} + crop: {fileID: 0} +--- !u!61 &122753042 +BoxCollider2D: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 153338327} + m_GameObject: {fileID: 122753038} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 4 - m_StartCorner: 0 - m_StartAxis: 0 - m_CellSize: {x: 40, y: 40} - m_Spacing: {x: 14, y: 0} - m_Constraint: 0 - m_ConstraintCount: 2 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 0.9375, y: 0.8125} + 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!1 &218098462 GameObject: m_ObjectHideFlags: 0 @@ -436,7 +446,7 @@ Transform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &224768191 Animator: - serializedVersion: 4 + serializedVersion: 5 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -453,7 +463,8 @@ Animator: m_WarningMessage: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorControllerStateOnDisable: 0 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!70 &224768192 CapsuleCollider2D: m_ObjectHideFlags: 0 @@ -482,6 +493,9 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: fd29210254821be4dab438ab0312df18, type: 3} m_Name: m_EditorClassIdentifier: + interactableLayer: + serializedVersion: 2 + m_Bits: 64 --- !u!1 &518922041 GameObject: m_ObjectHideFlags: 0 @@ -1300,6 +1314,154 @@ MonoBehaviour: maxSlots: 0 maxStackSize: 0 items: [] +--- !u!1 &783176647 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 783176648} + - component: {fileID: 783176650} + - component: {fileID: 783176649} + - component: {fileID: 783176651} + m_Layer: 5 + m_Name: CursorText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &783176648 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 783176647} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2143575113} + m_RootOrder: 1 + 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: 200, y: 18.1301} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &783176649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 783176647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Cursor Text + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, 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: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + 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_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &783176650 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 783176647} + m_CullTransparentMesh: 1 +--- !u!114 &783176651 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 783176647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 247a0445b7ab3a14badc0fce020c3bc5, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &789509403 GameObject: m_ObjectHideFlags: 0 @@ -56919,100 +57081,6 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1027537964 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1027537965} - - component: {fileID: 1027537967} - - component: {fileID: 1027537966} - - component: {fileID: 1027537968} - m_Layer: 5 - m_Name: Inventory - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &1027537965 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1027537964} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1707136374} - m_Father: {fileID: 2143575113} - m_RootOrder: 1 - 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: 803.2719, y: 425.6903} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1027537966 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1027537964} - 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_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: -99648765, guid: c6f7781b26bd819468e6b4fe8953536a, 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!222 &1027537967 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1027537964} - m_CullTransparentMesh: 1 ---- !u!114 &1027537968 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1027537964} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9269c8c372de3f5498d2af345ee9c855, type: 3} - m_Name: - m_EditorClassIdentifier: - panelName: Inventory - slotPrefab: {fileID: 9079120991637034566, guid: 9fb7f575f90d73343b4841c421d17567, type: 3} - slotListObj: {fileID: 1707136373} - slotUIList: [] --- !u!1 &1047402454 GameObject: m_ObjectHideFlags: 0 @@ -57022,7 +57090,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1047402456} - - component: {fileID: 1047402455} + - component: {fileID: 1047402457} m_Layer: 0 m_Name: Field m_TagString: Untagged @@ -57030,26 +57098,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &1047402455 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1047402454} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d700e4905ee3fd2408f52a4e3ecb48e8, type: 3} - m_Name: - m_EditorClassIdentifier: - isPlaced: 1 - placeableObject: {fileID: 0} - TESTCROP: {fileID: 11400000, guid: 4ce577b0996dc314ab1b42f42614e3a2, type: 2} - crop: {fileID: 0} - currentCropSprite: {fileID: 518922042} - daysSincePlanted: 0 - isWatered: 1 - state: 0 --- !u!4 &1047402456 Transform: m_ObjectHideFlags: 0 @@ -57064,9 +57112,30 @@ Transform: m_Children: - {fileID: 518922043} - {fileID: 531540404} + - {fileID: 122753039} m_Father: {fileID: 0} m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1047402457 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1047402454} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 53c8af14dae8dbe4e95cda372289f89e, type: 3} + m_Name: + m_EditorClassIdentifier: + isPlaced: 0 + placeableObject: {fileID: 0} + TESTCROP: {fileID: 0} + crop: {fileID: 0} + currentCropSprite: {fileID: 0} + daysSincePlanted: 0 + isWatered: 1 + state: 0 --- !u!1 &1507699183 GameObject: m_ObjectHideFlags: 0 @@ -57750,107 +57819,6 @@ Transform: m_Father: {fileID: 1507699185} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1707136373 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1707136374} - - component: {fileID: 1707136377} - - component: {fileID: 1707136376} - - component: {fileID: 1707136375} - m_Layer: 5 - m_Name: Slots - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1707136374 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1707136373} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1027537965} - 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: 114.4, y: -52} - m_SizeDelta: {x: 508.2096, y: 228.7211} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1707136375 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1707136373} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 0 - m_StartCorner: 0 - m_StartAxis: 0 - m_CellSize: {x: 42, y: 42} - m_Spacing: {x: 15, y: 15} - m_Constraint: 1 - m_ConstraintCount: 9 ---- !u!114 &1707136376 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1707136373} - 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: 0} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, 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!222 &1707136377 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1707136373} - m_CullTransparentMesh: 1 --- !u!1 &2143575109 GameObject: m_ObjectHideFlags: 0 @@ -57945,8 +57913,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 550426625} - - {fileID: 1027537965} - - {fileID: 153338328} + - {fileID: 783176648} m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scripts/Field.meta b/Assets/Scripts/Field.meta new file mode 100644 index 0000000..e2cc6bb --- /dev/null +++ b/Assets/Scripts/Field.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a9f7ee3f33be6934bb41385f9e552691 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Field.cs b/Assets/Scripts/Field/Field.cs similarity index 60% rename from Assets/Scripts/Field.cs rename to Assets/Scripts/Field/Field.cs index a90324b..3f4f669 100644 --- a/Assets/Scripts/Field.cs +++ b/Assets/Scripts/Field/Field.cs @@ -10,10 +10,9 @@ public enum FieldState public class Field : Building { - public Crop TESTCROP; public Crop crop; - public SpriteRenderer currentCropSprite; + public SpriteRenderer currentCropSpriteRenderer; public int daysSincePlanted; public bool isWatered = false; public FieldState state = FieldState.EMPTY; @@ -22,9 +21,20 @@ public class Field : Building private void Start() { TimeManager.OnDayChanged += AddDay; - //! DEBUG - OnPlace(); + } + + private void SetSprite(Sprite sprite) + { + if (currentCropSpriteRenderer) + { + currentCropSpriteRenderer.sprite = sprite; + currentCropSpriteRenderer.drawMode = SpriteDrawMode.Tiled; + currentCropSpriteRenderer.size = new Vector2(10, 10); // TODO: Make this dynamic + } + } + + private void AddDay() { if (crop && isPlaced && state != FieldState.DEAD) @@ -34,7 +44,7 @@ public class Field : Building else { daysSincePlanted++; - currentCropSprite.sprite = crop.sprites[daysSincePlanted]; + SetSprite(crop.sprites[daysSincePlanted]); } } @@ -45,12 +55,12 @@ public class Field : Building daysSincePlanted = 0; state = FieldState.GROWING; crop = newCrop; + SetSprite(crop.sprites[0]); + } public override void OnPlace() { - daysSincePlanted = 0; - state = FieldState.GROWING; - Plant(TESTCROP); + Plant(null); } } \ No newline at end of file diff --git a/Assets/Scripts/Field.cs.meta b/Assets/Scripts/Field/Field.cs.meta similarity index 83% rename from Assets/Scripts/Field.cs.meta rename to Assets/Scripts/Field/Field.cs.meta index 25f3434..dcc9cb9 100644 --- a/Assets/Scripts/Field.cs.meta +++ b/Assets/Scripts/Field/Field.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d700e4905ee3fd2408f52a4e3ecb48e8 +guid: 53c8af14dae8dbe4e95cda372289f89e MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/Field/FieldController.cs b/Assets/Scripts/Field/FieldController.cs new file mode 100644 index 0000000..d615f6c --- /dev/null +++ b/Assets/Scripts/Field/FieldController.cs @@ -0,0 +1,14 @@ +// Interactable object which lets the player plant & harvest a seed +using UnityEngine; + +public class FieldController : Interactable +{ + public Field field; + public Crop testCrop; + + public override void OnInteract() + { + Debug.Log("Interacting with field"); + field.Plant(testCrop); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Field/FieldController.cs.meta b/Assets/Scripts/Field/FieldController.cs.meta new file mode 100644 index 0000000..acf436d --- /dev/null +++ b/Assets/Scripts/Field/FieldController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6b43d0d1aa7cd2c4db0db026202eb972 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Interactable.cs b/Assets/Scripts/Interactable.cs new file mode 100644 index 0000000..c18a044 --- /dev/null +++ b/Assets/Scripts/Interactable.cs @@ -0,0 +1,53 @@ +// Base class for interactable object in the top-down game +using UnityEngine; + +public abstract class Interactable : MonoBehaviour +{ + [SerializeField] + [Range(0f, 10f)] + private float radius = 2f; // radius of interaction + + [SerializeField] + private string interactText = "Interact"; // text to display when player is in range + + [SerializeField] + private string interactTextOutOfRange = "Out of range"; // text to display when player is out of range + + public string GetInteractText(GameObject interactor = null) + { + if (interactor != null && IsInRange(interactor)) + { + return interactText; + } + else { return interactTextOutOfRange; } + } + + public abstract void OnInteract(); + + public float GetRadius() { return radius; } + + public void Interact(GameObject interactor) + { + // check if in range + if (!IsInRange(interactor)) + { + Debug.Log("Out of range"); + return; + } + + Debug.Log("Interacting with " + transform.name); + OnInteract(); + } + + public bool IsInRange(GameObject interactor) + { + return Vector2.Distance(transform.position, interactor.transform.position) <= radius; + } + + + private void OnDrawGizmosSelected() + { + Gizmos.color = Color.yellow; + Gizmos.DrawWireSphere(transform.position, radius); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Interactable.cs.meta b/Assets/Scripts/Interactable.cs.meta new file mode 100644 index 0000000..3a68798 --- /dev/null +++ b/Assets/Scripts/Interactable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 78bfb4ff0a48a0c45ac32103ac117bfb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/PlayerController.cs b/Assets/Scripts/PlayerController.cs index be74d9e..0f22fe4 100644 --- a/Assets/Scripts/PlayerController.cs +++ b/Assets/Scripts/PlayerController.cs @@ -6,15 +6,30 @@ using System; public class PlayerController : MonoBehaviour { - // Start is called before the first frame update - void Start() - { - } + [SerializeField] + LayerMask interactableLayer; // Layermask for interactable objects + + // Update is called once per frame void Update() { + // Interactable + if (Input.GetKeyDown(KeyCode.E)) + { + Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); + RaycastHit2D hit; + hit = Physics2D.Raycast(ray.origin, ray.direction, Mathf.Infinity, interactableLayer); + if (hit.collider != null) + { + Interactable interactable = hit.collider.GetComponent(); + if (interactable != null) + { + interactable.Interact(gameObject); + } + } + } } } diff --git a/Assets/Scripts/TimeManager.cs b/Assets/Scripts/TimeManager.cs index 57f2f35..2317556 100644 --- a/Assets/Scripts/TimeManager.cs +++ b/Assets/Scripts/TimeManager.cs @@ -40,7 +40,7 @@ public class TimeManager : MonoBehaviour // Increase minute Minute++; OnMinuteChanged?.Invoke(); - if (Minute >= 60) + if (Minute >= 59) { // Increase hour Hour++; diff --git a/Assets/Scripts/UI/CursorText.cs b/Assets/Scripts/UI/CursorText.cs new file mode 100644 index 0000000..2f58cd3 --- /dev/null +++ b/Assets/Scripts/UI/CursorText.cs @@ -0,0 +1,53 @@ +// Text which is left from the cursor +using UnityEngine; +using TMPro; + +public class CursorText : MonoBehaviour +{ + private TextMeshProUGUI textComponent; + private string text = ""; + private GameObject player; + + private void Start() + { + textComponent = GetComponent(); + player = GameObject.FindGameObjectWithTag("Player"); + } + + public void SetText(string newText) + { + text = newText; + this.textComponent.SetText(text); + } + + private void Update() + { + if (text.Length > 0) + { + // Set gameobject left from cursor + Vector3 mousePos = Input.mousePosition; + mousePos.x += 125; + transform.position = mousePos; + } + + + // if hovering over interactable object + Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); + RaycastHit2D hit; + + hit = Physics2D.Raycast(ray.origin, ray.direction, Mathf.Infinity, LayerMask.GetMask("Interactable")); + + if (hit.collider != null) + { + Interactable interactable = hit.collider.GetComponent(); + if (interactable != null) + { + SetText(interactable.GetInteractText(player)); + } + } + else + { + SetText(""); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/UI/CursorText.cs.meta b/Assets/Scripts/UI/CursorText.cs.meta new file mode 100644 index 0000000..49137b8 --- /dev/null +++ b/Assets/Scripts/UI/CursorText.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 247a0445b7ab3a14badc0fce020c3bc5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/manifest.json b/Packages/manifest.json index 928029d..e612475 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,16 +1,16 @@ { "dependencies": { - "com.unity.collab-proxy": "1.17.7", + "com.unity.collab-proxy": "2.0.1", "com.unity.feature.2d": "1.0.0", - "com.unity.ide.rider": "3.0.16", + "com.unity.ide.rider": "3.0.18", "com.unity.ide.visualstudio": "2.0.17", "com.unity.ide.vscode": "1.2.5", - "com.unity.render-pipelines.universal": "12.1.8", + "com.unity.render-pipelines.universal": "12.1.10", "com.unity.test-framework": "1.1.31", "com.unity.textmeshpro": "3.0.6", "com.unity.timeline": "1.6.4", "com.unity.ugui": "1.0.0", - "com.unity.visualscripting": "1.7.8", + "com.unity.visualscripting": "1.8.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", "com.unity.modules.animation": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 9ca31a5..a75b7b6 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -39,12 +39,12 @@ "url": "https://packages.unity.com" }, "com.unity.2d.psdimporter": { - "version": "6.0.6", + "version": "6.0.7", "depth": 1, "source": "registry", "dependencies": { - "com.unity.2d.animation": "7.0.8", - "com.unity.2d.common": "6.0.5", + "com.unity.2d.animation": "7.0.9", + "com.unity.2d.common": "6.0.6", "com.unity.2d.sprite": "1.0.0" }, "url": "https://packages.unity.com" @@ -74,7 +74,7 @@ "dependencies": {} }, "com.unity.2d.tilemap.extras": { - "version": "2.2.3", + "version": "2.2.4", "depth": 1, "source": "registry", "dependencies": { @@ -86,7 +86,7 @@ "url": "https://packages.unity.com" }, "com.unity.burst": { - "version": "1.7.3", + "version": "1.8.2", "depth": 1, "source": "registry", "dependencies": { @@ -95,12 +95,10 @@ "url": "https://packages.unity.com" }, "com.unity.collab-proxy": { - "version": "1.17.7", + "version": "2.0.1", "depth": 0, "source": "registry", - "dependencies": { - "com.unity.services.core": "1.0.1" - }, + "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.ext.nunit": { @@ -117,15 +115,15 @@ "dependencies": { "com.unity.2d.animation": "7.0.9", "com.unity.2d.pixel-perfect": "5.0.3", - "com.unity.2d.psdimporter": "6.0.6", + "com.unity.2d.psdimporter": "6.0.7", "com.unity.2d.sprite": "1.0.0", "com.unity.2d.spriteshape": "7.0.6", "com.unity.2d.tilemap": "1.0.0", - "com.unity.2d.tilemap.extras": "2.2.3" + "com.unity.2d.tilemap.extras": "2.2.4" } }, "com.unity.ide.rider": { - "version": "3.0.16", + "version": "3.0.18", "depth": 0, "source": "registry", "dependencies": { @@ -156,15 +154,8 @@ "dependencies": {}, "url": "https://packages.unity.com" }, - "com.unity.nuget.newtonsoft-json": { - "version": "3.0.2", - "depth": 2, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, "com.unity.render-pipelines.core": { - "version": "12.1.8", + "version": "12.1.10", "depth": 1, "source": "builtin", "dependencies": { @@ -174,14 +165,14 @@ } }, "com.unity.render-pipelines.universal": { - "version": "12.1.8", + "version": "12.1.10", "depth": 0, "source": "builtin", "dependencies": { "com.unity.mathematics": "1.2.1", - "com.unity.burst": "1.7.3", - "com.unity.render-pipelines.core": "12.1.8", - "com.unity.shadergraph": "12.1.8" + "com.unity.burst": "1.8.2", + "com.unity.render-pipelines.core": "12.1.10", + "com.unity.shadergraph": "12.1.10" } }, "com.unity.searcher": { @@ -191,23 +182,12 @@ "dependencies": {}, "url": "https://packages.unity.com" }, - "com.unity.services.core": { - "version": "1.6.0", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.modules.unitywebrequest": "1.0.0", - "com.unity.nuget.newtonsoft-json": "3.0.2", - "com.unity.modules.androidjni": "1.0.0" - }, - "url": "https://packages.unity.com" - }, "com.unity.shadergraph": { - "version": "12.1.8", + "version": "12.1.10", "depth": 1, "source": "builtin", "dependencies": { - "com.unity.render-pipelines.core": "12.1.8", + "com.unity.render-pipelines.core": "12.1.10", "com.unity.searcher": "4.9.1" } }, @@ -253,7 +233,7 @@ } }, "com.unity.visualscripting": { - "version": "1.7.8", + "version": "1.8.0", "depth": 0, "source": "registry", "dependencies": { diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index eabd633..ed449d8 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.3.15f1 -m_EditorVersionWithRevision: 2021.3.15f1 (e8e88683f834) +m_EditorVersion: 2021.3.20f1 +m_EditorVersionWithRevision: 2021.3.20f1 (577897200b8b) diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 5ce1183..4d0044d 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -11,7 +11,7 @@ TagManager: - - Water - UI - - + - Interactable - - - diff --git a/ProjectSettings/TimelineSettings.asset b/ProjectSettings/TimelineSettings.asset new file mode 100644 index 0000000..cfaebd7 --- /dev/null +++ b/ProjectSettings/TimelineSettings.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + 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: a287be6c49135cd4f9b2b8666c39d999, type: 3} + m_Name: + m_EditorClassIdentifier: + assetDefaultFramerate: 60 + m_DefaultFrameRate: 60