CapersProject/Assets/02.Scripts/Character/Npc/Crew/Bartender/BartenderCrew.cs

122 lines
3.7 KiB
C#
Raw Normal View History

2024-11-11 02:02:24 +00:00
using System;
2024-10-22 12:41:31 +00:00
using BlueWater.Interfaces;
2024-10-28 12:11:31 +00:00
using BlueWater.Items;
2024-10-20 17:21:39 +00:00
using BlueWater.Npcs.Customers;
using BlueWater.Tycoons;
2024-11-05 12:27:46 +00:00
using UnityEngine;
2024-10-14 11:13:08 +00:00
2024-10-22 12:41:31 +00:00
namespace BlueWater.Npcs.Crews.Bartender
2024-10-14 11:13:08 +00:00
{
2024-10-22 12:41:31 +00:00
public class BartenderCrew : Crew
2024-10-14 11:13:08 +00:00
{
2024-11-05 12:27:46 +00:00
[SerializeField]
private int _makingCocktailTime = 15;
2024-10-20 17:21:39 +00:00
public BartenderTable MyBartenderTable { get; private set; }
public Customer OrderedCustomer { get; set; }
2024-10-22 12:41:31 +00:00
public bool IsMakingCocktail { get; private set; }
2024-10-14 11:13:08 +00:00
2024-10-22 12:41:31 +00:00
public StateMachineController<BartenderCrew> StateMachineController { get; private set; }
public IStateMachine<BartenderCrew> IdleState { get; private set; }
public IStateMachine<BartenderCrew> MakingCocktailState { get; private set; }
2024-10-28 12:11:31 +00:00
private CocktailData _makingCocktailData;
2024-11-11 02:02:24 +00:00
private bool _isFeverTime;
private float _feverTime;
private float _feverMultiply = 1f;
2024-10-22 12:41:31 +00:00
protected override void Update()
2024-10-20 17:21:39 +00:00
{
2024-10-22 12:41:31 +00:00
StateMachineController.UpdateState(this);
base.Update();
2024-11-11 02:02:24 +00:00
if (_isFeverTime)
{
if (_feverTime > 0f)
{
_feverTime -= Time.deltaTime;
}
else
{
_feverTime = 0f;
_feverMultiply = 1f;
_isFeverTime = false;
}
}
2024-10-22 12:41:31 +00:00
}
public override void Initialize()
{
2024-11-11 02:02:24 +00:00
EventManager.OnCleaningBonus += FeverTime;
2024-10-22 12:41:31 +00:00
IdleState = new IdleState();
MakingCocktailState = new MakingCocktailState();
2024-10-20 17:21:39 +00:00
2024-10-22 12:41:31 +00:00
StateMachineController = new StateMachineController<BartenderCrew>(this, IdleState);
base.Initialize();
}
2024-11-11 02:02:24 +00:00
private void OnDestroy()
{
EventManager.OnCleaningBonus -= FeverTime;
}
2024-10-22 12:41:31 +00:00
public override void ResetMission()
{
CrewInteraction = null;
IsOnMission = false;
BalloonUi.DiscardItem();
2024-10-20 17:21:39 +00:00
OrderedCustomer = null;
2024-10-22 12:41:31 +00:00
IsMakingCocktail = false;
2024-10-28 12:11:31 +00:00
_makingCocktailData = null;
2024-10-22 12:41:31 +00:00
}
public override bool IsCompletedMission()
{
return !OrderedCustomer && !IsMakingCocktail;
2024-10-20 17:21:39 +00:00
}
public void SetBartenderTable(BartenderTable bartenderTable) => MyBartenderTable = bartenderTable;
public void SetOrderedCustomer(Customer orderedCustomer)
{
OrderedCustomer = orderedCustomer;
2024-10-28 12:11:31 +00:00
_makingCocktailData = OrderedCustomer.OrderedCocktailData;
2024-10-20 17:21:39 +00:00
IsOnMission = true;
}
public void MakingCocktail()
{
2024-10-28 12:11:31 +00:00
if (OrderedCustomer && OrderedCustomer.CurrentBill)
2024-10-28 12:02:31 +00:00
{
OrderedCustomer.CurrentBill.BartenderMakingCocktail();
}
2024-11-05 12:27:46 +00:00
2024-11-11 02:02:24 +00:00
var makingTime = (_makingCocktailTime - TycoonManager.Instance.TycoonStatus.BartenderMakingReduction) / _feverMultiply;
2024-11-05 12:27:46 +00:00
BalloonUi.OrderItem(_makingCocktailData.Idx, 0, makingTime);
2024-10-20 17:21:39 +00:00
IsMakingCocktail = true;
}
public void CompletedMakingCocktail()
{
2024-10-28 12:11:31 +00:00
if (OrderedCustomer && OrderedCustomer.CurrentBill)
2024-10-28 12:02:31 +00:00
{
OrderedCustomer.CurrentBill.BartenderCompleteMakingCocktail();
}
2024-10-28 12:11:31 +00:00
MyBartenderTable.CompleteMakingCocktail(_makingCocktailData);
2024-10-29 12:17:00 +00:00
EventManager.InvokeCocktailCompleted(_makingCocktailData, false);
2024-10-20 17:21:39 +00:00
ResetMission();
}
2024-11-11 02:02:24 +00:00
public void FeverTime(int feverTime, float multiply)
{
_feverTime += feverTime;
_feverMultiply = multiply;
_isFeverTime = true;
}
2024-10-14 11:13:08 +00:00
}
}