Added requirements to mixer recipes

This commit is contained in:
Pasha Bibko
2026-04-28 11:43:13 +01:00
parent 3f12e49b0f
commit c116028016
3 changed files with 49 additions and 34 deletions

View File

@@ -11,11 +11,13 @@ namespace Fruitomation.Game
{
private struct Recipe
{
public BasicUpgrade Requirement;
public ItemType[] Ingredients;
public ItemType Product;
public Recipe(ItemType[] ingredients, ItemType product)
public Recipe(BasicUpgrade requirement, ItemType[] ingredients, ItemType product)
{
Requirement = requirement;
Ingredients = ingredients;
Product = product;
}
@@ -25,6 +27,7 @@ namespace Fruitomation.Game
{
new
(
BasicUpgrade.DriedFruitSelection,
new[]
{
ItemType.DriedAppleSlices,
@@ -36,6 +39,7 @@ namespace Fruitomation.Game
new
(
BasicUpgrade.AppleMangoJuice,
new[]
{
ItemType.AppleJuice,
@@ -46,6 +50,7 @@ namespace Fruitomation.Game
new
(
BasicUpgrade.SpicedBananaIceCream,
new[]
{
ItemType.BananaIceCream,
@@ -56,6 +61,7 @@ namespace Fruitomation.Game
new
(
BasicUpgrade.ExoticFruitSelection,
new[]
{
ItemType.SlicedKiwi,
@@ -68,6 +74,7 @@ namespace Fruitomation.Game
new
(
BasicUpgrade.SpicedPitayaIceCream,
new[]
{
ItemType.PitayaIceCream,
@@ -134,27 +141,30 @@ namespace Fruitomation.Game
foreach (Recipe recipe in Recipes)
{
bool hasAllIngredients = recipe.Ingredients.Aggregate(true,
(current, ingredient)
=> current && StoredItems.ContainsKey(ingredient)
);
if (hasAllIngredients)
if (UpgradeManager.Is(recipe.Requirement))
{
foreach (ItemType ingredient in recipe.Ingredients)
{
int count = StoredItems[ingredient] - 1;
if (count <= 0)
{
StoredItems.Remove(ingredient);
}
else
{
StoredItems[ingredient] = count;
}
}
bool hasAllIngredients = recipe.Ingredients.Aggregate(true,
(current, ingredient)
=> current && StoredItems.ContainsKey(ingredient)
);
FruitSpawner.SpawnItem(recipe.Product, OutputLocation.position);
if (hasAllIngredients)
{
foreach (ItemType ingredient in recipe.Ingredients)
{
int count = StoredItems[ingredient] - 1;
if (count <= 0)
{
StoredItems.Remove(ingredient);
}
else
{
StoredItems[ingredient] = count;
}
}
FruitSpawner.SpawnItem(recipe.Product, OutputLocation.position);
}
}
}
}

View File

@@ -1,9 +1,10 @@
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Collections.Generic;
using UnityEngine.Scripting;
using UnityEngine;
using System.IO;
using System.Linq;
using System.IO;
using System;
using System.Runtime.CompilerServices;
#if UNITY_EDITOR
using UnityEditor;
@@ -13,7 +14,6 @@ namespace Fruitomation.Game
{
[Serializable] public enum BasicUpgrade
{
//Apple, - Unlocked by default
Grapes,
Bananas,
Kiwi,
@@ -50,6 +50,8 @@ namespace Fruitomation.Game
PitayaFoodDye,
PitayaIceCream,
SpicedPitayaIceCream,
Apple
}
[Serializable] public enum BuildingUnlock
@@ -57,20 +59,20 @@ namespace Fruitomation.Game
None,
//Wall, - Unlocked by default
//Slope,
Floor,
//Slope, - Unlocked by default
[Preserve] Floor,
//Spring, - Unlocked by default
Fan,
Alternator,
[Preserve] Fan,
[Preserve] Alternator,
//Slicer, - Unlocked by default
//Presser, - Unlocked by default
HeatExchanger,
Grinder,
Mixer,
Fermenter,
Peeler,
[Preserve] HeatExchanger,
[Preserve] Grinder,
[Preserve] Mixer,
[Preserve] Fermenter,
[Preserve] Peeler,
}
public class UnlockedUpgrades
@@ -149,6 +151,8 @@ namespace Fruitomation.Game
{
CurrentUpgrades = JsonUtility.FromJson<UnlockedUpgrades.Serialized>(json).Unserialize();
}
CurrentUpgrades.Unlock(BasicUpgrade.Apple); // Unlocked by default
}
CurrentUpgrades ??= new UnlockedUpgrades();
@@ -189,6 +193,7 @@ namespace Fruitomation.Game
public static void ResetUpgrades()
{
CurrentUpgrades = new UnlockedUpgrades();
CurrentUpgrades.Unlock(BasicUpgrade.Apple); // Always unlocked
}
[MenuItem("Fruitomation/Unlock All Upgrades")]