private void ItemSlotOnClickDelegateFunction(int index, ItemSlotType itemSlotType) { ItemSlotDTO itemSlotDTO = this.itemSlotCollectionDTOs[itemSlotType].ItemSlotDTOs[index]; if (itemSlotDTO.HasItem && itemSlotDTO.ItemSlotRawImage.texture != null) { //The cursor has no texture yet, but the source has it if (CursorInputWrapper.CursorItemTexture == null) { CursorInputWrapper.CursorItemTexture = itemSlotDTO.ItemSlotRawImage.texture; CursorInputWrapper.OriginalInventoryItem = itemSlotDTO.OriginalInventoryItem; //Clear out the item slot texture after it was clicked itemSlotDTO.ItemSlotRawImage.texture = null; itemSlotDTO.HasItem = false; itemSlotDTO.OriginalInventoryItem = default; } //The source and destination both have a texture else if (CanBePlacedInSlot(itemSlotType)) { //Swap the textures if target has a texture (target is itemSlotDto in this case) Texture tempTexture = itemSlotDTO.ItemSlotRawImage.texture; InventoryItem tempInventoryItem = itemSlotDTO.OriginalInventoryItem; itemSlotDTO.ItemSlotRawImage.texture = CursorInputWrapper.CursorItemTexture; itemSlotDTO.OriginalInventoryItem = CursorInputWrapper.OriginalInventoryItem; itemSlotDTO.HasItem = true; CursorInputWrapper.CursorItemTexture = tempTexture; CursorInputWrapper.OriginalInventoryItem = tempInventoryItem; } } //Destination has no item yet (cursor already has a texture) else if (CursorInputWrapper.CursorItemTexture != null && CanBePlacedInSlot(itemSlotType)) { //Target item slot has no texture so set it and then "remove" the cursor item texture (set to null) itemSlotDTO.ItemSlotRawImage.texture = CursorInputWrapper.CursorItemTexture; itemSlotDTO.OriginalInventoryItem = CursorInputWrapper.OriginalInventoryItem; itemSlotDTO.HasItem = true; CursorInputWrapper.CursorItemTexture = null; } //Force the player equip system to re-evaluate the item slot dto itemSlotDTO.IsEquippedToPlayer = false; this.itemSlotCollectionDTOs[itemSlotType].ItemSlotDTOs[index] = itemSlotDTO; }
private void RemoveOnClickDelegateFunction(ItemSlotDTO itemSlotDTO, ItemSlotType itemSlotType) { itemSlotDTO.ItemSlotButton.onClick.RemoveListener(delegate { ItemSlotOnClickDelegateFunction(itemSlotDTO.Index, itemSlotType); }); }