126 lines
4.3 KiB
C#
126 lines
4.3 KiB
C#
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Linq;
|
||
|
using BlueWater.Items;
|
||
|
using Sirenix.OdinInspector;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace BlueWater.Uis
|
||
|
{
|
||
|
public class DailyFoodMenuUi : MonoBehaviour
|
||
|
{
|
||
|
[Title("프리팹 생성 위치")]
|
||
|
[SerializeField, Required]
|
||
|
private Transform _fryingPanFoodSlotLocation;
|
||
|
|
||
|
[SerializeField, Required]
|
||
|
private Transform _soupFoodSlotLocation;
|
||
|
|
||
|
[SerializeField, Required]
|
||
|
private Transform _skewerFoodSlotLocation;
|
||
|
|
||
|
[SerializeField, Required]
|
||
|
private Transform _dessertFoodSlotLocation;
|
||
|
|
||
|
[Title("프리팹")]
|
||
|
[SerializeField, Required]
|
||
|
private TycoonItemSlotUi _dailyFoodSlotUi;
|
||
|
|
||
|
private List<TycoonItemSlotUi> _fryingPanFoodSlotUis = new(3);
|
||
|
private List<TycoonItemSlotUi> _soupFoodSlotUis = new(3);
|
||
|
private List<TycoonItemSlotUi> _skewerFoodSlotUis = new(3);
|
||
|
private List<TycoonItemSlotUi> _dessertPanFoodSlotUis = new(3);
|
||
|
private CookUi _cookUi;
|
||
|
|
||
|
private void Awake()
|
||
|
{
|
||
|
Initialize();
|
||
|
}
|
||
|
|
||
|
private void Initialize()
|
||
|
{
|
||
|
_cookUi = TycoonUiManager.Instance.TycoonManagementUi.CookMenuUi.CookUi;
|
||
|
|
||
|
_fryingPanFoodSlotUis = _fryingPanFoodSlotLocation.GetComponentsInChildren<TycoonItemSlotUi>().ToList();
|
||
|
foreach (var element in _fryingPanFoodSlotUis)
|
||
|
{
|
||
|
element.SetFoodData(null);
|
||
|
element.AddButtonClickListener(() => SelectDailyFood(element));
|
||
|
}
|
||
|
|
||
|
_soupFoodSlotUis = _soupFoodSlotLocation.GetComponentsInChildren<TycoonItemSlotUi>().ToList();
|
||
|
foreach (var element in _soupFoodSlotUis)
|
||
|
{
|
||
|
element.SetFoodData(null);
|
||
|
element.AddButtonClickListener(() => SelectDailyFood(element));
|
||
|
}
|
||
|
|
||
|
_skewerFoodSlotUis = _skewerFoodSlotLocation.GetComponentsInChildren<TycoonItemSlotUi>().ToList();
|
||
|
foreach (var element in _skewerFoodSlotUis)
|
||
|
{
|
||
|
element.SetFoodData(null);
|
||
|
element.AddButtonClickListener(() => SelectDailyFood(element));
|
||
|
}
|
||
|
|
||
|
_dessertPanFoodSlotUis = _dessertFoodSlotLocation.GetComponentsInChildren<TycoonItemSlotUi>().ToList();
|
||
|
foreach (var element in _dessertPanFoodSlotUis)
|
||
|
{
|
||
|
element.SetFoodData(null);
|
||
|
element.AddButtonClickListener(() => SelectDailyFood(element));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void SelectDailyFood(TycoonItemSlotUi tycoonItemSlotUi)
|
||
|
{
|
||
|
tycoonItemSlotUi.SetFoodData(null);
|
||
|
_cookUi.CheckCookable();
|
||
|
}
|
||
|
|
||
|
public bool IsEmptyDailyFoodMenu(FoodData selectedFoodData)
|
||
|
{
|
||
|
var selectedTypeItemSlotUis = GetDailyFoodType(selectedFoodData.Type);
|
||
|
|
||
|
foreach (var element in selectedTypeItemSlotUis)
|
||
|
{
|
||
|
if (element.GetIsLocked() || element.FoodData != null) continue;
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
public void AddDailyFoodMenu(FoodData selectedFoodData)
|
||
|
{
|
||
|
var selectedTypeItemSlotUis = GetDailyFoodType(selectedFoodData.Type);
|
||
|
|
||
|
foreach (var element in selectedTypeItemSlotUis)
|
||
|
{
|
||
|
if (element.GetIsLocked() || element.FoodData != null) continue;
|
||
|
|
||
|
element.SetFoodData(selectedFoodData);
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private List<TycoonItemSlotUi> GetDailyFoodType(FoodType foodType)
|
||
|
{
|
||
|
switch (foodType)
|
||
|
{
|
||
|
case FoodType.None:
|
||
|
Debug.LogError($"FoodType이 None입니다.");
|
||
|
return null;
|
||
|
case FoodType.Skewer:
|
||
|
return _skewerFoodSlotUis;
|
||
|
case FoodType.Soup:
|
||
|
return _soupFoodSlotUis;
|
||
|
case FoodType.FryingPan:
|
||
|
return _fryingPanFoodSlotUis;
|
||
|
case FoodType.Dessert:
|
||
|
return _dessertPanFoodSlotUis;
|
||
|
default:
|
||
|
throw new ArgumentOutOfRangeException(nameof(foodType), foodType, null);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|