Example #1
0
    // Use this for initialization
    void Start()
    {
        //读取配置和解析数据
        InitData();

        //初始化游戏背景
        InitGameBg();

        //加载资源
        InitResources();

        //初始化关卡数据,如通过目标,数量,步数
        InitPlayLevelMsg();

        //初始化方块
        InitGrid();

        //初始化关卡完成界面
        InitFinishPlayLevel();

        openEditorButton.transform.SetAsLastSibling();//设置编辑器开关的渲染顺序为最后

        //传递数据
        GridConn.InitGridUIAttribute();
        GridDrop.InitGridUIAttribute();
        GridReset.InitGridUIAttribute();
    }
Example #2
0
    // Use this for initialization
    void Start()
    {
        //读取配置和解析数据
        initData();

        //初始化游戏背景
        initGameBg();

        //加载资源
        initResources();

        //初始化关卡数据,如通过目标,数量,步数
        initPlayLevelMsg();

        //初始化方块
        initGrid();

        //初始化关卡完成界面
        initFinishPlayLevel();

        //传递数据
        GridConn.initGridUIAttribute();
        GridDrop.initGridUIAttribute();
        GridReset.initGridUIAttribute();
    }
Example #3
0
    // Update is called once per frame
    void Update()
    {
        //获取第一个点中的方块信息
        if (Input.GetMouseButtonDown(0))
        {
            GetStartGrid();
        }

        //判断移动后的下一个方块是否与第一个方块类型相同
        if (Input.GetMouseButton(0))
        {
            GetNextGridAndDrawLine();
        }

        //松手后判断方块连接数是否可消除,并进行冰块、雪块等判断消除和掉落信息记录
        if (Input.GetMouseButtonUp(0))
        {
            UpdateUIAndGirdMsg();
        }

        //执行方块掉落
        GridDrop.Drop();
    }
