///<summary> /// Item object possible click actions switch. ///</summary> private void ItemButtonAction(InventoryItemInstance instance, Constants.ItemInteraction interaction) { switch (interaction) { case Constants.ItemInteraction.AddToCart: { BeginAddItemToCurentOrder(instance); break; } case Constants.ItemInteraction.RemoveFromCart: { RemoveItemFromCurentOrder(instance); break; } case Constants.ItemInteraction.NoInteraction: { break; } default: { break; } } }
///<summary> ///Updates the item object's interface and assigns its button and double click actions. ///</summary> public void UpdateItemObject(Constants.ItemInteraction interactionType, InventoryItemInstance instance, UnityAction clickAction, UnityAction doubleAction) { switch (interactionType) { case Constants.ItemInteraction.NoInteraction: { isDoubleClickEditable = false; stockLabelText.text = Constants.AMMOUNT_LABEL; editButton.gameObject.SetActive(false); break; } case Constants.ItemInteraction.AddToCart: { isDoubleClickEditable = true; stockLabelText.text = Constants.STOCK_LABEL; editButton.gameObject.SetActive(true); addToCartImage.SetActive(true); removeCartImage.SetActive(false); break; } case Constants.ItemInteraction.RemoveFromCart: { isDoubleClickEditable = false; stockLabelText.text = Constants.AMMOUNT_LABEL; editButton.gameObject.SetActive(true); addToCartImage.SetActive(false); removeCartImage.SetActive(true); break; } default: { break; } } ID = instance.Item.Name.ToLower(); itemNameText.text = instance.Item.Name; stockText.text = instance.Quantity.ToString(); priceText.text = (instance.discount > 0) ? Constants.DIDSCOUNT_OLD_BEGIN + Constants.CURENCY_SYMBOL + instance.Item.BasePrice + " -" + instance.discount + Constants.PERCENT + Constants.DIDSCOUNT_OLD_END + Constants.NEWLINE + Constants.DIDSCOUNT_NEW_BEGIN + Constants.CURENCY_SYMBOL + instance.DiscountedPrice.ToString(Constants.CURENCY_FORMAT) + Constants.DIDSCOUNT_NEW_END : Constants.CURENCY_SYMBOL + instance.DiscountedPrice.ToString(Constants.CURENCY_FORMAT); editButton.onClick.AddListener(clickAction); doubleClickAction = doubleAction; gameObject.SetActive(true); }
///<summary> /// Creates the item objects from the given <paramref name="itemList"/> if they do not already exist in the provided <paramref name="spawnedList"/>, and disables ones that are not present. /// Objects are instantiated into the apropriate <paramref name="parentTransform"/>, and the <paramref name="interaction"/> enum determines the possible functions of the updated objects. ///</summary> internal void UpdateItemObjects( Constants.ItemInteraction interaction, RectTransform parentTransform, List <InventoryItemInstance> itemList, List <ItemObject> spawnedList, bool destroyObjects, UnityAction <InventoryItemInstance, Constants.ItemInteraction> buttonAction, UnityAction <InventoryItemInstance> doubleClickAction ) { if (spawnedList != null) { foreach (ItemObject item in spawnedList) { if (!destroyObjects) { item.gameObject.SetActive(false); } else { Destroy(item.gameObject); } } if (destroyObjects) { spawnedList.Clear(); } } foreach (InventoryItemInstance itemInstance in itemList) { if (spawnedList != null) { if (!spawnedList.Exists(i => i.ID.Equals(itemInstance.Item.ID))) { ItemObject newItemObject = Instantiate(itemObjectPrefab, parentTransform).GetComponent <ItemObject>(); newItemObject.UpdateItemObject(interaction, itemInstance, () => buttonAction(itemInstance, interaction), () => doubleClickAction(itemInstance)); spawnedList.Add(newItemObject); } else { spawnedList.Find(i => i.ID.Equals(itemInstance.Item.ID)).UpdateItemObject(interaction, itemInstance, () => buttonAction(itemInstance, interaction), () => doubleClickAction(itemInstance)); } } else { ItemObject newItemObject = Instantiate(itemObjectPrefab, parentTransform).GetComponent <ItemObject>(); newItemObject.UpdateItemObject(interaction, itemInstance, () => buttonAction(itemInstance, interaction), () => doubleClickAction(itemInstance)); } } }