public override void DoProgress(BoardStat boardStat) { if (squaresNeedValue == boardStat.removedValue) { base.DoProgress(boardStat); } if (boardStat.minNumber > squaresNeedValue) { isImposible = true; } }
public void OnStepEnd(BoardStat boardStat) { Debug.Log(boardStat); if (boardStat.removedCount <= 1) { return; } if (boardStat.mode == BoardMode.NORMAL) { boardStat.score = UpdateScore(boardStat.removedCount * boardStat.removedValue); } bool targetsDone = true; bool targetsIsImposible = false; foreach (var target in targets) { target.DoProgress(boardStat); if (!target.Done()) { targetsDone = false; } if (target.IsImposible()) { targetsIsImposible = true; } } game.DoProgress(boardStat); gameStat.score = score; gameStat.resoursesUsedRate = game.ResoursesUsedRate(); if (targetsDone) { OnWin(); } if (targetsIsImposible) { OnGameOver(GameOverReason.targetImpossible); } if (!board.HasSteps()) { OnGameOver(GameOverReason.noStepsOnBoard); } if (game.IsLoose()) { OnGameOver(game.gameOverReason); } }
public override void DoProgress(BoardStat boardStat) { base.DoProgress(boardStat); if (boardStat.mode == BoardMode.NORMAL) { leftSteps -= 1; } if (boardStat.IsReleased()) { leftSteps += stepsForRelease; } if (boardStat.removedCount >= bonusSquaresCount) { leftSteps += stepsForSquares * boardStat.removedCount / bonusSquaresCount; } isLoose = leftSteps <= 0; }
public override void DoProgress(BoardStat boardStat) { done = needMinValue <= boardStat.minNumber; }
public override void DoProgress(BoardStat boardStat) { squaresNumber += boardStat.removedCount; done = squaresNumber >= squaresNeedNumber; }
public override void DoProgress(BoardStat boardStat) { done = needMinScore <= boardStat.score; }
public virtual void DoProgress(BoardStat boardStat) { }
public void OnClick(int i, int j, int v) { if (mode == BoardMode.GAMEOVER) { return; } BoardStat boardStat = new BoardStat(minNumber, maxNumber); int removedCount = 0; if (mode == BoardMode.NORMAL) { Dictionary <int, Square> taken = new Dictionary <int, Square>(); NearSameSquares(ref taken, i, j); removedCount = taken.Count; if (removedCount > 1) { int sum = Mathf.FloorToInt(Mathf.Log(removedCount, 2)) + v; foreach (KeyValuePair <int, Square> keyValue in taken) { //Square s = keyValue.Value; //s.DestroyAfterMoveTo(dest).ParallelCoroutinesGroup(this, "DestroyAfterMoveTo"); //StartCoroutine(s.DestroyAfterMoveTo(dest)); squares[keyValue.Key / countX, keyValue.Key % countX] = null; } CreateSquare(i, j, sum); CheckFree(); CorrectMinMax(); int[] shifting = CreateSquaresForFree(); ActionAnimations(taken, i, j, shifting).ParallelCoroutinesGroup(this, "actionAnim" + actionAnimId + 1); } } else if (mode == BoardMode.X2) { removedCount = 1; DestroyImmediate(squares[i, j].gameObject); CreateSquare(i, j, v + 1); if (v + 1 > maxNumber) { maxNumber = v + 1; } } else if (mode == BoardMode.D2) { if (v != 1) { removedCount = 1; DestroyImmediate(squares[i, j].gameObject); CreateSquare(i, j, v - 1); if (v - 1 < minNumber) { maxNumber = v - 1; } } } else if (mode == BoardMode.DEL) { removedCount = 1; DestroyImmediate(squares[i, j].gameObject); CheckFree(); CorrectMinMax(); CreateSquaresForFree(); } boardStat.SetInfo(minNumber, maxNumber, v, removedCount, mode); mode = BoardMode.NORMAL; gameController.OnStepEnd(boardStat); }