コード例 #1
0
    private bool FillFlasks(Color[] colors, int ballsToSpawn)
    {
        Ball[] balls = new Ball[ballsToSpawn];

        for (int i = 0; i < balls.Length; i++)
        {
            var ball = Instantiate(ballPrefab);
            ball.Color = colors[i % colors.Length];
            balls[i]   = ball;
        }

        for (int i = 0; i < balls.Length; i++)
        {
            int toSwap = Random.Range(0, balls.Length);
            var buf    = balls[toSwap];
            balls[toSwap] = balls[i];
            balls[i]      = buf;
        }

        Flask flask = Flasks[0];

        for (int i = 0, next = 1; i < balls.Length; i++)
        {
            if (flask.IsFull)
            {
                if (flask.AreSameColors())
                {
                    return(false);
                }
                else
                {
                    flask = Flasks[next++];
                }
            }
            flask.PutImmediate(balls[i]);
        }
        return(true);
    }