Beispiel #1
0
 void Reload()
 {
     SetNeighborBubbles();
     CurrentBubbleValue = CurrentBubble.GetComponent <BubbleScript>().SetValue(NextBubbleValue);
     NextBubbleValue    = NextBubble.GetComponent <BubbleScript>().SetRandomValue(BubbleScript.BubbleValue.Two, BubbleScript.BubbleValue.SixtyFour);
     currentState       = ShootState.Aiming;
 }
Beispiel #2
0
    // Start is called before the first frame update
    void Start()
    {
        if (instance == null)
        {
            instance = this;
        }

        CurrentBubbleValue = CurrentBubble.GetComponent <BubbleScript>().SetRandomValue(BubbleScript.BubbleValue.Two, BubbleScript.BubbleValue.SixtyFour);
        NextBubbleValue    = NextBubble.GetComponent <BubbleScript>().SetRandomValue(BubbleScript.BubbleValue.Two, BubbleScript.BubbleValue.SixtyFour);


        SpawnBubbles();
    }
Beispiel #3
0
    void MergeBubbles()
    {
        if (!IsMovingToMergeBubble)
        {
            BubblesToMove.Clear();
            BubbleScript.BubbleValue targetValue = CurrentBubbleValue;
            BubblesToMove.Add(BubbleToMergeInto);
            bool FirstCheck = BubbleToMergeInto.GetNeighBorsOfvalue(targetValue, ref BubblesToMove);

            if (FirstCheck)
            {
                for (int i = 0; i < BubblesToMove.Count; i++)
                {
                    BubblesToMove[i].GetNeighBorsOfvalue(targetValue, ref BubblesToMove);
                }

                BubbleToMergeInto = BubblesToMove[BubblesToMove.Count - 1];

                if ((int)(BubbleToMergeInto.ThisValue) + BubblesToMove.Count >= (int)BubbleScript.BubbleValue.Count)
                {
                    BubblesToMove.Remove(BubbleToMergeInto);
                    BubblesToMove.TrimExcess();

                    IsMovingToMergeBubble = true;
                }
                else
                {
                    int NewNearbyMerges = 0;
                    for (int i = 0; i < BubblesToMove.Count; i++)
                    {
                        List <BubbleScript> valid = new List <BubbleScript>();
                        BubblesToMove[i].GetNeighBorsOfvalue((BubbleScript.BubbleValue)((int)(BubbleToMergeInto.ThisValue) + BubblesToMove.Count - 1), ref valid);

                        if (valid.Count > NewNearbyMerges)
                        {
                            NewNearbyMerges   = valid.Count;
                            BubbleToMergeInto = BubblesToMove[i];
                        }
                    }
                    BubblesToMove.Remove(BubbleToMergeInto);
                    BubblesToMove.TrimExcess();

                    IsMovingToMergeBubble = true;
                }
            }
            else
            {
                currentState = ShootState.RemovingfloatingBubbles;
            }
        }
        else
        {
            bool allArrived = true;
            for (int i = 0; i < BubblesToMove.Count; i++)
            {
                if (!BubbleToMergeInto.transform.position.Equals(BubblesToMove[i].transform.position))
                {
                    allArrived = false;
                    BubblesToMove[i].transform.position = Vector3.MoveTowards(BubblesToMove[i].transform.position, BubbleToMergeInto.transform.position, BubbleSpeed * Time.deltaTime * 5);
                }
            }

            if (allArrived)
            {
                if ((int)(BubbleToMergeInto.ThisValue) + BubblesToMove.Count >= (int)BubbleScript.BubbleValue.Count)
                {
                    BubbleToMergeInto.SetValue(BubbleScript.BubbleValue.TwoK);
                }
                else
                {
                    BubbleToMergeInto.SetValue((BubbleScript.BubbleValue)((int)BubbleToMergeInto.ThisValue + BubblesToMove.Count));
                }

                if (BubbleToMergeInto.ThisValue == BubbleScript.BubbleValue.TwoK)
                {
                    for (int i = 0; i < BubblesToMove.Count; i++)
                    {
                        BubblesToMove[i].Pop();
                    }

                    SetNeighborBubbles();

                    BubbleToMergeInto.Explode();
                    currentState          = ShootState.RemovingfloatingBubbles;
                    IsMovingToMergeBubble = false;
                }
                else
                {
                    for (int i = 0; i < BubblesToMove.Count; i++)
                    {
                        BubblesToMove[i].Pop();
                    }

                    BubblesToMove.Clear();

                    if (BubbleToMergeInto.GetNeighBorsOfvalue(BubbleToMergeInto.ThisValue, ref BubblesToMove))
                    {
                        IsMovingToMergeBubble = false;
                        CurrentBubbleValue    = BubbleToMergeInto.ThisValue;
                    }
                    else
                    {
                        currentState          = ShootState.RemovingfloatingBubbles;
                        IsMovingToMergeBubble = false;
                    }
                }
            }
        }
    }