public void CellButtonPressed(int nCellIndex) { if (nCellIndex == -1) { Debug.Log("cell button with no nCellIndex"); return; } //зафиксировать, что на этой кнопке был сделан ход cellsController.RegisterACellValueInTurn(nCellIndex); if (cellsController.IsThisAWinner()) { //если на данном ходу определился победитель CellButtonsHandler.SetAllCellButtonsActive(false); turnIndicator.Initialize(); goResultsWindow.SetActive(true); if (cellsController.IsThisTripletOfNoughts()) { resultsWindow.ShowWinner(bIsCrossesWin: false); if (!playerOne.bIsThisTypeIsCrosses) { playerOne.SetAndSaveCountOfWinNumber(playerOne.LoadAndGetCountOfWinNumber() + 1); } if (!playerTwo.bIsThisTypeIsCrosses) { playerTwo.SetAndSaveCountOfWinNumber(playerTwo.LoadAndGetCountOfWinNumber() + 1); } //TODO: магическое число при начислении побед //точнее, оно является вполне законной константой для поля 3х3, потому что //отражает конкретно победу в этом раунде. Однако, если расширять игру //для полей бОльших размеров, то возможно там появится системя счета, а не //просто победил-програл, и тогда здесь можно будет записывать именно //набранное количество очков } if (cellsController.IsThisTripletOfCrosses()) { resultsWindow.ShowWinner(bIsCrossesWin: true); if (playerOne.bIsThisTypeIsCrosses) { playerOne.SetAndSaveCountOfWinNumber(playerOne.LoadAndGetCountOfWinNumber() + 1); } if (playerTwo.bIsThisTypeIsCrosses) { playerTwo.SetAndSaveCountOfWinNumber(playerTwo.LoadAndGetCountOfWinNumber() + 1); } } resultsWindow.SetTextStatistics(resultsWindow.PrepareStatisticsString(playerOne, playerTwo)); return; } if (cellsController.IsThisAStalemate()) { //если на данном ходу возникла ничья CellButtonsHandler.SetAllCellButtonsActive(false); turnIndicator.Initialize(); goResultsWindow.SetActive(true); resultsWindow.ShowStalemate(); resultsWindow.SetTextStatistics(resultsWindow.PrepareStatisticsString(playerOne, playerTwo)); } PlayingFieldCellsController.ChangeTurn(); turnIndicator.ShowTurnIndicator(PlayingFieldCellsController.GetbIsThisCrossesTurn(), GetPlayerNameByTurn(PlayingFieldCellsController.GetbIsThisCrossesTurn())); }
public void ButtonRestartPressed() { GameInitialization(); CellButtonsHandler.ResetAllCellButtons(); CellButtonsHandler.SetAllCellButtonsActive(true); turnIndicator.ShowTurnIndicator(PlayingFieldCellsController.GetbIsThisCrossesTurn(), GetPlayerNameByTurn(PlayingFieldCellsController.GetbIsThisCrossesTurn())); }
private void OnMouseUp() { if (!bButtonEnable) { return; } DrawCellSprite(PlayingFieldCellsController.GetbIsThisCrossesTurn()); onButtonPressed(_nCellIndex); bButtonEnable = false; }
void StartGame() { //вызывается по нажатии кнопки Играть в основном меню playingFieldFiller.DrawPlayingCells(); playingFieldFiller.DrawLatticeLines(); listGoCellButtons = CellButtonsHandler.GetListGoButtons(); for (int c = 0; c < listGoCellButtons.Count; c++) { listGoCellButtons[c].GetComponent <CellButtonScript>(). onButtonPressed += CellButtonPressed; } turnIndicator.ShowTurnIndicator(PlayingFieldCellsController.GetbIsThisCrossesTurn(), GetPlayerNameByTurn(PlayingFieldCellsController.GetbIsThisCrossesTurn())); }