public void Set(CraftingButton cb) { if (breakingDown) { if (playerUsing.inventory[cb.invSlotForBreakdown].asset.breakdownMaterials.Count > 0) { if (playerUsing.inventory[cb.invSlotForBreakdown].amount > 0) { breakdownIndex = cb.invSlotForBreakdown; working = true; workTimerTotal = 3f; } } } else { craftData = cb.craftBlueprintData; bool canCraft = true; List <AssetInventorySlot> inventoryCopy = new List <AssetInventorySlot>(); foreach (AssetInventorySlot slot in playerUsing.inventory) { var clone = slot.Clone(); inventoryCopy.Add(clone); } foreach (AssetData a in craftData.craftingMaterials) { bool foundAsset = false; foreach (AssetInventorySlot s in inventoryCopy) { if (s.asset == a && s.amount > 0) { s.amount--; foundAsset = true; } } if (!foundAsset) { canCraft = false; break; } } if (canCraft) { working = true; workTimerTotal = Mathf.Max(3, craftData.baseValue * .6f); } } if (working) { workshopCanvas.gameObject.SetActive(true); playerUsing.pui.craftingPanel.SetActive(false); } }
private void Start() { uiManager = UIManager.Instance; playerStats = PlayerManager.Instance.playerStats; playerStats.OnCraftingSkilledUp += UpdateCraftingSkillText; List <Item> craftableItems = GameManager.Instance.GetCraftableItems(); craftableItems.Sort((x, y) => x.craftingSkillRequired.CompareTo(y.craftingSkillRequired)); foreach (Item item in craftableItems) { GameObject newItemButton = Instantiate(itemButton, itemButtonSpacer1, false); CraftingButton cButton = newItemButton.GetComponent <CraftingButton>(); cButton.SetItem(item); cButtons.Add(cButton); } craftingUI.SetActive(false); ResetCraftingUI(); }