예제 #1
0
        public static Recipe AddNewRecipe(string name, string itemId, RecipeConfig recipeConfig)
        {
            var recipe = CreateRecipe(name, itemId, recipeConfig);

            if (recipe == null)
            {
                Debug.LogError($"[PrefabCreator] Failed to create recipe ({name})");
                return(null);
            }
            return(AddNewRecipe(recipe));
        }
예제 #2
0
        public static Recipe AddNewRecipe(string name, string itemId, RecipeConfig recipeConfig)
        {
            var recipe = CreateRecipe(name, itemId, recipeConfig);

            return(AddNewRecipe(recipe));
        }
예제 #3
0
        public static Recipe CreateRecipe(string name, string itemId, RecipeConfig recipeConfig)
        {
            var newRecipe = ScriptableObject.CreateInstance <Recipe>();

            newRecipe.name              = name;
            newRecipe.m_amount          = recipeConfig.amount;
            newRecipe.m_minStationLevel = recipeConfig.minStationLevel;
            newRecipe.m_item            = ObjectDB.instance.GetItemPrefab(itemId).GetComponent <ItemDrop>();
            newRecipe.m_enabled         = recipeConfig.enabled;

            if (!string.IsNullOrEmpty(recipeConfig.craftingStation))
            {
                var craftingStationExists = CraftingStations.ContainsKey(recipeConfig.craftingStation);
                if (!craftingStationExists)
                {
                    Debug.LogWarning($"[PrefabCreator] Could not find crafting station ({itemId}): {recipeConfig.craftingStation}");
                    var stationList = string.Join(", ", CraftingStations.Keys);
                    Debug.Log($"[PrefabCreator] Available Stations: {stationList}");
                }
                else
                {
                    newRecipe.m_craftingStation = CraftingStations[recipeConfig.craftingStation];
                }
            }

            if (!string.IsNullOrEmpty(recipeConfig.repairStation))
            {
                var repairStationExists = CraftingStations.ContainsKey(recipeConfig.repairStation);
                if (!repairStationExists)
                {
                    Debug.LogWarning($"[PrefabCreator] Could not find repair station ({itemId}): {recipeConfig.repairStation}");
                    var stationList = string.Join(", ", CraftingStations.Keys);
                    Debug.Log($"[PrefabCreator] Available Stations: {stationList}");
                }
                else
                {
                    newRecipe.m_repairStation = CraftingStations[recipeConfig.repairStation];
                }
            }

            var reqs = new List <Piece.Requirement>();

            foreach (var requirement in recipeConfig.resources)
            {
                var reqPrefab = ObjectDB.instance.GetItemPrefab(requirement.item);
                if (reqPrefab == null)
                {
                    Debug.LogError($"[PrefabCreator] Could not load requirement item ({itemId}): {requirement.item}");
                    continue;
                }

                reqs.Add(new Piece.Requirement()
                {
                    m_amount  = requirement.amount,
                    m_resItem = reqPrefab.GetComponent <ItemDrop>()
                });
            }
            newRecipe.m_resources = reqs.ToArray();

            return(newRecipe);
        }