public void setBang(float time = -1)
 {
     if (isbang && (time != 0 || BallScriptPtr.color == BALLTYPE.BOMB || BallScriptPtr.color == BALLTYPE.MOVEDOWN))
     {
         return;
     }
     if (time == -1)
     {
         time = Time.time;
     }
     isbang   = true;
     bangtime = time;
     if (BallScriptPtr.color == BALLTYPE.BOMB)
     {
         IGame.Instance.boombomb(BallScriptPtr.getPosition());
     }
 }
    public int calculateDFS(BallScriptPointer pball, List <BallScriptPointer> list, bool bang = false)
    {
        int result = 0;

        list.Add(pball);

        foreach (JointRef joint in pball.GetJoints())
        {
            if (joint.joint == null)
            {
                continue;
            }

            if (!(list.Contains(joint.connectedBall)))
            {
                if (joint.connectedBall.color == pball.color)
                {
                    result++;
                    result += calculateDFS(joint.connectedBall, list, bang);
                }
            }
        }


        if (bang)
        {
            if (pball.getBall().isbasic)
            {
                IGame.Instance.bangbang(pball.getPosition());
            }
            else
            {
                IGame.Instance.bangbang(pball.getPosition(), false);
            }
            pball.getBall().Killitself();
        }

        return(result);
    }