diff --git a/Assets/_DDD/_Addressables/Prefabs/Uis/GameUi/PopupUis/RestaurantManagementUi.prefab b/Assets/_DDD/_Addressables/Prefabs/Uis/GameUi/PopupUis/RestaurantManagementUi.prefab index 5015c637f..a7df0fad0 100644 --- a/Assets/_DDD/_Addressables/Prefabs/Uis/GameUi/PopupUis/RestaurantManagementUi.prefab +++ b/Assets/_DDD/_Addressables/Prefabs/Uis/GameUi/PopupUis/RestaurantManagementUi.prefab @@ -225,6 +225,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e765c62d234d09447bff001041f3dea6, type: 3} m_Name: m_EditorClassIdentifier: + _parent: {fileID: 4147204719077067979} --- !u!1 &4608547885265804944 GameObject: m_ObjectHideFlags: 0 @@ -6340,7 +6341,6 @@ MonoBehaviour: m_EditorClassIdentifier: k__BackingField: 3 _enableBlockImage: 0 - InputActionMaps: 3 _uiActionsInputBinding: {fileID: 11400000, guid: 8073fcaf56fc7c34e996d0d47044f146, type: 2} _checklistView: {fileID: 7075966153492927588} _inventoryView: {fileID: 3570087040626823091} @@ -6363,7 +6363,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 80dee5e1862248aab26236036049e5fc, type: 3} m_Name: m_EditorClassIdentifier: - _holdCompleteTime: 0 --- !u!1001 &4530765275021007961 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/_DDD/_Addressables/So/RestaurantData/RestaurantManagementData.asset b/Assets/_DDD/_Addressables/So/RestaurantData/RestaurantManagementData.asset index 5a47d8b0f..b84a7e831 100644 --- a/Assets/_DDD/_Addressables/So/RestaurantData/RestaurantManagementData.asset +++ b/Assets/_DDD/_Addressables/So/RestaurantData/RestaurantManagementData.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25a0d77c306ae49a158ee0149a8ca2fb9bbdc8ee932881ee887b4c4f47853c4e -size 1182 +oid sha256:b0cdc67e61ed75ad1390200aab539bb97b6bc1d9bdbccdbe62350018190fe57b +size 1304 diff --git a/Assets/_DDD/_Scripts/GameUi/BaseUi/PopupUis/RestaurantManagementUi/ChecklistView.cs b/Assets/_DDD/_Scripts/GameUi/BaseUi/PopupUis/RestaurantManagementUi/ChecklistView.cs index 5e079848f..bd899f1fc 100644 --- a/Assets/_DDD/_Scripts/GameUi/BaseUi/PopupUis/RestaurantManagementUi/ChecklistView.cs +++ b/Assets/_DDD/_Scripts/GameUi/BaseUi/PopupUis/RestaurantManagementUi/ChecklistView.cs @@ -16,29 +16,22 @@ public enum ChecklistLocalizationKey public class ChecklistView : MonoBehaviour, IEventHandler, IEventHandler { - private List _checklistDatas; - - private Dictionary _checklistLocalizationKeys = new() + [SerializeField] private Transform _parent; + + private RestaurantManagementViewModel _viewModel; + + private void OnDestroy() { - {ChecklistLocalizationKey.Checklist1, "checklist_1"}, - {ChecklistLocalizationKey.Checklist2, "checklist_2"}, - {ChecklistLocalizationKey.Checklist3, "checklist_3"}, - }; + EventBus.Unregister(this); + EventBus.Unregister(this); + } - private RestaurantManagementState restaurantManagementStateSo; - - public void Initalize() + public void Initialize(RestaurantManagementViewModel viewModel) { - restaurantManagementStateSo = RestaurantState.Instance.ManagementState; - - _checklistDatas = new List(3); - _checklistDatas = GetComponentsInChildren().ToList(); - - foreach (var checklistData in _checklistDatas) - { - checklistData.Initialize(); - } + _viewModel = viewModel; + ClearObject(_parent); + _viewModel.CreateChecklist(_parent); UpdateView(); EventBus.Register(this); @@ -47,23 +40,18 @@ public void Initalize() public void UpdateView() { - if (restaurantManagementStateSo == null) return; - - bool[] states = restaurantManagementStateSo.GetChecklistStates(); - int loopCount = Mathf.Min(_checklistDatas.Count, states.Length); - for (int i = 0; i < loopCount; i++) - { - _checklistDatas[i].UpdateData(_checklistLocalizationKeys[(ChecklistLocalizationKey)i], states[i]); - } + _viewModel.UpdateChecklistView(); } public void Invoke(TodayMenuRemovedEvent evt) => UpdateView(); public void Invoke(TodayMenuAddedEvent evt) => UpdateView(); - private void OnDestroy() + private void ClearObject(Transform parent) { - EventBus.Unregister(this); - EventBus.Unregister(this); + foreach (Transform child in _parent) + { + Destroy(child.gameObject); + } } } } \ No newline at end of file diff --git a/Assets/_DDD/_Scripts/GameUi/BaseUi/PopupUis/RestaurantManagementUi/RestaurantManagementUi.cs b/Assets/_DDD/_Scripts/GameUi/BaseUi/PopupUis/RestaurantManagementUi/RestaurantManagementUi.cs index e6f032b8b..c7f50ab07 100644 --- a/Assets/_DDD/_Scripts/GameUi/BaseUi/PopupUis/RestaurantManagementUi/RestaurantManagementUi.cs +++ b/Assets/_DDD/_Scripts/GameUi/BaseUi/PopupUis/RestaurantManagementUi/RestaurantManagementUi.cs @@ -111,7 +111,7 @@ private void SetupViewModelEvents() private void InitializeViews() { - _checklistView.Initalize(); + _checklistView.Initialize(_viewModel); _inventoryView.Initialize(_viewModel); _itemDetailView.Initialize(); _todayMenuView.Initialize(_viewModel); diff --git a/Assets/_DDD/_Scripts/GameUi/BaseUi/PopupUis/RestaurantManagementUi/RestaurantManagementViewModel.cs b/Assets/_DDD/_Scripts/GameUi/BaseUi/PopupUis/RestaurantManagementUi/RestaurantManagementViewModel.cs index 70ceab8da..8acb3046a 100644 --- a/Assets/_DDD/_Scripts/GameUi/BaseUi/PopupUis/RestaurantManagementUi/RestaurantManagementViewModel.cs +++ b/Assets/_DDD/_Scripts/GameUi/BaseUi/PopupUis/RestaurantManagementUi/RestaurantManagementViewModel.cs @@ -178,6 +178,41 @@ public void MoveTab(int direction) OnTabMoved?.Invoke(direction); } + #endregion + + #region ChecklistView + + private List _checklistDatas; + + private Dictionary _checklistLocalizationKeys = new() + { + {ChecklistLocalizationKey.Checklist1, "checklist_1"}, + {ChecklistLocalizationKey.Checklist2, "checklist_2"}, + {ChecklistLocalizationKey.Checklist3, "checklist_3"}, + }; + + public void CreateChecklist(Transform parent) + { + var checklistCount = GetRestaurantManagementData().ChecklistCount; + _checklistDatas = new List(checklistCount); + for (int i = 0; i < checklistCount; i++) + { + var instance = Instantiate(GetRestaurantManagementData().ChecklistDataPrefab, parent); + instance.Initialize(); + _checklistDatas.Add(instance); + } + } + + public void UpdateChecklistView() + { + bool[] states = GetRestaurantManagementState().GetChecklistStates(); + int loopCount = Mathf.Min(_checklistDatas.Count, states.Length); + for (int i = 0; i < loopCount; i++) + { + _checklistDatas[i].UpdateData(_checklistLocalizationKeys[(ChecklistLocalizationKey)i], states[i]); + } + } + #endregion #region InventoryView diff --git a/Assets/_DDD/_Scripts/RestaurantData/DataObjects/RestaurantManagementData.cs b/Assets/_DDD/_Scripts/RestaurantData/DataObjects/RestaurantManagementData.cs index bf69b4f67..28232ce3c 100644 --- a/Assets/_DDD/_Scripts/RestaurantData/DataObjects/RestaurantManagementData.cs +++ b/Assets/_DDD/_Scripts/RestaurantData/DataObjects/RestaurantManagementData.cs @@ -14,6 +14,7 @@ public class RestaurantManagementData : ScriptableObject public int MaxCookwareCount = 6; [Title("체크리스트 조건")] + public int ChecklistCount = 3; public int ChecklistFoodCount = 1; public int ChecklistCookwareCount = 1; public int ChecklistMatchedMenuWithCookwareCount = 1; @@ -21,6 +22,7 @@ public class RestaurantManagementData : ScriptableObject [Title("컴포넌트")] public ItemSlotUi ItemSlotUiPrefab; public TasteHashTagSlotUi TasteHashTagSlotUiPrefab; + public ChecklistData ChecklistDataPrefab; public Material FoodTasteMaterial; public Material DrinkTasteMaterial;