ProjectDDD/Assets/_DDD/_Scripts/GameUi/New/ItemViewModelFactory.cs

75 lines
2.7 KiB
C#
Raw Normal View History

2025-07-25 07:58:53 +00:00
using System.Collections.Generic;
using System.Linq;
namespace DDD
{
public static class ItemViewModelFactory
{
2025-07-27 19:32:41 +00:00
public static List<ItemViewModel> CreateRestaurantManagementInventoryItem()
2025-07-25 07:58:53 +00:00
{
var result = new List<ItemViewModel>();
var recipeDataMap = DataManager.Instance.RecipeDataSo.GetDataList().ToDictionary(r => r.Id, r => r);
var foodDataMap = DataManager.Instance.FoodDataSo.GetDataList().ToDictionary(f => f.Id, f => f);
var drinkDataMap = DataManager.Instance.DrinkDataSo.GetDataList().ToDictionary(d => d.Id, d => d);
var ingredientDataMap = DataManager.Instance.IngredientDataSo.GetDataList().ToDictionary(i => i.Id, i => i);
foreach (var kvp in InventoryManager.Instance.InventoryItems)
{
var id = kvp.Key;
var item = InventoryManager.Instance.GetItemDataByIdOrNull(id);
2025-07-27 19:32:41 +00:00
if (item == null) continue;
2025-07-25 07:58:53 +00:00
var model = new ItemViewModel
{
Id = item.Id,
ItemType = item.ItemType,
Count = item.ItemType switch
{
ItemType.Recipe => CalculateCraftableCount(item.Id),
ItemType.Ingredient => InventoryManager.Instance.GetItemCount(id),
2025-07-27 19:32:41 +00:00
_ => 0
2025-07-25 07:58:53 +00:00
}
};
result.Add(model);
}
return result;
}
2025-07-27 19:32:41 +00:00
2025-07-25 07:58:53 +00:00
private static int CalculateCraftableCount(string recipeId)
{
if (!DataManager.Instance.RecipeDataSo.TryGetDataById(recipeId, out var recipe)) return 0;
2025-07-28 11:33:04 +00:00
string recipeResult = recipe.RecipeResult;
2025-07-25 07:58:53 +00:00
return recipe.RecipeType switch
{
2025-07-28 11:33:04 +00:00
RecipeType.FoodRecipe => DataManager.Instance.FoodDataSo.TryGetDataById(recipeResult, out var food)
2025-07-27 19:32:41 +00:00
? food.GetCraftableCount()
: 0,
2025-07-28 11:33:04 +00:00
RecipeType.DrinkRecipe => DataManager.Instance.DrinkDataSo.TryGetDataById(recipeResult, out var drink)
2025-07-27 19:32:41 +00:00
? drink.GetCraftableCount()
: 0,
2025-07-25 07:58:53 +00:00
_ => 0
};
}
2025-07-27 19:32:41 +00:00
public static ItemViewModel CreateByRecipeId(string recipeId)
{
var recipeSo = DataManager.Instance.RecipeDataSo;
2025-07-28 11:33:04 +00:00
if (!recipeSo.TryGetDataById(recipeId, out var recipe)) return null;
2025-07-27 19:32:41 +00:00
var item = InventoryManager.Instance.GetItemDataByIdOrNull(recipeId);
if (item == null) return null;
var model = new ItemViewModel
{
Id = recipeId,
ItemType = item.ItemType,
};
return model;
}
2025-07-25 07:58:53 +00:00
}
}