Example #4
0
    private void UpdateUIAndGirdMsg()
    {
        //[1]在格子区域抬起鼠标,则默认用户希望消除方块,否则则撤销消除
        if (Input.mousePosition.x > x && Input.mousePosition.x < (x + mGridSize * mGameData.vertical + mIntervalPx * (mGameData.vertical - 1)) && Input.mousePosition.y < y && Input.mousePosition.y > (y - ((mGameData.horizontal * mGridSize + mIntervalPx * (mGameData.horizontal - 1)))))
        {
            if (drawCounts >= 2)
            {
                isRemovePoison = false;

                //优先判断是否有特效方块
                foreach (GridBean gridBean in lineConnectGridList)
                {
                    //TODO 实现特效方块消除效果
                    if (gridBean.specialTpye >= 0)
                    {
                        RemoveSpecialGrid(gridBean);
                    }
                }

                //判断是否需要消除lineConnectGridList剩余的普通方块
                foreach (GridBean gridBean in lineConnectGridList)
                {
                    int v = gridBean.vertical;
                    int h = gridBean.horizontal;

                    isDestroyGrid = false;
                    for (int removeIndex = 0; removeIndex < mGridListManager[v].Count; removeIndex++)
                    {
                        if (mGridListManager[v][removeIndex].horizontal == h)
                        {
                            //[2]计算是否消除了目标类型
                            if (gridBean.spriteIndex == mEditorData.targetType)
                            {
                                deleteCounts++;
                            }

                            //[3]判断方块上方是否有树藤
                            if (mGridBaseListManager[v][h].spriteIndex == 21)
                            {
                                foreach (TimboBean timboBean in mTimboDataList)
                                {
                                    if (timboBean.timboVertical == v && timboBean.timboHorizontal == h)
                                    {
                                        Destroy(timboBean.timbo);
                                        mTimboDataList.Remove(timboBean);
                                        mGridBaseListManager[v][h].spriteIndex = 0;
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                mGridBaseListManager[v][h].isHasGrid = false;
                                mGridListManager[v].RemoveAt(removeIndex);
                                isDestroyGrid = true;
                            }
                            break;
                        }
                    }

                    //[3]判断方块底部是否有冰块
                    if (mIceDataList != null)
                    {
                        foreach (IceBean iceBean in mIceDataList)
                        {
                            if (iceBean.iceVertical == v && iceBean.iceHorizontal == h)
                            {
                                mIceLevel = iceBean.iceLevel;
                                if (mIceLevel > 0)
                                {
                                    mIceLevel--;
                                    if (mIceLevel > 0)
                                    {
                                        iceBean.ice.GetComponent <Image>().sprite = mAllSprites[mIceLevel + 9];
                                        iceBean.iceLevel = mIceLevel;
                                    }
                                    else
                                    {
                                        if (mEditorData.targetType == 11)
                                        {
                                            deleteCounts++;
                                        }
                                        Destroy(iceBean.ice);
                                        mIceDataList.Remove(iceBean);
                                    }
                                }
                                break;
                            }
                        }
                    }

                    //[4]判断消除附近是否有雪块
                    if (mFrostingList != null)
                    {
                        CheckFrosting(gridBean);
                    }

                    //[5]判断消除附近是否有毒液
                    if (mPoisonList != null)
                    {
                        CheckPoison(gridBean);
                    }

                    //[6]消除方块
                    if (isDestroyGrid)
                    {
                        Destroy(gridBean.gridObject);
                    }
                }

                //[7]还原雪块消除信息
                if (mFrostingList != null)
                {
                    for (int i = 0; i < mFrostingList.Count; i++)
                    {
                        mFrostingList[i].isFrostingRemove = false;
                    }
                }

                //[8]判断是否生成特效方块
                //产生魔力鸟
                if (lineConnectGridList.Count >= 10)
                {
                    CreateSpecialGrid(0);
                }
                else
                {
                    if (lineConnectGridList.Count >= 6)
                    {
                        int startV = lineConnectGridList[0].vertical;
                        int startH = lineConnectGridList[0].horizontal;
                        //判断都在同一列或者同一行,产生横竖直线特效方块
                        bool isTheSameVertical = true;
                        foreach (GridBean g in lineConnectGridList)
                        {
                            if (g.vertical != startV)
                            {
                                isTheSameVertical = false;
                                break;
                            }
                        }

                        //产生竖线特效
                        if (isTheSameVertical)
                        {
                            CreateSpecialGrid(1);
                        }
                        else
                        {
                            bool isTheSameHorizontal = true;
                            foreach (GridBean g in lineConnectGridList)
                            {
                                if (g.horizontal != startH)
                                {
                                    isTheSameHorizontal = false;
                                    break;
                                }
                            }

                            //产生横线特效
                            if (isTheSameHorizontal)
                            {
                                CreateSpecialGrid(2);
                            }
                            else//若不为上述两种情况,则产生爆炸方块
                            {
                                CreateSpecialGrid(3);
                            }
                        }
                    }
                }

                //[9]检查是否需要生成毒液
                CheckIsCreatePoison();

                //[10]记录方块掉落信息
                GridDrop.RecordGridDropMsg();

                //[11]刷新步数信息
                mEditorData.stepCounts--;
                if (mEditorData.targetType == 13)
                {
                    mIsCreateBeanPod--;
                }
                if (mEditorData.stepCounts > 0)
                {
                    mStepCounts.GetComponent <Text>().text = mEditorData.stepCounts.ToString();
                    if (mEditorData.targetType == 13 && mIsCreateBeanPod == 0)
                    {
                        CreateBeanPod();
                    }
                }
                else
                {
                    //[11.1]已没有步数,提示失败
                }

                //[12]刷新目标数量
                UpdateTargetCounts(deleteCounts);
            }
        }

        //[13]移除线段对象和线段数量
        if (lineObjList.Count > 0)
        {
            foreach (GameObject obj in lineObjList)
            {
                Destroy(obj);
            }
            lineObjList.Clear();
        }
        drawCounts = 0;

        //[14]移除lineConnectGridList的内容
        lineConnectGridList.Clear();
    }