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
|
|
|
|
2024-07-02 18:27:56 +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 _isRandomChange;
|
|
|
|
private bool _canInteraction = true;
|
|
|
|
|
|
|
|
protected override void Awake()
|
|
|
|
{
|
|
|
|
base.Awake();
|
|
|
|
|
|
|
|
EventManager.OnSelectedRandomChangeCard += SetRandomChange;
|
|
|
|
}
|
|
|
|
|
|
|
|
private void Update()
|
|
|
|
{
|
|
|
|
if (_isRandomChange)
|
|
|
|
{
|
|
|
|
if (InteractionCanvas.BalloonUi.IsWaitTimeOver())
|
|
|
|
{
|
|
|
|
_canInteraction = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (IsShowing)
|
|
|
|
{
|
|
|
|
EventManager.InvokeHoldInteracting(HoldingElapsedTime);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (HoldingElapsedTime >= 1f)
|
|
|
|
{
|
|
|
|
if (_isRandomChange)
|
|
|
|
{
|
|
|
|
ChangeRandomCocktail();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
DiscardItem();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (_isPlayerInteracting)
|
|
|
|
{
|
|
|
|
HoldingElapsedTime += Time.deltaTime / _playerHoldingTime;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (HoldingElapsedTime > 0f)
|
|
|
|
{
|
|
|
|
HoldingElapsedTime -= Time.deltaTime;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private void OnDestroy()
|
|
|
|
{
|
|
|
|
EventManager.OnSelectedRandomChangeCard -= SetRandomChange;
|
|
|
|
}
|
|
|
|
|
2024-07-02 18:27:56 +00:00
|
|
|
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() &&
|
|
|
|
(_isRandomChange && _canInteraction || !_isRandomChange);
|
|
|
|
}
|
|
|
|
|
|
|
|
public override void ShowInteractionUi()
|
|
|
|
{
|
|
|
|
if (_isRandomChange)
|
|
|
|
{
|
|
|
|
UpdateLocalizedString("InteractionTrashCanChange");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
UpdateLocalizedString("InteractionTrashCanDiscard");
|
|
|
|
}
|
|
|
|
|
|
|
|
base.ShowInteractionUi();
|
|
|
|
}
|
|
|
|
|
|
|
|
private void DiscardItem()
|
2024-07-02 18:27:56 +00:00
|
|
|
{
|
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-07-08 20:06:22 +00:00
|
|
|
}
|
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;
|
|
|
|
}
|
|
|
|
|
|
|
|
private void SetRandomChange()
|
2024-07-08 20:06:22 +00:00
|
|
|
{
|
2024-11-11 02:02:24 +00:00
|
|
|
if (!_canRandomChange) return;
|
|
|
|
|
|
|
|
_isRandomChange = true;
|
2024-07-02 18:27:56 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|