using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; namespace BlueWater.Tycoons { public class CustomerTable : InteractionFurniture { [SerializeField] private List _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; } } }