Ejemplo n.º 1
0
    /// <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();
    }
Ejemplo n.º 2
0
    /// <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;
            }
        }
    }