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));
        }
    }
Exemplo n.º 2
0
    public void StoreCompletedCraftingSequence()
    {
        if (activeSequence.IsValid())
        {
            Debug.Log(activeSequence.ToString());
            activeSequence.RegisterSuccessfulSequenceConclusion();
            completedCraftingSequences.Push(activeSequence);

            activeSequence = new CraftingSequence();
            progressTracker.RegisterCraftingSequenceProgress(completedCraftingSequences.Peek());
        }

        activeSequence.ClearSequence();
    }
Exemplo n.º 3
0
    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;
            }
        }
    }
Exemplo n.º 5
0
 public bool ValidateCraftingSequence(CraftingSequence sequence)
 {
     return(sequences.Contains(sequence.ToString()));
 }