2025-08-18 10:48:36 +00:00
|
|
|
using System.Threading.Tasks;
|
2025-08-14 11:35:16 +00:00
|
|
|
using UnityEngine;
|
2025-08-18 10:48:36 +00:00
|
|
|
using UnityEngine.AddressableAssets;
|
2025-08-14 11:35:16 +00:00
|
|
|
|
|
|
|
namespace DDD
|
|
|
|
{
|
2025-08-18 10:48:36 +00:00
|
|
|
[CreateAssetMenu(fileName = "RestaurantState", menuName = "RestaurantState/RestaurantState", order = 0)]
|
|
|
|
public class RestaurantState : ScriptableObject
|
2025-08-14 11:35:16 +00:00
|
|
|
{
|
2025-08-18 10:48:36 +00:00
|
|
|
[SerializeField] private AssetReference _restaurantManagementState;
|
|
|
|
[SerializeField] private AssetReference _restaurantRunState;
|
|
|
|
[SerializeField] private AssetReference _restaurantEnvironmentState;
|
|
|
|
[SerializeField] private AssetReference _restaurantPlayerState;
|
|
|
|
[SerializeField] private AssetReference _restaurantCustomerState;
|
|
|
|
|
|
|
|
public RestaurantManagementState ManagementState { get; private set; }
|
|
|
|
public RestaurantRunState RunState { get; private set; }
|
|
|
|
public RestaurantEnvironmentState EnvironmentState { get; private set; }
|
|
|
|
public RestaurantPlayerState PlayerState { get; private set; }
|
|
|
|
public RestaurantCustomerState CustomerState { get; private set; }
|
|
|
|
|
|
|
|
private bool _isLoaded;
|
|
|
|
|
|
|
|
private void OnDisable()
|
|
|
|
{
|
|
|
|
if (_isLoaded == false) return;
|
|
|
|
|
|
|
|
_restaurantManagementState.ReleaseAsset();
|
|
|
|
_restaurantRunState.ReleaseAsset();
|
|
|
|
_restaurantEnvironmentState.ReleaseAsset();
|
|
|
|
_restaurantPlayerState.ReleaseAsset();
|
|
|
|
_restaurantCustomerState.ReleaseAsset();
|
|
|
|
_isLoaded = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task LoadData()
|
2025-08-14 11:35:16 +00:00
|
|
|
{
|
2025-08-18 10:48:36 +00:00
|
|
|
if (_isLoaded)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
var restaurantManagementStateHandle = _restaurantManagementState.LoadAssetAsync<RestaurantManagementState>();
|
|
|
|
var restaurantRunStateHandle = _restaurantRunState.LoadAssetAsync<RestaurantRunState>();
|
|
|
|
var restaurantEnvironmentStateHandle = _restaurantEnvironmentState.LoadAssetAsync<RestaurantEnvironmentState>();
|
|
|
|
var restaurantPlayerStateHandle = _restaurantPlayerState.LoadAssetAsync<RestaurantPlayerState>();
|
|
|
|
var restaurantCustomerStateHandle = _restaurantCustomerState.LoadAssetAsync<RestaurantCustomerState>();
|
|
|
|
|
|
|
|
await restaurantManagementStateHandle.Task;
|
|
|
|
await restaurantRunStateHandle.Task;
|
|
|
|
await restaurantEnvironmentStateHandle.Task;
|
|
|
|
await restaurantPlayerStateHandle.Task;
|
|
|
|
await restaurantCustomerStateHandle.Task;
|
|
|
|
|
|
|
|
ManagementState = restaurantManagementStateHandle.Result;
|
|
|
|
RunState = restaurantRunStateHandle.Result;
|
|
|
|
EnvironmentState = restaurantEnvironmentStateHandle.Result;
|
|
|
|
PlayerState = restaurantPlayerStateHandle.Result;
|
|
|
|
CustomerState = restaurantCustomerStateHandle.Result;
|
|
|
|
|
|
|
|
Debug.Assert(ManagementState != null, "RestaurantManagementState is null");
|
|
|
|
Debug.Assert(RunState != null, "RestaurantRunState is null");
|
|
|
|
Debug.Assert(EnvironmentState != null, "RestaurantEnvironmentState is null");
|
|
|
|
Debug.Assert(PlayerState != null, "RestaurantPlayerState is null");
|
|
|
|
Debug.Assert(CustomerState != null, "RestaurantCustomerState is null");
|
|
|
|
|
|
|
|
_isLoaded = true;
|
2025-08-14 11:35:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|