using System; using BlueWater.Uis; using UnityEngine; namespace BlueWater.Tycoons { [Serializable] public class Pump : InteractionFurniture { [SerializeField] private float _interactionHoldingTime = 1f; [SerializeField] private PumpingMessage _pumpingMessageObject; [SerializeField] private Vector3 _offset; [SerializeField, Range(0, 1000)] private int addedLiquid = 400; private bool _isPlayerInteracting; private void Update() { var holdingGauge = 0f; if (HoldingElapsedTime > 0f) { holdingGauge = Mathf.Clamp(HoldingElapsedTime / _interactionHoldingTime, 0f, 1f); } if (IsShowing) { EventManager.InvokeHoldInteracting(holdingGauge); } if (HoldingElapsedTime > _interactionHoldingTime) { HoldingElapsedTime -= _interactionHoldingTime; EventManager.InvokeAddBarrels(addedLiquid); var pumpingMessage = Instantiate(_pumpingMessageObject, transform.position + _offset, Quaternion.identity, TycoonUiManager.Instance.WorldCanvas.transform); pumpingMessage.Initialize(addedLiquid); } if (_isPlayerInteracting) { HoldingElapsedTime += Time.deltaTime; } else { if (HoldingElapsedTime > 0f) { HoldingElapsedTime -= Time.deltaTime; } } } public override void Interaction() { _isPlayerInteracting = true; } public override void CancelInteraction() { _isPlayerInteracting = false; } public override bool CanInteraction() { return !GameManager.Instance.CurrentTycoonPlayer.TycoonPickupHandler.IsPickedUpAnything(); } } }