DataManager 로직 변경 및 구글 시트 데이터 최신화

This commit is contained in:
NTG_Lenovo 2025-07-30 18:42:33 +09:00
parent 0c6ec55470
commit cbc1d6982d
35 changed files with 9594 additions and 305 deletions

View File

@ -27,6 +27,12 @@ MonoBehaviour:
m_SerializedLabels:
- GoogleSheetSo
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 5c7c87af5db0e884eb3b979cb1d2188b
m_Address: CookwareDataSo
m_ReadOnly: 0
m_SerializedLabels:
- GoogleSheetSo
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 7446495d3106eff4ab5b0f9d7d97b579
m_Address: DrinkDataSo
m_ReadOnly: 0

View File

@ -4220,11 +4220,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 6289760680591803305, guid: 05aeb8078f8dc7c489b71a0ce5bc4fac, type: 3}
propertyPath: _currentVersion
value: "4 - 2025-07-28 18:14:02 by \uB0A8\uD0DC\uAC74"
value: "6 - 2025-07-30 16:48:31 by \uB0A8\uD0DC\uAC74"
objectReference: {fileID: 0}
- target: {fileID: 6289760680591803305, guid: 05aeb8078f8dc7c489b71a0ce5bc4fac, type: 3}
propertyPath: _refreshTrigger
value: 1
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []

View File

@ -53,6 +53,7 @@ MonoBehaviour:
- RecipeData
- FoodData
- DrinkData
- CookwareData
- IngredientData
- TasteData
- EnvironmentData

File diff suppressed because it is too large Load Diff

View File

