static public void Win() { instance.FreePools(); Highscore.instance.AddScore(Mathf.FloorToInt(Time.timeSinceLevelLoad)); instance.WinScreen.gameObject.SetActive(true); instance.Invoke("LoadMenu", 5f); }
private void OnWin() { if (WinEvent != null) { WinEvent.Invoke(); } }
private void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("Respawn")) { if (restartInProgress || playerWon) { return; } PlayerLostEvent?.Invoke(); restartInProgress = true; Invoke(nameof(RestartTimer), 3.0f); } else if (other.gameObject.CompareTag("Finish")) { if (restartInProgress) { return; } WinEvent?.Invoke(); playerWon = true; movementScript.enabled = false; } }
public void Win() { WinEvent?.Invoke(); this.enabled = false; GetHead().enabled = false; GetMovement().enabled = false; handler.Disable(true, false); }
//EnemyCheck is used to detect other players when flipping, //called from the PlayerMovement script public void EnemyCheck(Vector2 pos) { Vector2 size = transform.lossyScale * triggerBox.size; Collider2D intersecting = Physics2D.OverlapBox(pos, size, 0.0f, LayerMask.GetMask("Players"), -1.0f, 1.0f); if (intersecting != null) { Debug.Log("ObjName = " + intersecting.gameObject.name); Destroy(intersecting.gameObject); endTheGame.Invoke(playerConfig); } }
private bool WinChecker() { var roasts = Controller.Cooker.FryingBorger.Roast; foreach (var roast in roasts) { if (roast > CurrentRecipe.MaxFry || roast < CurrentRecipe.MinFry) { return(false); } } WinEvent?.Invoke(); return(true); }
// Update is called once per frame void Update() { if (!GameIsFinished) { if (WinTimer > WinTimeElapsed) { WinTimeElapsed += Time.deltaTime; } else { // Win! WinTimeElapsed = 0.0f; GameIsFinished = true; OnWin?.Invoke(); } } }
private void OnWin(Dice dice, string ret) { WinEvent?.Invoke(this, ret); }
/// <summary> /// Ход пиратов /// </summary> /// <returns>Новое положение пиратов</returns> public Position PirateGo() { //Если : пираты уже на границе поля - поражение if (_PirateLocation[0] == 0 || _PirateLocation[0] == 21 || _PirateLocation[1] == 0 || _PirateLocation[1] == 15) { LoseEvent.Invoke(this, new EventArgs()); return(null); } //Рейтинг выбора движения для пиратов //[0] - северо-запад //[1] - северо-восток //[2] - юго-восток //[3] - юго-запад var rating = new int[] { 10000, 10000, 10000, 10000 }; //Определение разрешенных направлений for (var i = 0; i < 4; i++) { var address = GetNewPosition(_PirateLocation, (Direction)i); //Если : путь кораблю в соответствующем направлении закрыт - туда не ходим if (_Plane[address[0]][address[1]].Status == StatusPoint.Mine) { rating[i] = -10000; } } //Проверка зажат-ли кораблик минами if (rating[0] == -10000 && rating[1] == -10000 && rating[2] == -10000 && rating[3] == -10000) { WinEvent.Invoke(this, new EventArgs()); return(null); } #region Определение рейтинга ближайшего пути: //Каждая сторона света убавляет рейтинга по дальности до границы напрямую rating[0] -= _BalanceCurse * (_PirateLocation[1]); rating[1] -= _BalanceCurse * (_PirateLocation[1]); rating[1] -= _BalanceCurse * (21 - _PirateLocation[0]); rating[2] -= _BalanceCurse * (21 - _PirateLocation[0]); rating[2] -= _BalanceCurse * (15 - _PirateLocation[1]); rating[3] -= _BalanceCurse * (15 - _PirateLocation[1]); rating[3] -= _BalanceCurse * (_PirateLocation[0]); rating[0] -= _BalanceCurse * (_PirateLocation[0]); #endregion #region Определение рейтинга опасности: //Каждая мина на прямой и по сторонам от главного курса уменьшает рейтинг пути for (var i = 0; i < 4; i++) { var tick = 0; int[] address = _PirateLocation; int[] temp = null; //Ведем подсчет, пока не достигнем конца курса while (true) { //Получаем первое смещение по курсу address = GetNewPosition(address, (Direction)i); //Если : уперлись в границу карты - выход if (address == null) { break; } //Каждая мина изменяет рейтинг пути if (_Plane[address[0]][address[1]].Status == StatusPoint.Mine) { tick++; } //Учитываем мину при повороте курса против часовой стрелки temp = GetNewPosition(address, RollCourse(i - 1)); if (temp != null && _Plane[temp[0]][temp[1]].Status == StatusPoint.Mine) { tick++; } //Учитываем мину при повороте курса по часовой стрелке temp = GetNewPosition(address, RollCourse(i + 1)); if (temp != null && _Plane[temp[0]][temp[1]].Status == StatusPoint.Mine) { tick++; } } rating[i] -= _BalanceMines * tick; } #endregion #region Определение рейтинга вариативности: //Кол-во вариантов выбора пути после совершения хода for (var i = 0; i < 4; i++) { var tick = 0; var address = GetNewPosition(_PirateLocation, (Direction)i); int[] temp = null; for (var j = 0; j < 4; j++) { temp = GetNewPosition(address, (Direction)j); if (temp != null && _Plane[temp[0]][temp[1]].Status == StatusPoint.Mine) { tick++; } } rating[i] -= _BalanceVariables * tick; } #endregion var dic = new Dictionary <int, int>(4); for (var i = 0; i < 4; i++) { dic.Add(i, rating[i]); } //Смена локации корабля _Plane[_PirateLocation[0]][_PirateLocation[1]].Status = StatusPoint.Empty; _PirateLocation = GetNewPosition(_PirateLocation, (Direction)GetTopCurse(dic, GetTopCurse(dic, 0, 1), GetTopCurse(dic, 2, 3))); _Plane[_PirateLocation[0]][_PirateLocation[1]].Status = StatusPoint.Ship; return(_Plane[_PirateLocation[0]][_PirateLocation[1]]); }