CapersProject/Assets/02.Scripts/Prop/Tycoon/CustomerTable.cs
Nam Tae Gun 1458693a1b 타이쿤 업데이트 정리
+ 상호작용 오브젝트 외곽선 기능 추가
+ 손님 계산 기능 추가
+ 손님 계산 시 Ui 출력 및 파티클, 효과 추가
+ 대화 시스템 로직 수정
+ 테이블 수정
+ 캐릭터 스파인 교체
2024-07-20 20:32:54 +09:00

70 lines
2.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace BlueWater.Tycoons
{
public class CustomerTable : InteractionFurniture
{
[SerializeField]
private List<TableSeat> _tableSeats;
private bool _isCleaning;
private TableSeat _tableSeat;
private TycoonManager _tycoonManager;
protected override void OnEnable()
{
base.OnEnable();
_tycoonManager = TycoonManager.Instance;
_tycoonManager.CustomerTableController.RegisterTable(this);
}
protected override void OnDisable()
{
base.OnDisable();
_tycoonManager.CustomerTableController.UnregisterTable(this);
}
public override void Interaction()
{
StartCoroutine(CleanUpTable(_tableSeat));
}
public override bool CanInteraction()
{
if (_isCleaning) return false;
_tableSeat = _tableSeats.Find(table => !table.IsOccupied && !table.IsCleaned);
if (_tableSeat == null) return false;
return true;
}
public TableSeat FindEmptySeat()
{
return _tableSeats.FirstOrDefault(tableSeat => !tableSeat.IsReserved && !tableSeat.IsOccupied && tableSeat.IsCleaned);
}
private IEnumerator CleanUpTable(TableSeat tableSeat)
{
// TODO : n초간 테이블 청소 애니메이션 (청소 중에 키 작동 금지)
_isCleaning = true;
PlayerInputKeyManager.Instance.DisableCurrentPlayerInput();
var elapsedTime = 0f;
while (elapsedTime <= 2f)
{
elapsedTime += Time.deltaTime;
yield return null;
}
tableSeat.CleanUpFood();
PlayerInputKeyManager.Instance.EnableCurrentPlayerInput();
_isCleaning = false;
}
}
}