CapersProject/Assets/02.Scripts/Ui/Tycoon/DailyFoodMenuUi.cs
Nam Tae Gun f1fcd10077 타이쿤 Ui 테스트용 기본 기능 추가
+ excel 수정
+ 테스트용 이미지 연결
2024-07-16 01:20:39 +09:00

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);
}
}
}
}