CapersProject/Assets/02.Scripts/Tycoon/TycoonIngredientController.cs

99 lines
3.2 KiB
C#
Raw Normal View History

2024-09-30 12:05:19 +00:00
using System.Collections.Generic;
using System.Linq;
using BlueWater.Items;
2024-09-23 02:00:21 +00:00
using UnityEngine;
namespace BlueWater.Tycoons
{
public class TycoonIngredientController: MonoBehaviour
{
[field: SerializeField]
public Barrel LiquidBarrelA { get; private set; }
[field: SerializeField]
public Barrel LiquidBarrelB { get; private set; }
[field: SerializeField]
public Barrel LiquidBarrelC { get; private set; }
[field: SerializeField]
public Barrel LiquidBarrelD { get; private set; }
[field: SerializeField]
public Barrel LiquidBarrelE { get; private set; }
[field: SerializeField]
public Barrel GarnishBarrel1 { get; private set; }
[field: SerializeField]
public Barrel GarnishBarrel2 { get; private set; }
2024-09-30 12:05:19 +00:00
private List<Barrel> _barrels;
private void Awake()
{
_barrels = new List<Barrel>
{
LiquidBarrelA, LiquidBarrelB, LiquidBarrelC, LiquidBarrelD, LiquidBarrelE, GarnishBarrel1, GarnishBarrel2
};
}
/// <summary>
/// 주문 가능한 칵테일데이터 반환
/// </summary>
public CocktailData GetRandomCocktailData()
{
var activeBarrels = _barrels.Where(barrel => barrel.IsActivated).ToList();
var activeIngredientsIdx = activeBarrels.Select(barrel => barrel.GetLiquidData().Idx).ToList();
var validCocktails = GetValidCocktails(activeIngredientsIdx);
if (validCocktails == null || validCocktails.Count == 0)
{
Debug.LogWarning("유효한 칵테일 조합이 없습니다.");
return null;
}
// 유효한 칵테일 중 랜덤으로 하나 선택
var randomCocktail = validCocktails[Random.Range(0, validCocktails.Count)];
return randomCocktail;
}
private List<CocktailData> GetValidCocktails(List<string> activeIngredientsIdx)
{
var allCocktails = ItemManager.Instance.CocktailDataSo.GetData();
var validCocktails = new List<CocktailData>();
foreach (var element in allCocktails.Values)
{
var requiredIngredients = element.GetValidIngredients().Select(ingredient => ingredient.Idx).ToList();
// 필요한 재료들이 모두 활성화된 재료 목록에 포함되어 있는지 확인
if (requiredIngredients.All(activeIngredientsIdx.Contains))
{
if (element.Idx != "Cocktail000")
{
validCocktails.Add(element);
}
}
}
return validCocktails;
}
2024-10-10 05:41:47 +00:00
public List<Barrel> GetActivatedBarrels()
{
return _barrels.Where(barrel => barrel.IsActivated).ToList();
}
public void AllAddBarrels(int addVal)
{
var activeBarrels = GetActivatedBarrels();
foreach (var VARIABLE in activeBarrels)
{
VARIABLE.SetCurrentAmount(VARIABLE.CurrentAmount + addVal, true);
}
}
2024-09-23 02:00:21 +00:00
}
}