CapersProject/Assets/02.Scripts/Prop/Tycoon/TrashCan.cs

116 lines
3.7 KiB
C#
Raw Normal View History

2024-10-29 12:17:00 +00:00
using BlueWater.Items;
2024-11-11 02:02:24 +00:00
using UnityEngine;
2024-10-29 12:17:00 +00:00
namespace BlueWater.Tycoons
{
public class TrashCan : InteractionFurniture
{
2024-11-11 02:02:24 +00:00
[SerializeField]
private float _playerHoldingTime = 1f;
[SerializeField]
private bool _canRandomChange;
private SpriteRenderer _spriteRenderer;
private bool _isPlayerInteracting;
private bool _canInteraction = true;
private void Update()
{
2024-11-11 06:09:32 +00:00
if (TycoonManager.Instance.TycoonStatus.CurrentPassiveCard == PassiveCard.RandomChange)
2024-11-11 02:02:24 +00:00
{
if (InteractionCanvas.BalloonUi.IsWaitTimeOver())
{
_canInteraction = true;
}
}
if (IsShowing)
{
EventManager.InvokeHoldInteracting(HoldingElapsedTime);
}
if (HoldingElapsedTime >= 1f)
{
2024-11-11 06:09:32 +00:00
if (TycoonManager.Instance.TycoonStatus.CurrentPassiveCard == PassiveCard.RandomChange)
2024-11-11 02:02:24 +00:00
{
ChangeRandomCocktail();
}
else
{
DiscardItem();
}
}
if (_isPlayerInteracting)
{
HoldingElapsedTime += Time.deltaTime / _playerHoldingTime;
}
else
{
if (HoldingElapsedTime > 0f)
{
HoldingElapsedTime -= Time.deltaTime;
}
}
}
public override void Interaction()
2024-11-11 02:02:24 +00:00
{
_isPlayerInteracting = true;
}
public override void CancelInteraction()
{
_isPlayerInteracting = false;
}
public override bool CanInteraction()
{
return CurrentTycoonPlayer.TycoonPickupHandler.IsPickedUpAnything() &&
2024-11-11 07:06:33 +00:00
((TycoonManager.Instance.TycoonStatus.CurrentPassiveCard == PassiveCard.RandomChange && _canInteraction) ||
TycoonManager.Instance.TycoonStatus.CurrentPassiveCard != PassiveCard.RandomChange);
2024-11-11 02:02:24 +00:00
}
public override void ShowInteractionUi()
{
2024-11-11 06:09:32 +00:00
if (TycoonManager.Instance.TycoonStatus.CurrentPassiveCard == PassiveCard.RandomChange)
2024-11-11 02:02:24 +00:00
{
UpdateLocalizedString("InteractionTrashCanChange");
}
else
{
UpdateLocalizedString("InteractionTrashCanDiscard");
}
base.ShowInteractionUi();
}
private void DiscardItem()
{
2024-11-04 12:22:07 +00:00
CocktailData discardCocktailData = null;
if (!CurrentTycoonPlayer.TycoonPickupHandler.IsUnfinishedCocktailPickedUp)
{
var discardCocktailDataIdx = CurrentTycoonPlayer.TycoonPickupHandler.GetCurrentPickupItem().Idx;
discardCocktailData = ItemManager.Instance.CocktailDataSo.GetDataByIdx(discardCocktailDataIdx);
}
2024-10-29 12:17:00 +00:00
EventManager.InvokeCocktailDiscarded(discardCocktailData, true);
2024-11-11 02:02:24 +00:00
HoldingElapsedTime = 0f;
_isPlayerInteracting = false;
}
2024-11-11 02:02:24 +00:00
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;
}
}
}