Exemple #1
0
    public void createWaterColumns()
    {
        List <Bubble> bubbles = new List <Bubble>();
        List <Block>  blocks  = new List <Block>();

        PreWaterNode[,] vector = new PreWaterNode[GameConst.height, GameConst.width];
        PreWaterNode node = new PreWaterNode();

        node.row         = row;
        node.col         = col;
        node.type        = WaterColumn.WaterType.Center;
        node.isObstacle  = false;
        node.isBubble    = true;
        vector[row, col] = node;
        find(ref vector);
        for (int i = 0; i < GameConst.height; i++)
        {
            for (int k = 0; k < GameConst.width; k++)
            {
                if (vector[i, k] != null)
                {
                    PreWaterNode node_ = vector[i, k];
                    if (node_.isObstacle)
                    {
                        Block block = GameConst.sceneObstacles[i, k].GetComponent <Block>();
                        if (block != null)
                        {
                            blocks.Add(block);
                        }
                    }
                    else if (node_.isBubble)
                    {
                        Bubble bubble = GameConst.bubbles[i, k];
                        bubble.trigger = true;
                        bubbles.Add(GameConst.bubbles[i, k]);
                        CreateWaterColumn(i, k, WaterColumn.WaterType.Center);
                    }
                    else
                    {
                        CreateWaterColumn(i, k, node_.type);
                    }
                }
            }
        }
        foreach (Block block in blocks)
        {
            block.BeDestory();
        }
        foreach (Bubble bubble in bubbles)
        {
            bubble.BeDestory();
        }
    }
Exemple #2
0
    public void FindLoop(ref PreWaterNode[,] vector, int row, int col, WaterColumn.WaterType type1, WaterColumn.WaterType type2, int type)
    {
        int index = 0;
        int col_  = col;
        int row_  = row;

        while (index < power)
        {
            if (type == 0)
            {
                row_ -= 1;
                if (row_ < 0)
                {
                    break;
                }
            }
            else if (type == 1)
            {
                col_ += 1;
                if (col_ >= GameConst.width)
                {
                    break;
                }
            }
            else if (type == 2)
            {
                row_ += 1;
                if (row_ >= GameConst.height)
                {
                    break;
                }
            }
            else
            {
                col_ -= 1;
                if (col_ < 0)
                {
                    break;
                }
            }
            PreWaterNode node = vector[row_, col_];
            if (node == null)
            {
                node     = new PreWaterNode();
                node.row = row_;
                node.col = col_;
                //mid
                if (index < power - 1)
                {
                    node.type = type1;
                }
                //end
                else
                {
                    node.type = type2;
                }
                vector[row_, col_] = node;
                if (GameConst.sceneObstacles[row_, col_] != null)
                {
                    node.isObstacle = true;
                    node.isBubble   = false;
                }
                else if (GameConst.bubbles[row_, col_] != null)
                {
                    node.isObstacle = false;
                    node.isBubble   = true;
                    Bubble bubble = GameConst.bubbles[row_, col_];
                    node.type = WaterColumn.WaterType.Center;
                    bubble.find(ref vector);
                }
                else
                {
                    node.isObstacle = false;
                    node.isBubble   = false;
                }
            }
            else
            {
                if (index < power - 1)
                {
                    node.type = type1;
                }
            }

            if (GameConst.sceneObstacles[row_, col_] != null)
            {
                Block block = GameConst.sceneObstacles[row_, col_].GetComponent <Block>();
                if (block == null)
                {
                    break;
                }
                else if (!canWall)
                {
                    break;
                }
            }
            index++;
        }
    }