CapersProject/Assets/02.Scripts/Prop/Tycoon/TrashCan.cs
2024-11-11 15:09:32 +09:00

116 lines
3.6 KiB
C#

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() &&
((_canInteraction && TycoonManager.Instance.TycoonStatus.CurrentPassiveCard == PassiveCard.RandomChange) ||
!_canInteraction);
}
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;
}
}
}