/// <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; } } }
public void SetBonus(TypeOfBonus bonus) { foreach (TypeOfBonus bns in bonuses) { if (bns == bonus) { return; } } bonuses.Add(bonus); }
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; }
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); }); }
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; } } } }