state 로직 롤백

This commit is contained in:
NTG 2025-08-19 12:12:10 +09:00
parent e7cb187068
commit b8eec075ab
29 changed files with 24 additions and 203 deletions

Binary file not shown.

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 713d65ef3d932164c97b5250f647bf77
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: fc0639e78dfcb4b47ac6ec82ee0d6213
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 57f96cac976cace4b8107ab44edb0f71
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 3afa6356ede647e47a79b8b1cd285b5e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: eade044ef7a61604d8dcf56168d40026
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 93204a2af0c46094696d74538897e540
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: b2b9375a9a66227409de828e13255ea2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: d6b2937b862326145a9a94a56e7c3192
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 3d463f7458658794396953c3bd77ad57
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 9cd28a9cdddf5dd4e9c729431a345509
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -9,7 +9,6 @@ namespace DDD
public class GameController : Singleton<GameController>, IManager, IGameFlowHandler
{
[SerializeField] private AssetReference _gameData;
[SerializeField] private AssetReference _gameState;
public GameData GameData { get; private set; }
public GameState GameState { get; private set; }
@ -19,6 +18,7 @@ public class GameController : Singleton<GameController>, IManager, IGameFlowHand
public void PreInit()
{
LoadOrCreateRestaurantState();
RegisterFlowHandler();
}
@ -26,7 +26,6 @@ public async Task Init()
{
await LoadData();
await GameData.LoadData();
await GameState.LoadData();
await InitializeAllFlowControllers();
}
@ -34,6 +33,12 @@ public void PostInit()
{
}
private void LoadOrCreateRestaurantState()
{
// TODO : Load states from saved files. if none, create them.
GameState = ScriptableObject.CreateInstance<GameState>();
}
private void RegisterFlowHandler()
{
GameFlowManager.Instance.FlowHandlers.Add(this);
@ -60,16 +65,12 @@ private async Task InitializeAllFlowControllers()
private async Task LoadData()
{
var gameDataHandle = _gameData.LoadAssetAsync<GameData>();
var gameStateHandle = _gameState.LoadAssetAsync<GameState>();
await gameDataHandle.Task;
await gameStateHandle.Task;
GameData = gameDataHandle.Result;
GameState = gameStateHandle.Result;
Debug.Assert(GameData != null, "GameData is null");
Debug.Assert(GameState != null, "GameState is null");
await Task.CompletedTask;
}

View File

@ -2,7 +2,6 @@
namespace DDD
{
[CreateAssetMenu(fileName = "GameLevelState", menuName = "GameState/GameLevelState")]
public class GameLevelState : ScriptableObject
{
public int Level = 1;

View File

@ -1,40 +1,17 @@
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.AddressableAssets;
namespace DDD
{
[CreateAssetMenu(fileName = "GameState", menuName = "GameState/GameState")]
public class GameState : ScriptableObject
{
[SerializeField] private AssetReference _gameLevelState;
public GameLevelState LevelState { get; private set; }
private bool _isLoaded;
private void OnDisable()
private void OnEnable()
{
if (_isLoaded == false) return;
_gameLevelState.ReleaseAsset();
_isLoaded = false;
}
public async Task LoadData()
{
if (_isLoaded)
{
return;
}
var gameLevelStateHandle = _gameLevelState.LoadAssetAsync<GameLevelState>();
await gameLevelStateHandle.Task;
LevelState = gameLevelStateHandle.Result;
Debug.Assert(LevelState != null, "GameLevelState is null");
_isLoaded = true;
LevelState = CreateInstance<GameLevelState>();
}
}
}

View File

@ -9,7 +9,6 @@ namespace DDD
public class RestaurantController : Singleton<RestaurantController>, IManager, IGameFlowHandler
{
[SerializeField] private AssetReference _restaurantData;
[SerializeField] private AssetReference _restaurantState;
public RestaurantData RestaurantData { get; private set; }
public RestaurantState RestaurantState { get; private set; }
@ -28,6 +27,7 @@ public class RestaurantController : Singleton<RestaurantController>, IManager, I
public void PreInit()
{
LoadOrCreateRestaurantState();
RegisterFlowHandler();
}
@ -35,7 +35,6 @@ public async Task Init()
{
await LoadData();
await RestaurantData.LoadData();
await RestaurantState.LoadData();
await InitializeAllFlowControllers();
}
@ -43,6 +42,12 @@ public void PostInit()
{
}
private void LoadOrCreateRestaurantState()
{
// TODO : Load states from saved files. if none, create them.
RestaurantState = ScriptableObject.CreateInstance<RestaurantState>();
}
private void RegisterFlowHandler()
{
GameFlowManager.Instance.FlowHandlers.Add(this);
@ -69,16 +74,12 @@ private async Task InitializeAllFlowControllers()
private async Task LoadData()
{
var restaurantDataHandle = _restaurantData.LoadAssetAsync<RestaurantData>();
var restaurantStateHandle = _restaurantState.LoadAssetAsync<RestaurantState>();
await restaurantDataHandle.Task;
await restaurantStateHandle.Task;
RestaurantData = restaurantDataHandle.Result;
RestaurantState = restaurantStateHandle.Result;
Debug.Assert(RestaurantData != null, "RestaurantData is null");
Debug.Assert(RestaurantState != null, "RestaurantState is null");
}
public async Task OnReadyNewFlow(GameFlowState newFlowState)

View File

@ -8,7 +8,6 @@
namespace DDD
{
[CreateAssetMenu(fileName = "RestaurantCustomerState", menuName = "RestaurantState/RestaurantCustomerState")]
public class RestaurantCustomerState : ScriptableObject, IGameFlowHandler
{
[Title("스폰 제어")]

View File

@ -17,7 +17,6 @@ public RestaurantPropLocation(string id, Vector2 position)
}
}
[CreateAssetMenu(fileName = "RestaurantEnvironmentState", menuName = "RestaurantState/RestaurantEnvironmentState")]
public class RestaurantEnvironmentState : ScriptableObject
{
public List<RestaurantPropLocation> Props = new List<RestaurantPropLocation>();

View File

@ -5,7 +5,6 @@
namespace DDD
{
[CreateAssetMenu(fileName = "RestaurantManagementState", menuName = "RestaurantState/RestaurantManagementState")]
public class RestaurantManagementState : ScriptableObject
{
// TODO : 데이터에서 초기화하고, 동적으로 변경

View File

@ -2,7 +2,6 @@
namespace DDD
{
[CreateAssetMenu(fileName = "RestaurantPlayerState", menuName = "RestaurantState/RestaurantPlayerState")]
public class RestaurantPlayerState : ScriptableObject
{

View File

@ -2,7 +2,6 @@
namespace DDD
{
[CreateAssetMenu(fileName = "RestaurantRunState", menuName = "RestaurantState/RestaurantRunState")]
public class RestaurantRunState : ScriptableObject
{

View File

@ -1,70 +1,22 @@
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.AddressableAssets;
namespace DDD
{
[CreateAssetMenu(fileName = "RestaurantState", menuName = "RestaurantState/RestaurantState", order = 0)]
public class RestaurantState : ScriptableObject
{
[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()
private void OnEnable()
{
if (_isLoaded == false) return;
_restaurantManagementState.ReleaseAsset();
_restaurantRunState.ReleaseAsset();
_restaurantEnvironmentState.ReleaseAsset();
_restaurantPlayerState.ReleaseAsset();
_restaurantCustomerState.ReleaseAsset();
_isLoaded = false;
}
public async Task LoadData()
{
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;
ManagementState = CreateInstance<RestaurantManagementState>();
RunState = CreateInstance<RestaurantRunState>();
EnvironmentState = CreateInstance<RestaurantEnvironmentState>();
PlayerState = CreateInstance<RestaurantPlayerState>();
CustomerState = CreateInstance<RestaurantCustomerState>();
}
}
}