@ -8,17 +8,10 @@ namespace DDD
{
public class DataManager : Singleton<DataManager>, IManager
{
public ItemDataSo ItemDataSo { get; private set; }
public RecipeDataSo RecipeDataSo { get; private set; }
public FoodDataSo FoodDataSo { get; private set; }
public DrinkDataSo DrinkDataSo { get; private set; }
public IngredientDataSo IngredientDataSo { get; private set; }
public TasteDataSo TasteDataSo { get; private set; }
public EnvironmentDataSo EnvironmentDataSo { get; private set; }
private readonly Dictionary<Type, ScriptableObject> _dataSoTable = new();
private Dictionary<string, Sprite> _spriteAtlas;
public bool IsInitialized { get; private set; }
private const string SoLabel = "GoogleSheetSo";
public void PreInit()
{
@ -27,14 +20,30 @@ public void PreInit()
public async Task Init()
{
ItemDataSo = await AssetManager.LoadAsset<ItemDataSo>(DataConstants.ItemDataSo);
RecipeDataSo = await AssetManager.LoadAsset<RecipeDataSo>(DataConstants.RecipeDataSo);
FoodDataSo = await AssetManager.LoadAsset<FoodDataSo>(DataConstants.FoodDataSo);
DrinkDataSo = await AssetManager.LoadAsset<DrinkDataSo>(DataConstants.DrinkDataSo);
IngredientDataSo = await AssetManager.LoadAsset<IngredientDataSo>(DataConstants.IngredientDataSo);
TasteDataSo = await AssetManager.LoadAsset<TasteDataSo>(DataConstants.TasteDataSo);
EnvironmentDataSo = await AssetManager.LoadAsset<EnvironmentDataSo>(DataConstants.EnvironmentDataSo);
await LoadAllGameDataSo();
await LoadSpriteAtlas();
}
public void PostInit()
{
}
private async Task LoadAllGameDataSo()
{
var soList = await AssetManager.LoadAssetsByLabel<ScriptableObject>(SoLabel);
foreach (var so in soList)
{
var type = so.GetType();
_dataSoTable.TryAdd(type, so);
}
Debug.Log($"[DataManager] {_dataSoTable.Count}개의 SO가 로드되었습니다.");
}
private async Task LoadSpriteAtlas()
{
List<SpriteAtlas> spriteAtlases = await AssetManager.LoadAssetsByLabel<SpriteAtlas>(DataConstants.AtlasLabel);
_spriteAtlas = new Dictionary<string, Sprite>(spriteAtlases.Count);
@ -56,21 +65,17 @@ public async Task Init()
_spriteAtlas.TryAdd(key, sprite);
}
}
IsInitialized = true;
}
public void PostInit()
public T GetDataSo<T>() where T : ScriptableObject
{
}
public async Task WaitUntilInitialized()
{
while (!IsInitialized)
if (_dataSoTable.TryGetValue(typeof(T), out var so))
{
await Task.Yield();
return so as T;
}
Debug.LogError($"[DataManager] {typeof(T).Name} SO를 찾을 수 없습니다.");
return null;
}
public Sprite GetSprite(string key) => _spriteAtlas.GetValueOrDefault(key);

View File

@ -38,7 +38,7 @@ public void PostInit()
private void InitializeItemData()
{
var itemDataSo = DataManager.Instance.ItemDataSo;
var itemDataSo = DataManager.Instance.GetDataSo<ItemDataSo>();
Debug.Assert(itemDataSo != null, "itemDataSo != null");
_itemDataLookup = itemDataSo.GetDataList()

View File

@ -44,7 +44,7 @@ public bool TryAddTodayMenu(ItemSlotUi itemSlotUi)
if (itemSlotUi.Model.ItemType != ItemType.Recipe) return false;
if (!DataManager.Instance.RecipeDataSo.TryGetDataById(recipeId, out RecipeData recipeData)) return false;
if (!DataManager.Instance.GetDataSo<RecipeDataSo>().TryGetDataById(recipeId, out RecipeData recipeData)) return false;
bool added = false;
@ -52,7 +52,7 @@ public bool TryAddTodayMenu(ItemSlotUi itemSlotUi)
{
if (_foodRecipeIds.Count >= MaxFoodCount || _foodRecipeIds.ContainsKey(recipeId)) return false;
var foodData = DataManager.Instance.FoodDataSo.GetDataById(recipeData.RecipeResult);
var foodData = DataManager.Instance.GetDataSo<FoodDataSo>().GetDataById(recipeData.RecipeResult);
var craftableCount = foodData.GetCraftableCount();
foodData.ConsumeAllCraftableIngredients();
@ -63,7 +63,7 @@ public bool TryAddTodayMenu(ItemSlotUi itemSlotUi)
{
if (_drinkRecipeIds.Count >= MaxDrinkCount || _drinkRecipeIds.ContainsKey(recipeId)) return false;
var drinkData = DataManager.Instance.DrinkDataSo.GetDataById(recipeData.RecipeResult);
var drinkData = DataManager.Instance.GetDataSo<DrinkDataSo>().GetDataById(recipeData.RecipeResult);
var craftableCount = drinkData.GetCraftableCount();
drinkData.ConsumeAllCraftableIngredients();
@ -84,7 +84,7 @@ public bool TryRemoveTodayMenu(ItemSlotUi itemSlotUi)
string recipeId = itemSlotUi.Model.Id;
var evt = RestaurantEvents.TodayMenuRemovedEvent;
if (!DataManager.Instance.RecipeDataSo.TryGetDataById(recipeId, out RecipeData recipeData)) return false;
if (!DataManager.Instance.GetDataSo<RecipeDataSo>().TryGetDataById(recipeId, out RecipeData recipeData)) return false;
bool removed = false;
int refundCount = 0;
@ -98,7 +98,7 @@ public bool TryRemoveTodayMenu(ItemSlotUi itemSlotUi)
if (removed)
{
var foodData = DataManager.Instance.FoodDataSo.GetDataById(recipeData.RecipeResult);
var foodData = DataManager.Instance.GetDataSo<FoodDataSo>().GetDataById(recipeData.RecipeResult);
foodData.RefundIngredients(refundCount);
}
}
@ -112,7 +112,7 @@ public bool TryRemoveTodayMenu(ItemSlotUi itemSlotUi)
if (removed)
{
var drinkData = DataManager.Instance.DrinkDataSo.GetDataById(recipeData.RecipeResult);
var drinkData = DataManager.Instance.GetDataSo<DrinkDataSo>().GetDataById(recipeData.RecipeResult);
drinkData.RefundIngredients(refundCount);
}
}

View File

@ -47,10 +47,10 @@ private void RemoveItem()
private IEnumerable<string> GetItemIds()
{
if (!Application.isPlaying || DataManager.Instance?.ItemDataSo == null)
if (!Application.isPlaying || DataManager.Instance?.GetDataSo<ItemDataSo>() == null)
return Enumerable.Empty<string>();
return DataManager.Instance.ItemDataSo.GetDataList()
return DataManager.Instance.GetDataSo<ItemDataSo>().GetDataList()
.Select(data => data.Id)
.Where(id => !string.IsNullOrEmpty(id));
}

View File

@ -15,7 +15,7 @@ public static List<IngredientEntry> GetIngredients(this DrinkData data)
public static List<TasteData> GetTasteDatas(this DrinkData data)
=> CraftingHelper.ResolveTasteDatas(
new[] { data.TasteKey1, data.TasteKey2, data.TasteKey3, data.TasteKey4, data.TasteKey5, data.TasteKey6 },
DataManager.Instance.TasteDataSo
DataManager.Instance.GetDataSo<TasteDataSo>()
);
public static int GetCraftableCount(this DrinkData data)

View File

@ -14,7 +14,7 @@ public static List<IngredientEntry> GetIngredients(this FoodData data) => Crafti
public static List<TasteData> GetTasteDatas(this FoodData data)
=> CraftingHelper.ResolveTasteDatas(
new[] { data.TasteKey1, data.TasteKey2, data.TasteKey3, data.TasteKey4, data.TasteKey5, data.TasteKey6 },
DataManager.Instance.TasteDataSo
DataManager.Instance.GetDataSo<TasteDataSo>()
);
public static int GetCraftableCount(this FoodData data)

View File

@ -92,13 +92,17 @@ private bool MatchesCategory(ItemViewModel model, InventoryCategoryType category
case InventoryCategoryType.Food:
if (model.ItemType != ItemType.Recipe) return false;
return DataManager.Instance.RecipeDataSo.TryGetDataById(model.Id, out var foodRecipe) && foodRecipe.RecipeType == RecipeType.FoodRecipe;
return DataManager.Instance.GetDataSo<RecipeDataSo>().TryGetDataById(model.Id, out var foodRecipe) && foodRecipe.RecipeType == RecipeType.FoodRecipe;
case InventoryCategoryType.Drink:
if (model.ItemType != ItemType.Recipe) return false;
return DataManager.Instance.RecipeDataSo.TryGetDataById(model.Id, out var drinkRecipe) && drinkRecipe.RecipeType == RecipeType.DrinkRecipe;
return DataManager.Instance.GetDataSo<RecipeDataSo>().TryGetDataById(model.Id, out var drinkRecipe) && drinkRecipe.RecipeType == RecipeType.DrinkRecipe;
case InventoryCategoryType.Ingredient:
return model.ItemType == ItemType.Ingredient;
case InventoryCategoryType.Cookware:
case InventoryCategoryType.Special:
return true;
default:
return false;
}

View File

@ -9,14 +9,14 @@ public class ItemViewModel
public ItemType ItemType;
public int Count;
public RecipeType RecipeType => ItemType == ItemType.Recipe ? DataManager.Instance.RecipeDataSo.GetDataById(Id).RecipeType : RecipeType.None;
public RecipeType RecipeType => ItemType == ItemType.Recipe ? DataManager.Instance.GetDataSo<RecipeDataSo>().GetDataById(Id).RecipeType : RecipeType.None;
public Sprite ItemSprite
{
get
{
if (ItemType == ItemType.Recipe)
{
DataManager.Instance.RecipeDataSo.TryGetDataById(Id, out var recipe);
DataManager.Instance.GetDataSo<RecipeDataSo>().TryGetDataById(Id, out var recipe);
return DataManager.Instance.GetSprite(recipe.RecipeResult);
}
@ -34,10 +34,10 @@ public Sprite GetCookwareSprite
switch (RecipeType)
{
case RecipeType.FoodRecipe:
cookwareSpriteKey = DataManager.Instance.FoodDataSo.GetDataById(GetRecipeResultKey).CookwareType.ToString();
cookwareSpriteKey = DataManager.Instance.GetDataSo<FoodDataSo>().GetDataById(GetRecipeResultKey).CookwareKey;
break;
case RecipeType.DrinkRecipe:
cookwareSpriteKey = DataManager.Instance.DrinkDataSo.GetDataById(GetRecipeResultKey).CookwareType.ToString();
cookwareSpriteKey = DataManager.Instance.GetDataSo<DrinkDataSo>().GetDataById(GetRecipeResultKey).CookwareKey;
break;
}
return DataManager.Instance.GetSprite(cookwareSpriteKey);
@ -50,7 +50,7 @@ public string GetRecipeResultKey
{
if (ItemType != ItemType.Recipe) return null;
return DataManager.Instance.RecipeDataSo.GetDataById(Id).RecipeResult;
return DataManager.Instance.GetDataSo<RecipeDataSo>().GetDataById(Id).RecipeResult;
}
}
@ -61,9 +61,9 @@ public List<TasteData> GetTasteDatas
switch (RecipeType)
{
case RecipeType.FoodRecipe:
return DataManager.Instance.FoodDataSo.GetDataById(GetRecipeResultKey).GetTasteDatas();
return DataManager.Instance.GetDataSo<FoodDataSo>().GetDataById(GetRecipeResultKey).GetTasteDatas();
case RecipeType.DrinkRecipe:
return DataManager.Instance.DrinkDataSo.GetDataById(GetRecipeResultKey).GetTasteDatas();
return DataManager.Instance.GetDataSo<DrinkDataSo>().GetDataById(GetRecipeResultKey).GetTasteDatas();
}
return null;
@ -79,12 +79,12 @@ public void UpdateCount()
if (RecipeType == RecipeType.FoodRecipe)
{
var foodData = DataManager.Instance.FoodDataSo.GetDataById(resultKey);
var foodData = DataManager.Instance.GetDataSo<FoodDataSo>().GetDataById(resultKey);
craftableCount = foodData.GetCraftableCount();
}
else if (RecipeType == RecipeType.DrinkRecipe)
{
var drinkData = DataManager.Instance.DrinkDataSo.GetDataById(resultKey);
var drinkData = DataManager.Instance.GetDataSo<DrinkDataSo>().GetDataById(resultKey);
craftableCount = drinkData.GetCraftableCount();
}

View File

@ -8,10 +8,10 @@ public static class ItemViewModelFactory
public static List<ItemViewModel> CreateRestaurantManagementInventoryItem()
{
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);
var recipeDataMap = DataManager.Instance.GetDataSo<RecipeDataSo>().GetDataList().ToDictionary(r => r.Id, r => r);
var foodDataMap = DataManager.Instance.GetDataSo<FoodDataSo>().GetDataList().ToDictionary(f => f.Id, f => f);
var drinkDataMap = DataManager.Instance.GetDataSo<DrinkDataSo>().GetDataList().ToDictionary(d => d.Id, d => d);
var ingredientDataMap = DataManager.Instance.GetDataSo<IngredientDataSo>().GetDataList().ToDictionary(i => i.Id, i => i);
foreach (var kvp in InventoryManager.Instance.InventoryItems)
{
@ -39,16 +39,16 @@ public static List<ItemViewModel> CreateRestaurantManagementInventoryItem()
private static int CalculateCraftableCount(string recipeId)
{
if (!DataManager.Instance.RecipeDataSo.TryGetDataById(recipeId, out var recipe)) return 0;
if (!DataManager.Instance.GetDataSo<RecipeDataSo>().TryGetDataById(recipeId, out var recipe)) return 0;
string recipeResult = recipe.RecipeResult;
return recipe.RecipeType switch
{
RecipeType.FoodRecipe => DataManager.Instance.FoodDataSo.TryGetDataById(recipeResult, out var food)
RecipeType.FoodRecipe => DataManager.Instance.GetDataSo<FoodDataSo>().TryGetDataById(recipeResult, out var food)
? food.GetCraftableCount()
: 0,
RecipeType.DrinkRecipe => DataManager.Instance.DrinkDataSo.TryGetDataById(recipeResult, out var drink)
RecipeType.DrinkRecipe => DataManager.Instance.GetDataSo<DrinkDataSo>().TryGetDataById(recipeResult, out var drink)
? drink.GetCraftableCount()
: 0,
_ => 0
@ -57,7 +57,7 @@ private static int CalculateCraftableCount(string recipeId)
public static ItemViewModel CreateByRecipeId(string recipeId)
{
var recipeSo = DataManager.Instance.RecipeDataSo;
var recipeSo = DataManager.Instance.GetDataSo<RecipeDataSo>();
if (!recipeSo.TryGetDataById(recipeId, out var recipe)) return null;
var item = InventoryManager.Instance.GetItemDataByIdOrNull(recipeId);

View File

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
@ -18,7 +19,9 @@ public enum InventoryCategoryType
None = 0,
Food,
Drink,
Ingredient
Ingredient,
Cookware,
Special
}
public class TabButtonUi<T> : MonoBehaviour, IInteractableUi where T : Enum
@ -27,7 +30,7 @@ public class TabButtonUi<T> : MonoBehaviour, IInteractableUi where T : Enum
[SerializeField] private Button _button;
[SerializeField] private Animator _animator;
[SerializeField] private TextMeshProUGUI _label;
[SerializeField] private GameObject _content;
[SerializeField] private List<GameObject> _content = new();
private Action<T> _onSelected;
private bool _isSelected;
@ -50,11 +53,7 @@ public void Initialize(Action<T> onSelected)
public void SetSelected(bool isSelected)
{
_isSelected = isSelected;
if (_content)
{
_content.SetActive(isSelected);
}
SetActiveContents(isSelected);
_button.interactable = !_isSelected;
if (_isSelected)
{
@ -68,6 +67,13 @@ public void SetSelected(bool isSelected)
public bool ButtonIsInteractable => _button != null && _button.interactable;
public GameObject ButtonGameObject => _button?.gameObject;
private void SetActiveContents(bool isActive)
{
foreach (var content in _content)
{
content.SetActive(isActive);
}
}
public void OnInteract()
{
_onSelected?.Invoke(TabType);

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: be71db161987564429bd0e62591815eb
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 582a711af5879c942b17b9936b8871e0
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,20 @@
// <auto-generated>
using System;
using UnityEngine;
namespace DDD
{
[Serializable]
public class CookwareData : IId
{
/// <summary>식별ID</summary>
[Tooltip("식별ID")]
[field: SerializeField]
public string Id { get; set; }
/// <summary>요리도구 타입</summary>
[Tooltip("요리도구 타입")]
public CookwareType CookwareType;
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 41fbff9fffb64f941b07a553fa8615c0

View File

@ -0,0 +1,9 @@
// <auto-generated> File: CookwareDataSo.cs
using System.Collections.Generic;
using UnityEngine;
namespace DDD
{
[CreateAssetMenu(fileName = "CookwareDataSo", menuName = "GoogleSheet/CookwareDataSo")]
public class CookwareDataSo : DataSo<CookwareData> { }
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 26445eed59cfeeb40be052d1792170e2

View File

@ -12,9 +12,9 @@ public class DrinkData : IId
[field: SerializeField]
public string Id { get; set; }
/// <summary>요리도구</summary>
[Tooltip("요리도구")]
public CookwareType CookwareType;
/// <summary>요리도구 키 값</summary>
[Tooltip("요리도구 키 값")]
public string CookwareKey;
/// <summary>요리시간</summary>
[Tooltip("요리시간")]

View File

@ -12,9 +12,9 @@ public class FoodData : IId
[field: SerializeField]
public string Id { get; set; }
/// <summary>요리도구 타입</summary>
[Tooltip("요리도구 타입")]
public CookwareType CookwareType;
/// <summary>요리도구 키 값</summary>
[Tooltip("요리도구 키 값")]
public string CookwareKey;
/// <summary>요리시간</summary>
[Tooltip("요리시간")]

View File

@ -255,6 +255,38 @@
"Id": "item_environment_005",
"ItemType:Enum": "Environment"
},
{
"Id": "item_environment_cookware_001",
"ItemType:Enum": "Environment"
},
{
"Id": "item_environment_cookware_002",
"ItemType:Enum": "Environment"
},
{
"Id": "item_environment_cookware_003",
"ItemType:Enum": "Environment"
},
{
"Id": "item_environment_cookware_004",
"ItemType:Enum": "Environment"
},
{
"Id": "item_environment_cookware_005",
"ItemType:Enum": "Environment"
},
{
"Id": "item_environment_cookware_006",
"ItemType:Enum": "Environment"
},
{
"Id": "item_environment_cookware_007",
"ItemType:Enum": "Environment"
},
{
"Id": "item_environment_cookware_008",
"ItemType:Enum": "Environment"
},
{
"Id": "item_drink_001",
"ItemType:Enum": "Drink"
@ -524,7 +556,7 @@
{
"Id:string": "식별ID",
"#Name": "이름",
"CookwareType:Enum": "요리도구 타입",
"CookwareKey:string": "요리도구 키 값",
"CookTime:int": "요리시간",
"Price:int": "요리가격",
"IngredientKey1:string": "재료1",
@ -545,7 +577,7 @@
{
"Id:string": "item_food_001",
"#Name": "블루 스튜",
"CookwareType:Enum": "Pot",
"CookwareKey:string": "item_environment_cookware_001",
"CookTime:int": 7,
"Price:int": 10,
"IngredientKey1:string": "item_ingredient_001",
@ -566,7 +598,7 @@
{
"Id:string": "item_food_002",
"#Name": "햇빛 스튜",
"CookwareType:Enum": "Pot",
"CookwareKey:string": "item_environment_cookware_001",
"CookTime:int": 7,
"Price:int": 20,
"IngredientKey1:string": "item_ingredient_002",
@ -587,7 +619,7 @@
{
"Id:string": "item_food_003",
"#Name": "심해기억 스튜",
"CookwareType:Enum": "Pot",
"CookwareKey:string": "item_environment_cookware_001",
"CookTime:int": 7,
"Price:int": 15,
"IngredientKey1:string": "item_ingredient_002",
@ -608,7 +640,7 @@
{
"Id:string": "item_food_004",
"#Name": "치킨 굴라쉬",
"CookwareType:Enum": "Pot",
"CookwareKey:string": "item_environment_cookware_001",
"CookTime:int": 10,
"Price:int": 30,
"IngredientKey1:string": "item_ingredient_005",
@ -629,7 +661,7 @@
{
"Id:string": "item_food_005",
"#Name": "꿈해초 크로켓",
"CookwareType:Enum": "Fryer",
"CookwareKey:string": "item_environment_cookware_002",
"CookTime:int": 5,
"Price:int": 20,
"IngredientKey1:string": "item_ingredient_007",
@ -650,7 +682,7 @@
{
"Id:string": "item_food_006",
"#Name": "선라이즈 당근카츠",
"CookwareType:Enum": "Fryer",
"CookwareKey:string": "item_environment_cookware_002",
"CookTime:int": 5,
"Price:int": 30,
"IngredientKey1:string": "item_ingredient_003",
@ -671,7 +703,7 @@
{
"Id:string": "item_food_007",
"#Name": "미정",
"CookwareType:Enum": "Fryer",
"CookwareKey:string": "item_environment_cookware_002",
"CookTime:int": 5,
"Price:int": 30,
"IngredientKey1:string": "item_ingredient_011",
@ -692,7 +724,7 @@
{
"Id:string": "item_food_008",
"#Name": "비늘치킨덕",
"CookwareType:Enum": "FirePit",
"CookwareKey:string": "item_environment_cookware_003",
"CookTime:int": 6,
"Price:int": 30,
"IngredientKey1:string": "item_ingredient_012",
@ -713,7 +745,7 @@
{
"Id:string": "item_food_009",
"#Name": "화룡장어 구이",
"CookwareType:Enum": "FirePit",
"CookwareKey:string": "item_environment_cookware_003",
"CookTime:int": 6,
"Price:int": 15,
"IngredientKey1:string": "item_ingredient_014",
@ -734,7 +766,7 @@
{
"Id:string": "item_food_010",
"#Name": "미정",
"CookwareType:Enum": "FirePit",
"CookwareKey:string": "item_environment_cookware_003",
"CookTime:int": 6,
"Price:int": 30,
"IngredientKey1:string": "item_ingredient_016",
@ -755,7 +787,7 @@
{
"Id:string": "item_food_011",
"#Name": "바다의선물",
"CookwareType:Enum": "CuttingBoard",
"CookwareKey:string": "item_environment_cookware_004",
"CookTime:int": 5,
"Price:int": 10,
"IngredientKey1:string": "item_ingredient_002",
@ -776,7 +808,7 @@
{
"Id:string": "item_food_012",
"#Name": "유령새우회",
"CookwareType:Enum": "CuttingBoard",
"CookwareKey:string": "item_environment_cookware_004",
"CookTime:int": 5,
"Price:int": 25,
"IngredientKey1:string": "item_ingredient_017",
@ -797,7 +829,7 @@
{
"Id:string": "item_food_013",
"#Name": "비늘초무침",
"CookwareType:Enum": "CuttingBoard",
"CookwareKey:string": "item_environment_cookware_004",
"CookTime:int": 5,
"Price:int": 45,
"IngredientKey1:string": "item_ingredient_018",
@ -818,7 +850,7 @@
{
"Id:string": "item_food_014",
"#Name": "쫀징어 냉채",
"CookwareType:Enum": "CuttingBoard",
"CookwareKey:string": "item_environment_cookware_004",
"CookTime:int": 5,
"Price:int": 15,
"IngredientKey1:string": "item_ingredient_011",
@ -839,7 +871,7 @@
{
"Id:string": "item_food_015",
"#Name": "쫀징어링",
"CookwareType:Enum": "Griddle",
"CookwareKey:string": "item_environment_cookware_005",
"CookTime:int": 8,
"Price:int": 25,
"IngredientKey1:string": "item_ingredient_011",
@ -860,7 +892,7 @@
{
"Id:string": "item_food_016",
"#Name": "꿈해파리 볶음",
"CookwareType:Enum": "Griddle",
"CookwareKey:string": "item_environment_cookware_005",
"CookTime:int": 6,
"Price:int": 15,
"IngredientKey1:string": "item_ingredient_019",
@ -881,7 +913,7 @@
{
"Id:string": "item_food_017",
"#Name": "페퍼포칼립스",
"CookwareType:Enum": "Griddle",
"CookwareKey:string": "item_environment_cookware_005",
"CookTime:int": 6,
"Price:int": 25,
"IngredientKey1:string": "item_ingredient_012",
@ -902,7 +934,7 @@
{
"Id:string": "item_food_018",
"#Name": "미정",
"CookwareType:Enum": "MagicOven",
"CookwareKey:string": "item_environment_cookware_006",
"CookTime:int": 0,
"Price:int": 0,
"IngredientKey1:string": "",
@ -923,7 +955,7 @@
{
"Id:string": "item_food_019",
"#Name": "미정",
"CookwareType:Enum": "MagicOven",
"CookwareKey:string": "item_environment_cookware_006",
"CookTime:int": 0,
"Price:int": 0,
"IngredientKey1:string": "",
@ -944,7 +976,7 @@
{
"Id:string": "item_food_020",
"#Name": "미정",
"CookwareType:Enum": "MagicOven",
"CookwareKey:string": "item_environment_cookware_006",
"CookTime:int": 0,
"Price:int": 0,
"IngredientKey1:string": "",
@ -967,7 +999,7 @@
{
"Id:string": "식별ID",
"#Name": "이름",
"CookwareType:Enum": "요리도구",
"CookwareKey:string": "요리도구 키 값",
"CookTime:int": "요리시간",
"Price:int": "요리가격",
"IngredientKey1:string": "재료1",
@ -988,7 +1020,7 @@
{
"Id:string": "item_drink_001",
"#Name": "토마토 주스",
"CookwareType:Enum": "JuiceMachine",
"CookwareKey:string": "item_environment_cookware_007",
"CookTime:int": 1,
"Price:int": 10,
"IngredientKey1:string": "item_ingredient_006",
@ -1009,7 +1041,7 @@
{
"Id:string": "item_drink_002",
"#Name": "오렌지 주스",
"CookwareType:Enum": "JuiceMachine",
"CookwareKey:string": "item_environment_cookware_007",
"CookTime:int": 1,
"Price:int": 10,
"IngredientKey1:string": "item_ingredient_023",
@ -1030,7 +1062,7 @@
{
"Id:string": "item_drink_003",
"#Name": "여신의눈물",
"CookwareType:Enum": "Barrel",
"CookwareKey:string": "item_environment_cookware_008",
"CookTime:int": 3,
"Price:int": 10,
"IngredientKey1:string": "item_ingredient_008",
@ -1051,7 +1083,7 @@
{
"Id:string": "item_drink_004",
"#Name": "라벨블루",
"CookwareType:Enum": "Barrel",
"CookwareKey:string": "item_environment_cookware_008",
"CookTime:int": 3,
"Price:int": 10,
"IngredientKey1:string": "item_ingredient_002",
@ -1168,6 +1200,53 @@
"#Name": "오렌지"
}
],
"CookwareData": [
{
"Id:string": "식별ID",
"#Name": "이름",
"CookwareType:Enum": "요리도구 타입"
},
{
"Id:string": "item_environment_cookware_001",
"#Name": "냄비",
"CookwareType:Enum": "Pot"
},
{
"Id:string": "item_environment_cookware_002",
"#Name": "튀김",
"CookwareType:Enum": "Fryer"
},
{
"Id:string": "item_environment_cookware_003",
"#Name": "화로",
"CookwareType:Enum": "FirePit"
},
{
"Id:string": "item_environment_cookware_004",
"#Name": "",
"CookwareType:Enum": "CuttingBoard"
},
{
"Id:string": "item_environment_cookware_005",
"#Name": "",
"CookwareType:Enum": "Griddle"
},
{
"Id:string": "item_environment_cookware_006",
"#Name": "",
"CookwareType:Enum": "MagicOven"
},
{
"Id:string": "item_environment_cookware_007",
"#Name": "",
"CookwareType:Enum": "JuiceMachine"
},
{
"Id:string": "item_environment_cookware_008",
"#Name": "",
"CookwareType:Enum": "Barrel"
}
],
"TasteData": [
{
"Id:string": "식별ID",
@ -1176,92 +1255,92 @@
},
{
"Id:string": "Sweet",
"#Name": "",
"#Name": "단맛",
"TasteType:Enum": "Sweet"
},
{
"Id:string": "Warm",
"#Name": "",
"#Name": "따뜻한",
"TasteType:Enum": "Warm"
},
{
"Id:string": "Vegetable",
"#Name": "",
"#Name": "채류",
"TasteType:Enum": "Vegetable"
},
{
"Id:string": "Bitter",
"#Name": "",
"#Name": "쓴맛",
"TasteType:Enum": "Bitter"
},
{
"Id:string": "Salty",
"#Name": "",
"#Name": "짠맛",
"TasteType:Enum": "Salty"
},
{
"Id:string": "Mild",
"#Name": "",
"#Name": "담백한",
"TasteType:Enum": "Mild"
},
{
"Id:string": "Addictive",
"#Name": "",
"#Name": "중독적인",
"TasteType:Enum": "Addictive"
},
{
"Id:string": "Sour",
"#Name": "",
"#Name": "신맛",
"TasteType:Enum": "Sour"
},
{
"Id:string": "Savory",
"#Name": "",
"#Name": "고소한",
"TasteType:Enum": "Savory"
},
{
"Id:string": "Meat",
"#Name": "",
"#Name": "육류",
"TasteType:Enum": "Meat"
},
{
"Id:string": "SuperHot",
"#Name": "",
"#Name": "핵불닭맛",
"TasteType:Enum": "SuperHot"
},
{
"Id:string": "Fish",
"#Name": "",
"#Name": "어류",
"TasteType:Enum": "Fish"
},
{
"Id:string": "NoneDegree",
"#Name": "",
"#Name": "도수가없는",
"TasteType:Enum": "NoneDegree"
},
{
"Id:string": "Soda",
"#Name": "",
"#Name": "탄산",
"TasteType:Enum": "Soda"
},
{
"Id:string": "LowDegree",
"#Name": "",
"#Name": "도수가낮은",
"TasteType:Enum": "LowDegree"
},
{
"Id:string": "WoodFlavor",
"#Name": "",
"#Name": "나무향",
"TasteType:Enum": "WoodFlavor"
},
{
"Id:string": "MiddleDegree",
"#Name": "",
"#Name": "도수가보통인",
"TasteType:Enum": "MiddleDegree"
},
{
"Id:string": "FruitFlavor",
"#Name": "",
"#Name": "과일향",
"TasteType:Enum": "FruitFlavor"
}
],

View File

@ -0,0 +1,31 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 26445eed59cfeeb40be052d1792170e2, type: 3}
m_Name: CookwareDataSo
m_EditorClassIdentifier:
Datas:
- <Id>k__BackingField: item_environment_cookware_001
CookwareType: 1
- <Id>k__BackingField: item_environment_cookware_002
CookwareType: 2
- <Id>k__BackingField: item_environment_cookware_003
CookwareType: 3
- <Id>k__BackingField: item_environment_cookware_004
CookwareType: 4
- <Id>k__BackingField: item_environment_cookware_005
CookwareType: 5
- <Id>k__BackingField: item_environment_cookware_006
CookwareType: 6
- <Id>k__BackingField: item_environment_cookware_007
CookwareType: 7
- <Id>k__BackingField: item_environment_cookware_008
CookwareType: 8

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5c7c87af5db0e884eb3b979cb1d2188b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -14,7 +14,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
Datas:
- <Id>k__BackingField: item_drink_001
CookwareType: 7
CookwareKey: item_environment_cookware_007
CookTime: 1
Price: 10
IngredientKey1: item_ingredient_006
@ -32,7 +32,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_drink_002
CookwareType: 7
CookwareKey: item_environment_cookware_007
CookTime: 1
Price: 10
IngredientKey1: item_ingredient_023
@ -50,7 +50,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_drink_003
CookwareType: 8
CookwareKey: item_environment_cookware_008
CookTime: 3
Price: 10
IngredientKey1: item_ingredient_008
@ -68,7 +68,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_drink_004
CookwareType: 8
CookwareKey: item_environment_cookware_008
CookTime: 3
Price: 10
IngredientKey1: item_ingredient_002

View File

@ -14,7 +14,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
Datas:
- <Id>k__BackingField: item_food_001
CookwareType: 1
CookwareKey: item_environment_cookware_001
CookTime: 7
Price: 10
IngredientKey1: item_ingredient_001
@ -32,7 +32,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_002
CookwareType: 1
CookwareKey: item_environment_cookware_001
CookTime: 7
Price: 20
IngredientKey1: item_ingredient_002
@ -50,7 +50,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_003
CookwareType: 1
CookwareKey: item_environment_cookware_001
CookTime: 7
Price: 15
IngredientKey1: item_ingredient_002
@ -68,7 +68,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_004
CookwareType: 1
CookwareKey: item_environment_cookware_001
CookTime: 10
Price: 30
IngredientKey1: item_ingredient_005
@ -86,7 +86,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_005
CookwareType: 2
CookwareKey: item_environment_cookware_002
CookTime: 5
Price: 20
IngredientKey1: item_ingredient_007
@ -104,7 +104,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_006
CookwareType: 2
CookwareKey: item_environment_cookware_002
CookTime: 5
Price: 30
IngredientKey1: item_ingredient_003
@ -122,7 +122,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_007
CookwareType: 2
CookwareKey: item_environment_cookware_002
CookTime: 5
Price: 30
IngredientKey1: item_ingredient_011
@ -140,7 +140,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_008
CookwareType: 3
CookwareKey: item_environment_cookware_003
CookTime: 6
Price: 30
IngredientKey1: item_ingredient_012
@ -158,7 +158,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_009
CookwareType: 3
CookwareKey: item_environment_cookware_003
CookTime: 6
Price: 15
IngredientKey1: item_ingredient_014
@ -176,7 +176,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_010
CookwareType: 3
CookwareKey: item_environment_cookware_003
CookTime: 6
Price: 30
IngredientKey1: item_ingredient_016
@ -194,7 +194,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_011
CookwareType: 4
CookwareKey: item_environment_cookware_004
CookTime: 5
Price: 10
IngredientKey1: item_ingredient_002
@ -212,7 +212,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_012
CookwareType: 4
CookwareKey: item_environment_cookware_004
CookTime: 5
Price: 25
IngredientKey1: item_ingredient_017
@ -230,7 +230,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_013
CookwareType: 4
CookwareKey: item_environment_cookware_004
CookTime: 5
Price: 45
IngredientKey1: item_ingredient_018
@ -248,7 +248,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_014
CookwareType: 4
CookwareKey: item_environment_cookware_004
CookTime: 5
Price: 15
IngredientKey1: item_ingredient_011
@ -266,7 +266,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_015
CookwareType: 5
CookwareKey: item_environment_cookware_005
CookTime: 8
Price: 25
IngredientKey1: item_ingredient_011
@ -284,7 +284,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_016
CookwareType: 5
CookwareKey: item_environment_cookware_005
CookTime: 6
Price: 15
IngredientKey1: item_ingredient_019
@ -302,7 +302,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_017
CookwareType: 5
CookwareKey: item_environment_cookware_005
CookTime: 6
Price: 25
IngredientKey1: item_ingredient_012
@ -320,7 +320,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_018
CookwareType: 6
CookwareKey: item_environment_cookware_006
CookTime: 0
Price: 0
IngredientKey1:
@ -338,7 +338,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_019
CookwareType: 6
CookwareKey: item_environment_cookware_006
CookTime: 0
Price: 0
IngredientKey1:
@ -356,7 +356,7 @@ MonoBehaviour:
TasteKey5:
TasteKey6:
- <Id>k__BackingField: item_food_020
CookwareType: 6
CookwareKey: item_environment_cookware_006
CookTime: 0
Price: 0
IngredientKey1:

View File

@ -109,6 +109,22 @@ MonoBehaviour:
ItemType: 3
- <Id>k__BackingField: item_environment_005
ItemType: 3
- <Id>k__BackingField: item_environment_cookware_001
ItemType: 3
- <Id>k__BackingField: item_environment_cookware_002
ItemType: 3
- <Id>k__BackingField: item_environment_cookware_003
ItemType: 3
- <Id>k__BackingField: item_environment_cookware_004
ItemType: 3
- <Id>k__BackingField: item_environment_cookware_005
ItemType: 3
- <Id>k__BackingField: item_environment_cookware_006
ItemType: 3
- <Id>k__BackingField: item_environment_cookware_007
ItemType: 3
- <Id>k__BackingField: item_environment_cookware_008
ItemType: 3
- <Id>k__BackingField: item_drink_001
ItemType: 4
- <Id>k__BackingField: item_drink_002

View File

@ -40,7 +40,7 @@ private void LoadOrCreateRestaurantState()
private void GenerateDummyEnvironmentProps()
{
// Make dummy placement data
foreach (EnvironmentData prop in DataManager.Instance.EnvironmentDataSo.GetDataList())
foreach (EnvironmentData prop in DataManager.Instance.GetDataSo<EnvironmentDataSo>().GetDataList())
{
for (int i = 0; i < 10; i++)
{

View File

@ -15,9 +15,7 @@ public class RestaurantEnvironment : MonoBehaviour
public async void Initialize(RestaurantEnvironmentData data)
{
await DataManager.Instance.WaitUntilInitialized();
EnvironmentData environmentData = DataManager.Instance.EnvironmentDataSo.GetDataById(data.Id);
EnvironmentData environmentData = DataManager.Instance.GetDataSo<EnvironmentDataSo>().GetDataById(data.Id);
_collider = GetComponent<Collider>();
_visualLook = transform.Find(CommonConstants.VisualLook);

View File

@ -17,6 +17,7 @@ public static class DataConstants
public const string FoodDataSo = "FoodDataSo";
public const string DrinkDataSo = "DrinkDataSo";
public const string IngredientDataSo = "IngredientDataSo";
public const string CookwareDataSo = "CookwareDataSo";
public const string TasteDataSo = "TasteDataSo";
public const string EnvironmentDataSo = "EnvironmentDataSo";
public const string RestaurantPlayerDataSo = "RestaurantPlayerDataSo";