From 6ed8a1fe855d03d4db4b5ccbb7d90de98bb5a8b8 Mon Sep 17 00:00:00 2001 From: Pasha Date: Wed, 22 Apr 2026 00:11:59 +0100 Subject: [PATCH] Made presser properly press --- .../Prefabs/Buildings/PresserBuilding.prefab | 109 +++++++++++++++++- .../Buildings/Automation/PresserBuilding.cs | 72 +++++++----- Assets/Scripts/Game/TriggerDetector.cs | 11 +- 3 files changed, 153 insertions(+), 39 deletions(-) diff --git a/Assets/Prefabs/Buildings/PresserBuilding.prefab b/Assets/Prefabs/Buildings/PresserBuilding.prefab index 0703958..59eed5c 100644 --- a/Assets/Prefabs/Buildings/PresserBuilding.prefab +++ b/Assets/Prefabs/Buildings/PresserBuilding.prefab @@ -1,5 +1,100 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &1570872871484658396 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8817646919675700749} + - component: {fileID: 6499977455909793586} + - component: {fileID: 8140780552350643576} + m_Layer: 0 + m_Name: AOE + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8817646919675700749 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1570872871484658396} + 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: 3484520099208115360} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!61 &6499977455909793586 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1570872871484658396} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 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 + m_Size: {x: 150, y: 110} + m_EdgeRadius: 0 +--- !u!114 &8140780552350643576 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1570872871484658396} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a471a3a004424f44aed18516c22740e, type: 3} + m_Name: + m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.TriggerDetector --- !u!1 &4125748828694197055 GameObject: m_ObjectHideFlags: 0 @@ -37,6 +132,7 @@ RectTransform: - {fileID: 4096697452073127701} - {fileID: 6793262744715789825} - {fileID: 7373586313877545823} + - {fileID: 8817646919675700749} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} @@ -61,6 +157,7 @@ MonoBehaviour: PresserAnimator: {fileID: 2069929881663685092} TopCollider: {fileID: 2714168551213278428} BottomCollider: {fileID: 8580655252957421185} + EffectTrigger: {fileID: 8140780552350643576} --- !u!222 &329628596091536199 CanvasRenderer: m_ObjectHideFlags: 0 @@ -257,7 +354,7 @@ BoxCollider2D: drawMode: 0 adaptiveTiling: 0 m_AutoTiling: 0 - m_Size: {x: 120, y: 16} + m_Size: {x: 88, y: 16} m_EdgeRadius: 0 --- !u!1 &6685246690386729584 GameObject: @@ -329,7 +426,7 @@ BoxCollider2D: m_UsedByEffector: 0 m_CompositeOperation: 0 m_CompositeOrder: 0 - m_Offset: {x: -70, y: 0} + m_Offset: {x: -62, y: 0} m_SpriteTilingProperty: border: {x: 0, y: 0, z: 0, w: 0} pivot: {x: 0, y: 0} @@ -339,7 +436,7 @@ BoxCollider2D: drawMode: 0 adaptiveTiling: 0 m_AutoTiling: 0 - m_Size: {x: 20, y: 120} + m_Size: {x: 36, y: 120} m_EdgeRadius: 0 --- !u!1 &7642770092097174314 GameObject: @@ -421,7 +518,7 @@ BoxCollider2D: drawMode: 0 adaptiveTiling: 0 m_AutoTiling: 0 - m_Size: {x: 120, y: 12} + m_Size: {x: 88, y: 16} m_EdgeRadius: 0 --- !u!1 &8718160904021803034 GameObject: @@ -493,7 +590,7 @@ BoxCollider2D: m_UsedByEffector: 0 m_CompositeOperation: 0 m_CompositeOrder: 0 - m_Offset: {x: 70, y: 0} + m_Offset: {x: 62, y: 0} m_SpriteTilingProperty: border: {x: 0, y: 0, z: 0, w: 0} pivot: {x: 0, y: 0} @@ -503,5 +600,5 @@ BoxCollider2D: drawMode: 0 adaptiveTiling: 0 m_AutoTiling: 0 - m_Size: {x: 20, y: 120} + m_Size: {x: 36, y: 120} m_EdgeRadius: 0 diff --git a/Assets/Scripts/Game/Buildings/Automation/PresserBuilding.cs b/Assets/Scripts/Game/Buildings/Automation/PresserBuilding.cs index f879681..552e7fd 100644 --- a/Assets/Scripts/Game/Buildings/Automation/PresserBuilding.cs +++ b/Assets/Scripts/Game/Buildings/Automation/PresserBuilding.cs @@ -1,7 +1,10 @@ -using Fruitomation.Global; +using System.Collections.Generic; +using System.Linq; +using Fruitomation.Game.Items; using JetBrains.Annotations; -using UnityEngine; using UnityEngine.Scripting; +using Fruitomation.Global; +using UnityEngine; namespace Fruitomation.Game { @@ -11,7 +14,21 @@ namespace Fruitomation.Game [SerializeField] private Animator PresserAnimator; [SerializeField] private Collider2D TopCollider; [SerializeField] private Collider2D BottomCollider; + [SerializeField] private TriggerDetector EffectTrigger; + private HashSet CurrentContainedObjects = new(); + + private void Awake() + { + EffectTrigger.SetAction(other => CurrentContainedObjects.Add(other.gameObject), + TriggerType.Enter + ); + + EffectTrigger.SetAction(other => CurrentContainedObjects.Remove(other.gameObject), + TriggerType.Exit + ); + } + private void Update() { if (GameStateController.Is(GameState.Simulation)) @@ -33,37 +50,32 @@ namespace Fruitomation.Game } } - [Preserve, UsedImplicitly] - public void OpenTop() - { - Debug.Log(nameof(OpenTop)); - TopCollider.enabled = false; - } - - [Preserve, UsedImplicitly] - public void CloseTop() - { - Debug.Log(nameof(CloseTop)); - TopCollider.enabled = true; - } - - [Preserve, UsedImplicitly] - public void OpenBottom() - { - Debug.Log(nameof(OpenBottom)); - BottomCollider.enabled = false; - } - - [Preserve, UsedImplicitly] - public void CloseBottom() - { - Debug.Log(nameof(CloseBottom)); - BottomCollider.enabled = true; - } + [Preserve, UsedImplicitly] public void OpenTop() => TopCollider.enabled = false; + [Preserve, UsedImplicitly] public void CloseTop() => TopCollider.enabled = true; + [Preserve, UsedImplicitly] public void OpenBottom() => BottomCollider.enabled = false; + [Preserve, UsedImplicitly] public void CloseBottom() => BottomCollider.enabled = true; [Preserve, UsedImplicitly] public void Press() { - Debug.Log("Presser Press"); + GameObject[] gameObjects = CurrentContainedObjects.ToArray(); + foreach (GameObject go in gameObjects) + { + bool isItem = go.transform.parent.TryGetComponent(out ItemBehaviour item); + if (!isItem) + { + return; + } + + item.CurrentType = item.CurrentType switch + { + ItemType.Apple => ItemType.AppleJuice, + ItemType.Grape => ItemType.GrapeJuice, + ItemType.Kiwi => ItemType.KiwiJuice, + ItemType.PitayaSkin => ItemType.PitayaFoodDye, + + var _ => item.CurrentType // Default + }; + } } } } \ No newline at end of file diff --git a/Assets/Scripts/Game/TriggerDetector.cs b/Assets/Scripts/Game/TriggerDetector.cs index 0b99511..293ed30 100644 --- a/Assets/Scripts/Game/TriggerDetector.cs +++ b/Assets/Scripts/Game/TriggerDetector.cs @@ -6,15 +6,15 @@ namespace Fruitomation.Game public enum TriggerType { Enter, - Stay + Stay, + Exit } public class TriggerDetector : MonoBehaviour { private Action RegisteredActionStay; private Action RegisteredActionEnter; - - private TriggerType Type; + private Action RegisteredActionExit; public void SetAction(Action action, TriggerType type) { @@ -28,6 +28,10 @@ namespace Fruitomation.Game RegisteredActionEnter = action; return; + case TriggerType.Exit: + RegisteredActionExit = action; + return; + default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } @@ -35,5 +39,6 @@ namespace Fruitomation.Game private void OnTriggerEnter2D(Collider2D other) => RegisteredActionEnter?.Invoke(other); private void OnTriggerStay2D(Collider2D other) => RegisteredActionStay?.Invoke(other); + private void OnTriggerExit2D(Collider2D other) => RegisteredActionExit?.Invoke(other); } }