/// <summary> /// Pushes crafting material of given type onto /// crafting menu's "On Deck" list /// </summary> /// <param name="materialToPush">type of material to push</param> /// <param name="amount">IGNORED - needed to listen for remove materials event</param> void PushMaterial(CraftingMaterials materialToPush, int amount) { // if materials currently on deck isn't above max if (materialsOnDeck.Count < maxMaterialsOnDeck) { // push crafting material onto deck materialsOnDeck.Add(materialToPush); CraftingMaterialOnDeck newOnDeck = Instantiate(onDeckMaterialTemplate, parentContainer).GetComponent <CraftingMaterialOnDeck>(); // modify visual elements of new on deck crafting material newOnDeck.Icon = craftingMaterialsIcons[(int)materialToPush]; newOnDeck.MaterialType = materialToPush; // if user pushed last material onto deck if (materialsOnDeck.Count == maxMaterialsOnDeck) { // determine whether player can craft an item and return myWeaponCrafter.DetermineItemFromMaterials(materialsOnDeck.ToArray()); return; } // didn't return, play standard push sound effect AudioManager.Play(pushSound, true); } // otherwise (materials on deck plus new exceeds max) else { // discard material, returning it to player's inventory addMaterialsEvent.Invoke(materialToPush, 1); // play appropriate sound effect AudioManager.Play(cantPushSound, true); } }
// Adds given material on deck as invoker of pop material event public static void AddPopMaterialInvoker(CraftingMaterialOnDeck invoker) { // adds invoker to list and adds all listeners to this invoker popMaterialInvokers.Add(invoker); foreach (UnityAction <CraftingMaterials> listener in popMaterialListeners) { invoker.AddPopMaterialListener(listener); } }