void FilterUncraftableRecipes(CraftingSequence sequence) { if (sequence.IsValid()) { int actionId = sequence.actionItemObject.Item.itemId; int targetId = sequence.targetItemObject.Item.itemId; recipeStepsTaken.FilterOut(r => !r.CraftableWithItemAmount(actionId, 1) || !r.CraftableWithItemAmount(targetId, 1)); } }
public void StoreCompletedCraftingSequence() { if (activeSequence.IsValid()) { Debug.Log(activeSequence.ToString()); activeSequence.RegisterSuccessfulSequenceConclusion(); completedCraftingSequences.Push(activeSequence); activeSequence = new CraftingSequence(); progressTracker.RegisterCraftingSequenceProgress(completedCraftingSequences.Peek()); } activeSequence.ClearSequence(); }
public ItemCrafter() { // CraftingHistory = new Dictionary<CraftingAction, int>(); activeSequence = new CraftingSequence(); completedCraftingSequences = new Stack <CraftingSequence>(); progressTracker = new RecipeProgressTracker(); RecipeProgressTracker.onRecipeCompleted.AddListener(PrintRecipe); ItemObjectBehaviour.InteractedWithItemObject += OnInteractedWithItemObject; ItemObjectBehaviour.PlaceItemBackInInventory += OnItemObjectPlacedBack; InventoryButton.InventoryButtonPressed += OnInventoryButtonPressed; }
public void RegisterCraftingSequenceProgress(CraftingSequence sequence) { foreach (var recipe in recipeStepsTaken.Keys) { if (recipe.ValidateCraftingSequence(sequence)) { recipeStepsTaken.Increment(recipe); } if (CompletedSteps(recipe, recipeStepsTaken[recipe])) { FilterUncraftableRecipes(sequence); sequence.DemolishObjects(activeItemObjectMap.ItemMap); onRecipeCompleted.Invoke(recipe); break; } } }
public bool ValidateCraftingSequence(CraftingSequence sequence) { return(sequences.Contains(sequence.ToString())); }