/// <summary> /// 点击-开始合成 /// </summary> public void OnClickForStartSynthesis() { //当前选中的合成道具 ItemsSynthesisBean itemsSynthesis = listSynthesisData[indexSelect]; //检测当前道具是否能合成 bool canSynthesis = itemsSynthesis.CheckSynthesis(); if (!canSynthesis) { //素材不足 无法合成 UIHandler.Instance.ToastHint <ToastView>(TextHandler.Instance.GetTextById(30002)); return; } //首先消耗素材 BaseUIComponent currentUI = UIHandler.Instance.GetOpenUI(); //获取素材 List <ItemsSynthesisMaterialsBean> listMaterials = itemsSynthesis.GetSynthesisMaterials(); UserDataBean userData = GameDataHandler.Instance.manager.GetUserData(); //扣除素材 for (int i = 0; i < listMaterials.Count; i++) { ItemsSynthesisMaterialsBean itemMaterials = listMaterials[i]; for (int f = 0; f < itemMaterials.itemIds.Length; f++) { //只要扣除其中一项素材就行 long itemMaterialId = itemMaterials.itemIds[f]; if (userData.HasEnoughItem(itemMaterialId, itemMaterials.itemNumber)) { userData.RemoveItem(itemMaterialId, itemMaterials.itemNumber); break; } else { continue; } } } //添加道具 itemsSynthesis.GetSynthesisResult(out long itemsId, out int itemNum); int moreNum = userData.AddItems(itemsId, itemNum, null); //如果还有多余的道具 则丢出来 if (moreNum > 0) { Player player = GameHandler.Instance.manager.player; ItemsHandler.Instance.CreateItemCptDrop(itemsId, moreNum, null, player.transform.position + Vector3.up, ItemDropStateEnum.DropNoPick); } UIViewBackpackList backpackUI = currentUI.GetComponentInChildren <UIViewBackpackList>(); backpackUI.RefreshUI(); UIViewShortcuts shortcutsUI = currentUI.GetComponentInChildren <UIViewShortcuts>(); shortcutsUI.RefreshUI(); RefreshUI(); }
/// <summary> /// 点击 /// </summary> /// <param name="eventData"></param> public void OnPointerClick(PointerEventData eventData) { float isFastClick = inputActionShiftClick.ReadValue <float>(); //LogUtil.Log($"OnPointerClick dragging:{eventData.dragging} pointerDrag:{eventData.pointerDrag.name} eligibleForClick:{eventData.eligibleForClick} isFastClick:{isFastClick}"); //如果是快速选择 if (isFastClick == 1) { BaseUIComponent currentUI = UIHandler.Instance.GetOpenUI(); UIViewBoxList boxList; UIViewBackpackList backpackUI; UIViewShortcuts shortcutsUI; switch (originalParent.containerType) { //如果是快捷栏 case UIViewItemContainer.ContainerType.Shortcuts: //首先检测是否有箱子 优先放进箱子 boxList = currentUI.GetComponentInChildren <UIViewBoxList>(); if (boxList != null) { if (boxList.AddItems(this)) { return; } } backpackUI = currentUI.GetComponentInChildren <UIViewBackpackList>(); if (backpackUI != null) { if (backpackUI.AddItems(this)) { return; } } break; //如果是背包或者上帝模式 case UIViewItemContainer.ContainerType.Backpack: case UIViewItemContainer.ContainerType.God: //首先检测是否有箱子 优先放进箱子 boxList = currentUI.GetComponentInChildren <UIViewBoxList>(); if (boxList != null) { if (boxList.AddItems(this)) { return; } } //获取快捷栏 shortcutsUI = currentUI.GetComponentInChildren <UIViewShortcuts>(); if (shortcutsUI != null) { for (int i = 0; i < shortcutsUI.listShortcut.Count; i++) { UIViewItemContainer itemContainer = shortcutsUI.listShortcut[i]; //如果有容器VIEW 并且里面没有东西 if (itemContainer != null && itemContainer.GetViewItem() == null) { //如果是上帝模式则需要在原位置复制一个 if (originalParent.containerType == UIViewItemContainer.ContainerType.God) { CopyItemInOriginal(); } ExchangeItemForContainer(itemContainer); return; } } } break; //如果是箱子里的东西 case UIViewItemContainer.ContainerType.Box: //首先放进快捷栏 shortcutsUI = currentUI.GetComponentInChildren <UIViewShortcuts>(); if (shortcutsUI != null) { for (int i = 0; i < shortcutsUI.listShortcut.Count; i++) { UIViewItemContainer itemContainer = shortcutsUI.listShortcut[i]; //如果有容器VIEW 并且里面没有东西 if (itemContainer != null && itemContainer.GetViewItem() == null) { ExchangeItemForContainer(itemContainer); return; } } } //如果没有成功再放进背包 backpackUI = currentUI.GetComponentInChildren <UIViewBackpackList>(); if (backpackUI != null) { if (backpackUI.AddItems(this)) { return; } } break; } } }