76 lines
2.6 KiB
C#
76 lines
2.6 KiB
C#
![]() |
using System.Threading.Tasks;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace DDD
|
||
|
{
|
||
|
public class RestaurantController : Singleton<RestaurantController>, IManager, IGameFlowHandler
|
||
|
{
|
||
|
private RestaurantEnvironmentState _restaurantEnvironmentState;
|
||
|
public RestaurantEnvironmentState RestaurantEnvironmentState => _restaurantEnvironmentState;
|
||
|
|
||
|
// TODO : GameManager에 등록되게 So에 추가해주세요.
|
||
|
|
||
|
public void Init()
|
||
|
{
|
||
|
LoadOrCreateRestaurantState();
|
||
|
RegisterFlowHandler();
|
||
|
}
|
||
|
|
||
|
public void PostInit()
|
||
|
{
|
||
|
GenerateDummyEnvironmentProps();// XXX : DUMMY! REMOVE THIS
|
||
|
}
|
||
|
|
||
|
private void RegisterFlowHandler()
|
||
|
{
|
||
|
GameFlowManager.Instance.FlowHandlers.Add(this);
|
||
|
}
|
||
|
|
||
|
private void LoadOrCreateRestaurantState()
|
||
|
{
|
||
|
// TODO : Load states from saved files. if none, create them.
|
||
|
_restaurantEnvironmentState = new RestaurantEnvironmentState();
|
||
|
}
|
||
|
|
||
|
private void GenerateDummyEnvironmentProps()
|
||
|
{
|
||
|
// Make dummy placement data
|
||
|
foreach (EnvironmentData prop in DataManager.Instance.EnvironmentDataSo.GetDataList())
|
||
|
{
|
||
|
if (prop.EnvironmentType != EnvironmentType.Prop)
|
||
|
{
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
for (int i = 0; i < 10; i++)
|
||
|
{
|
||
|
// Make random position
|
||
|
Vector2 randomPos = new Vector2(
|
||
|
Random.Range(-10f, 10f),
|
||
|
Random.Range(10f, 20f)
|
||
|
);
|
||
|
RestaurantEnvironmentData randomPropData = new RestaurantEnvironmentData();
|
||
|
randomPropData.Position = randomPos;
|
||
|
randomPropData.Id = prop.Id;
|
||
|
_restaurantEnvironmentState.RestaurantEnvironmentProps.Add(randomPropData);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
public Task OnReadyNewFlow(GameFlowState newFlowState)
|
||
|
{
|
||
|
if (newFlowState == GameFlowState.ReadyForRestaurant)
|
||
|
{
|
||
|
CreateRestaurantPlayer createRestaurantPlayerJob = new CreateRestaurantPlayer();
|
||
|
CreateEnvironment createEnvironmentJob = new CreateEnvironment();
|
||
|
var playerHandle = createRestaurantPlayerJob.OnReadyNewFlow(newFlowState);
|
||
|
var propHandle = createEnvironmentJob.OnReadyNewFlow(newFlowState);
|
||
|
// Combine handles and return it
|
||
|
return Task.WhenAll(playerHandle, propHandle);
|
||
|
}
|
||
|
|
||
|
return Task.CompletedTask;
|
||
|
}
|
||
|
}
|
||
|
}
|