using BlueWater.Items; using UnityEngine; namespace BlueWater.Tycoons { public class TrashCan : InteractionFurniture { [SerializeField] private float _playerHoldingTime = 1f; [SerializeField] private bool _canRandomChange; private SpriteRenderer _spriteRenderer; private bool _isPlayerInteracting; private bool _canInteraction = true; private void Update() { if (TycoonManager.Instance.TycoonStatus.CurrentPassiveCard == PassiveCard.RandomChange) { if (InteractionCanvas.BalloonUi.IsWaitTimeOver()) { _canInteraction = true; } } if (IsShowing) { EventManager.InvokeHoldInteracting(HoldingElapsedTime); } if (HoldingElapsedTime >= 1f) { if (TycoonManager.Instance.TycoonStatus.CurrentPassiveCard == PassiveCard.RandomChange) { ChangeRandomCocktail(); } else { DiscardItem(); } } if (_isPlayerInteracting) { HoldingElapsedTime += Time.deltaTime / _playerHoldingTime; } else { if (HoldingElapsedTime > 0f) { HoldingElapsedTime -= Time.deltaTime; } } } public override void Interaction() { _isPlayerInteracting = true; } public override void CancelInteraction() { _isPlayerInteracting = false; } public override bool CanInteraction() { return CurrentTycoonPlayer.TycoonPickupHandler.IsPickedUpAnything() && ((TycoonManager.Instance.TycoonStatus.CurrentPassiveCard == PassiveCard.RandomChange && _canInteraction) || TycoonManager.Instance.TycoonStatus.CurrentPassiveCard != PassiveCard.RandomChange); } public override void ShowInteractionUi() { if (TycoonManager.Instance.TycoonStatus.CurrentPassiveCard == PassiveCard.RandomChange) { UpdateLocalizedString("InteractionTrashCanChange"); } else { UpdateLocalizedString("InteractionTrashCanDiscard"); } base.ShowInteractionUi(); } private void DiscardItem() { CocktailData discardCocktailData = null; if (!CurrentTycoonPlayer.TycoonPickupHandler.IsUnfinishedCocktailPickedUp) { var discardCocktailDataIdx = CurrentTycoonPlayer.TycoonPickupHandler.GetCurrentPickupItem().Idx; discardCocktailData = ItemManager.Instance.CocktailDataSo.GetDataByIdx(discardCocktailDataIdx); } EventManager.InvokeCocktailDiscarded(discardCocktailData, true); HoldingElapsedTime = 0f; _isPlayerInteracting = false; } private void ChangeRandomCocktail() { var randomCocktail = TycoonManager.Instance.TycoonIngredientController.GetRandomCocktailData(); EventManager.InvokeChangedRandomCocktail(randomCocktail); InteractionCanvas.BalloonUi.OrderItem(DataManager.Instance.SpriteDataSo.Waiting, 0, TycoonManager.Instance.TycoonStageController.StageDataSo.RandomChangeWaitTime); HoldingElapsedTime = 0f; _canInteraction = false; _isPlayerInteracting = false; } } }