+ 화면 밖에서 손님이 요구하는 중일 때, Indicator를 통해서 Ui 표시 + Open, Closed Ui 추가 및 기능 연결 + 테이블 찾는 로직 변경 (전부 랜덤) - 기존에는 항상 같은 순서로 자리를 채움 + 통계용 데이터 CustomerVisitInfo 추가 (추후에 통계Ui 생길 때 연결) + 대화 조건 변경 + 일부 가구들 상호작용 조건 변경 + Outline shader Render Face(Front -> Both 변경 - Front면 x축 뒤집는 경우 안나옴) + GraphicMaterialOverride를 사용하는 경우, 에디터에서 전체화면 등 특정 상황에서 material이 사라지는 버그 수정 + InteractionFuniture Open, Closed 공통 기능으로 병합
46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using BlueWater.Utility;
|
|
using UnityEngine;
|
|
using Random = System.Random;
|
|
|
|
namespace BlueWater.Tycoons
|
|
{
|
|
public class CustomerTableController : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private List<CustomerTable> _customerTables;
|
|
|
|
private Random _random = new();
|
|
|
|
public void RegisterTable(CustomerTable table)
|
|
{
|
|
Utils.RegisterList(_customerTables, table);
|
|
}
|
|
|
|
public void UnregisterTable(CustomerTable table)
|
|
{
|
|
Utils.UnregisterList(_customerTables, table);
|
|
}
|
|
|
|
public TableSeat FindEmptySeat()
|
|
{
|
|
var tableCount = _customerTables.Count;
|
|
var indices = new List<int>(Enumerable.Range(0, tableCount));
|
|
|
|
while (indices.Count > 0)
|
|
{
|
|
var randomIndex = _random.Next(indices.Count);
|
|
var tableIndex = indices[randomIndex];
|
|
indices.RemoveAt(randomIndex);
|
|
|
|
var emptySeat = _customerTables[tableIndex].FindEmptySeat();
|
|
if (emptySeat != null)
|
|
{
|
|
return emptySeat;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
} |