Example #1
0
    /// <summary>
    /// Активация бонуса
    /// </summary>
    /// <param name="x">Положение X</param>
    /// <param name="y">Положение Y</param>
    /// <param name="typeOfBonus">Тип бонуса</param>
    public static void ActivateBonus(int x, int y, TypeOfPlanet typeOfPlanet, TypeOfBonus typeOfBonus, TypeOfBonus typeOfExPlanetBonus = TypeOfBonus.None)
    {
        switch (typeOfBonus)
        {
        case TypeOfBonus.HorizontalLine:
        {
            HorizontalLineActivate(x, y);
            break;
        }

        case TypeOfBonus.VerticalLine:
        {
            VerticalLineActivate(x, y);
            break;
        }

        case TypeOfBonus.BoxFirst:
        {
            BoxFirstBonusActivate(x, y, typeOfPlanet);
            break;
        }

        case TypeOfBonus.BoxSecond:
        {
            BoxSecondActivate(x, y);
            break;
        }

        case TypeOfBonus.Star:
        {
            StarBonusActivate(x, y, typeOfPlanet, typeOfExPlanetBonus);
            break;
        }
        }
    }
Example #2
0
 public void SetBonus(TypeOfBonus bonus)
 {
     foreach (TypeOfBonus bns in bonuses)
     {
         if (bns == bonus)
         {
             return;
         }
     }
     bonuses.Add(bonus);
 }
Example #3
0
 public static void StarBonusActivate(int x, int y, TypeOfPlanet typeOfPlanet, TypeOfBonus typeOfExPlanetBonus)
 {
     for (int i = 0; i < SlotController.sizeField; i++)
     {
         for (int j = 0; j < SlotController.sizeField; j++)
         {
             if (bonusController.slotController.slots[i, j].planet != null && bonusController.slotController.slots[i, j].planet.typeOfPlanet == typeOfPlanet)
             {
                 Slot       destroySlot = bonusController.slotController.slots[i, j];
                 GameObject initLine    = Instantiate(bonusController.starLinePrefab, bonusController.slotController.slots[x, y].transform.position, bonusController.slotController.slots[x, y].transform.rotation);
                 initLine.GetComponent <TrailRenderer>().sortingOrder = 1;
                 initLine.transform.DOMove(bonusController.slotController.slots[i, j].transform.position, 0.5f).OnComplete(delegate
                 {
                     Destroy(initLine);
                     if (typeOfExPlanetBonus == TypeOfBonus.None)
                     {
                         destroySlot.DestroyPlanetInSlot();
                     }
                     else
                     {
                         if (destroySlot == bonusController.slotController.slots[x, y])
                         {
                             destroySlot.DestroyPlanetInSlot();
                         }
                         else
                         {
                             if (!destroySlot.planet.HaveLineBonus())
                             {//рандомное значение: вертикальный или горизонтальный бонус
                                 destroySlot.planet.SetDirectionOfMove();
                                 AddLineBonus(destroySlot);
                                 destroySlot.planet.SetBonus(typeOfExPlanetBonus);
                             }
                             bonusController.planetsForDestruction.Add(destroySlot.planet);
                         }
                     }
                 });
             }
         }
     }
     SlotController.CanPlanetMove = true;
 }
Example #4
0
    public void MoveToSlot(Slot slotToMove, Planet exPlanet)
    {
        directionOfMove = TypeLineBonus.Verical;

        if (slot.x == slotToMove.x)
        {
            directionOfMove = TypeLineBonus.Verical;
        }
        if (slot.y == slotToMove.y)
        {
            directionOfMove = TypeLineBonus.Horizontal;
        }

        if (slot != null)
        {
            slot.planet = null;
        }
        slot = null;
        slotToMove.planet = this;
        transform.DOMove(slotToMove.transform.position, speedMove).SetEase(Ease.Linear).OnUpdate(
            delegate
        {
            if (slot != null)
            {
                SlotController.CanPlanetMove = false;
            }
        }).OnComplete(delegate
        {
            if (HaveStarBonus())
            {
                typeOfPlanet = exPlanet.typeOfPlanet;
                if (exPlanet.CountBonus() != 0)
                {
                    typeOfExPlanetBonus = exPlanet.bonuses[0];
                }
            }
            OnCompliteMove(slotToMove);
        });
    }
Example #5
0
 public void ActivateBonus()
 {
     bonuses.Sort();
     foreach (TypeOfBonus bonus in bonuses)
     {
         if (slot != null)
         {
             TypeOfBonus typeBonus = bonus;
             bonuses.Remove(bonus);
             BonusController.ActivateBonus(slot.x, slot.y, typeOfPlanet, typeBonus, typeOfExPlanetBonus);
             break;
         }
         else
         {
             if (slotToMove != null)
             {
                 TypeOfBonus typeBonus = bonus;
                 bonuses.Remove(bonus);
                 BonusController.ActivateBonus(slotToMove.x, slotToMove.y, typeOfPlanet, typeBonus, typeOfExPlanetBonus);
                 break;
             }
         }
     }
 }