private SwapType GetSwapType(InventoryIconUI a, InventoryIconUI b) { var swapType = SwapType.InvalidSwap; if (a.m_iconType == InventoryIconType.Inv && b.m_iconType == InventoryIconType.Inv) { swapType = SwapType.InvToInv; } else if (a.m_iconType == InventoryIconType.Inv && b.m_iconType == InventoryIconType.Craft) { swapType = SwapType.InvToCraft; } else if (a.m_iconType == InventoryIconType.Craft && b.m_iconType == InventoryIconType.Inv) { swapType = SwapType.CraftToInv; } else if (a.m_iconType == InventoryIconType.Craft && b.m_iconType == InventoryIconType.Craft) { swapType = SwapType.CraftToCraft; } else if (a.m_iconType == InventoryIconType.Crafted && b.m_iconType == InventoryIconType.Inv) { swapType = SwapType.CraftedToInv; } return(swapType); }
private void AllocateItem() { if (prevIconUI == null || horveredIconUI == null) { return; } var swapType = GetSwapType(prevIconUI, horveredIconUI); if (swapType != SwapType.InvToCraft && swapType != SwapType.CraftToCraft) { return; } OnAllocateItem?.Invoke(prevIconUI.m_slotID, horveredIconUI.m_slotID, swapType); Debug.Log($"Allocate Swap {prevIconUI.m_slotID} {horveredIconUI.m_slotID} {swapType}"); horveredIconUI = null; }
private void Update() { if (!Util.isCrafting) { return; } if (!Util.IsMobile()) { if (Input.GetKey(KeyCode.Mouse1)) { AllocateItem(); } if (Input.GetKeyUp(KeyCode.Mouse1)) { prevIconUI = null; ToggleIconSelection(false); } } }
private void Start() { Util.OnToggleCraftingMode += (state) => { if (state) { ToggleIconSelection(false); } }; InventoryIconUI.OnPointerClicked += (InventoryIconUI target) => { //仅在创作中 需要交换物体等行为 if (!Util.isCrafting) { return; } if (!Util.IsMobile()) { if (!Input.GetKeyUp(KeyCode.Mouse0)) { return; } } if (prevIconUI == null) { prevIconUI = target; foreach (var t in inventoryIcons) { t.ToggleSelectEffect(t == target); } OnHighlightedItem?.Invoke(target); } else if (prevIconUI != target) { var swapType = GetSwapType(prevIconUI, target); OnSwapItem?.Invoke(prevIconUI.m_slotID, target.m_slotID, swapType); Debug.Log($"Perform Swap {prevIconUI.m_slotID} {target.m_slotID} {swapType}"); prevIconUI = null; ToggleIconSelection(false); } }; //创作中 分配Inventory InventoryIconUI.OnPointerEntered += (InventoryIconUI target) => { if (!Util.isCrafting) { return; } horveredIconUI = target; if (Util.IsMobile()) { AllocateItem(); } }; InventoryIconUI.OnPointerExited += (InventoryIconUI target) => { horveredIconUI = null; }; }
public void AppendIconUI(InventoryIconUI iconUI) { inventoryIcons.Add(iconUI); }