diff --git a/Assets/Art/Annimations/FanAnnimationController.controller b/Assets/Art/Annimations/FanAnnimationController.controller index c2d25d2..72f1f64 100644 --- a/Assets/Art/Annimations/FanAnnimationController.controller +++ b/Assets/Art/Annimations/FanAnnimationController.controller @@ -8,7 +8,10 @@ AnimatorStateMachine: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Base Layer - m_ChildStates: [] + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 3558090082119480593} + m_Position: {x: 30, y: 170, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] @@ -16,9 +19,9 @@ AnimatorStateMachine: m_StateMachineBehaviours: [] m_AnyStatePosition: {x: 50, y: 20, z: 0} m_EntryPosition: {x: 50, y: 120, z: 0} - m_ExitPosition: {x: 800, y: 120, z: 0} + m_ExitPosition: {x: 140, y: 300, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} - m_DefaultState: {fileID: 0} + m_DefaultState: {fileID: 3558090082119480593} --- !u!91 &9100000 AnimatorController: m_ObjectHideFlags: 0 @@ -41,3 +44,29 @@ AnimatorController: m_IKPass: 0 m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: 9100000} +--- !u!1102 &3558090082119480593 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: FanSpin + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 498c3bddab78b0443935202550916333, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Assets/Art/Annimations/FanSpin.anim b/Assets/Art/Annimations/FanSpin.anim index b03fab9..09bb308 100644 --- a/Assets/Art/Annimations/FanSpin.anim +++ b/Assets/Art/Annimations/FanSpin.anim @@ -17,26 +17,75 @@ AnimationClip: m_PositionCurves: [] m_ScaleCurves: [] m_FloatCurves: [] - m_PPtrCurves: [] + m_PPtrCurves: + - serializedVersion: 2 + curve: + - time: 0 + value: {fileID: -1488015757, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - time: 0.083333336 + value: {fileID: 1806313799, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - time: 0.16666667 + value: {fileID: -372590348, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - time: 0.25 + value: {fileID: -1308241148, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - time: 0.33333334 + value: {fileID: 479577561, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - time: 0.41666666 + value: {fileID: -1211024486, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - time: 0.5 + value: {fileID: -33399811, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - time: 0.5833333 + value: {fileID: -1921457739, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - time: 0.6666667 + value: {fileID: -1421537418, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - time: 0.75 + value: {fileID: -981386966, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - time: 0.81666666 + value: {fileID: -1488015757, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + attribute: m_Sprite + path: + classID: 114 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + flags: 2 m_SampleRate: 60 m_WrapMode: 0 m_Bounds: m_Center: {x: 0, y: 0, z: 0} m_Extent: {x: 0, y: 0, z: 0} m_ClipBindingConstant: - genericBindings: [] - pptrCurveMapping: [] + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 2015549526 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: -1488015757, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - {fileID: 1806313799, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - {fileID: -372590348, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - {fileID: -1308241148, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - {fileID: 479577561, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - {fileID: -1211024486, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - {fileID: -33399811, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - {fileID: -1921457739, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - {fileID: -1421537418, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - {fileID: -981386966, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} + - {fileID: -1488015757, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} m_AnimationClipSettings: serializedVersion: 2 m_AdditiveReferencePoseClip: {fileID: 0} m_AdditiveReferencePoseTime: 0 m_StartTime: 0 - m_StopTime: 1 + m_StopTime: 0.8333333 m_OrientationOffsetY: 0 m_Level: 0 m_CycleOffset: 0 m_HasAdditiveReferencePose: 0 - m_LoopTime: 0 + m_LoopTime: 1 m_LoopBlend: 0 m_LoopBlendOrientation: 0 m_LoopBlendPositionY: 0 diff --git a/Assets/Prefabs/Buildings/FanBuilding.prefab b/Assets/Prefabs/Buildings/FanBuilding.prefab index 01579cd..dfc705d 100644 --- a/Assets/Prefabs/Buildings/FanBuilding.prefab +++ b/Assets/Prefabs/Buildings/FanBuilding.prefab @@ -32,7 +32,8 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 7887192787865691223} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} @@ -54,6 +55,8 @@ MonoBehaviour: m_EditorClassIdentifier: BuildingSprite: {fileID: -1488015757, guid: 31edbcd3f4707264dba0b4797ef3d622, type: 3} k__BackingField: {x: 1, y: 3} + TriggerDetector: {fileID: 260900526863299443} + FanAnimator: {fileID: 1099873069624310322} --- !u!222 &512124502862012575 CanvasRenderer: m_ObjectHideFlags: 0 @@ -158,3 +161,97 @@ BoxCollider2D: serializedVersion: 2 m_Size: {x: 40, y: 120} m_EdgeRadius: 0 +--- !u!1 &8647538348010432114 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7887192787865691223} + - component: {fileID: 8650414366585600465} + - component: {fileID: 260900526863299443} + m_Layer: 0 + m_Name: FanAOE + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7887192787865691223 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8647538348010432114} + 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: 546461529234046531} + 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: -230, y: 0} + m_SizeDelta: {x: 420, y: 120} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!61 &8650414366585600465 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8647538348010432114} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 1 + 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, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 430, y: 130} + m_EdgeRadius: 0 +--- !u!114 &260900526863299443 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8647538348010432114} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a471a3a004424f44aed18516c22740e, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Scripts/Game/Buildings/FanBuilding.cs b/Assets/Scripts/Game/Buildings/FanBuilding.cs index d9b16ea..6d84873 100644 --- a/Assets/Scripts/Game/Buildings/FanBuilding.cs +++ b/Assets/Scripts/Game/Buildings/FanBuilding.cs @@ -1,7 +1,45 @@ -namespace Fruitomation.Game +using Fruitomation.Global; +using UnityEngine; + +namespace Fruitomation.Game { public class FanBuilding : BuildingBase { - + [Header("Fan Specific Items")] + [SerializeField] private TriggerDetector TriggerDetector; + + [SerializeField] private Animator FanAnimator; + + private void Start() + { + TriggerDetector.SetAction((other) => + { + if (other.transform.parent.TryGetComponent(out Rigidbody2D body)) + { + body?.AddForce(-transform.right * Mathf.PI, ForceMode2D.Impulse); + } + }); + } + + private void Update() + { + if (GameStateController.Is(GameState.Simulation)) + { + if (FanAnimator.speed == 0) + { + FanAnimator.Play(0, 0, 0f); // Play from beginning + FanAnimator.speed = 1; // Playing + } + } + + else + { + if (FanAnimator.speed != 0) + { + FanAnimator.Play(0, 0, 0f); // Jump back to default frame + FanAnimator.speed = 0; // Paused + } + } + } } -} \ No newline at end of file +} diff --git a/Assets/Scripts/Game/TriggerDetector.cs b/Assets/Scripts/Game/TriggerDetector.cs new file mode 100644 index 0000000..4611e04 --- /dev/null +++ b/Assets/Scripts/Game/TriggerDetector.cs @@ -0,0 +1,13 @@ +using UnityEngine; +using System; + +namespace Fruitomation.Game +{ + public class TriggerDetector : MonoBehaviour + { + private Action RegisteredAction; + + public void SetAction(Action action) => RegisteredAction = action; + private void OnTriggerStay2D(Collider2D other) => RegisteredAction?.Invoke(other); + } +} diff --git a/Assets/Scripts/Game/TriggerDetector.cs.meta b/Assets/Scripts/Game/TriggerDetector.cs.meta new file mode 100644 index 0000000..3cfd720 --- /dev/null +++ b/Assets/Scripts/Game/TriggerDetector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7a471a3a004424f44aed18516c22740e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: