Exemplo n.º 1
0
    public void Operate(Operation op)
    {
        switch (op.opType)
        {
        case 0:
        {
            generalPanelUI.InsertPuzzle(op.opPuzzle, false);
            break;
        }

        case 1:
        {
            PuzzleItemData opPuzzleItemData = op.opPuzzle.GetComponent <PuzzleItemUI>().puzzleItemData;
            generalPanelUI.generalPanelData.ModiLayout(GeneralPanelData.GridType.Blank, opPuzzleItemData);
            opPuzzleItemData.PanelGridIndex = op.newGridIndex;
            generalPanelUI.InsertPuzzle(op.opPuzzle, false);
            break;
        }

        case 2:
        {
            generalPanelUI.RemovePuzzle(op.opPuzzle, false);
            break;
        }

        default:
            break;
        }
    }
Exemplo n.º 2
0
    public void OnEndDrag(PointerEventData pointerEventData, PuzzleItemUI puzzleItemUI, GeneralPanelUI generalPanelUI)
    {
        if (gameOverFlag)
        {
            return;
        }
        if (puzzleItemUI.puzzleItemData.Plockstate)
        {
            return;
        }
        if (!puzzleItemUI.DraggedState)
        {
            return;
        }
        if (firstDragPointerID != pointerEventData.pointerId)//限制手指pointerId不同的不可被放置,可用于限制只能单指操作
        {
            return;
        }
        miniMapController.RefreshFlag = true;

        //拖动结束后,满足一定条件时拼图可以被插进面板,否则移除生成的拼图(隐藏显示)
        PuzzleItemData puzzleItemData = puzzleItemUI.puzzleItemData;

        Debug.Log("End Drag At:" + pointerEventData.position);
        puzzleItemUI.cloneForMove.SetActive(false);

        int gridIndex = -1;

        int[] blankLayout = null;
        int   interactRet = generalPanelUI.InteractWithPuzzle(puzzleItemUI.cloneForMove.GetComponent <PuzzleItemUI>(), out gridIndex, out blankLayout);

        puzzleItemData.PanelGridIndex = gridIndex;

        generalPanelUI.ShowPreCheckResult(2);

        //FINISH:进行操作记录,interactRet为0时,进行填充记录或位置移动记录;interactRet为3时,进行删除记录(操作历史记录的实现写于GeneralPanelUI中)

        if (interactRet == 0)//如果拼图在满足填充条件的位置
        {
            //把拼图插入
            generalPanelUI.InsertPuzzle(puzzleItemUI.gameObject);
        }
        else if (interactRet == 1 || interactRet == 2) //如果拼图在不满足填充条件以及不在删除区的其他位置
        {
            if (!puzzleItemData.NotSettleFlag)         //如果被开始拖的拼图已经放置了
            {
                puzzleItemData.PanelGridIndex = puzzleItemData.LastPanelGridIndex;
                generalPanelUI.InsertPuzzle(puzzleItemUI.gameObject, false);
            }

            Debug.Log("not fit " + interactRet);
        }
        else if (interactRet == 3)//如果拼图在删除区
        {
            //删除
            if (!puzzleItemData.NotSettleFlag)
            {
                Debug.Log("删除拼图");
                puzzleItemData.PanelGridIndex = puzzleItemData.LastPanelGridIndex;
                generalPanelUI.RemovePuzzle(puzzleItemUI.gameObject);
            }
            generalPanelUI.deleteParticleEffect.Play();
            DragController.VibrateFeedbackIntern();
        }

        //FINISH:deleteArea缩小为1
        generalPanelUI.OnDeleteAreaFlag = false;
        StartCoroutine(generalPanelUI.DeleteAreaLinearScaleDown());
        // generalPanelUI.deleteArea.transform.localScale = Vector3.one;

        puzzleItemUI.DraggedState = false;
        generalDragFlag           = false;

        //TODO:deleteArea置為透明
        generalPanelUI.SetDeleteAreaTransparent(true);
    }