private void PlayDebugGame() { GameStateMachine.DebugSettings settings = GenerateDebugGame(); FindObjectOfType <GameStateMachine>().PlayDebugGame(settings); }
private GameStateMachine.DebugSettings GenerateDebugGame() { GameStateMachine.DebugSettings settings = new GameStateMachine.DebugSettings(); settings.playBackSpeed = playBackSpeed; int boardSize = gameBoard.BoardSize; List <int> winningMoves = new List <int>(); switch ((WIN_TYPES)selectedWinType) { case WIN_TYPES.HORIZONTAL: { for (int i = 0; i < boardSize; i++) { winningMoves.Add(i + (selectedWinLine * boardSize)); } break; } case WIN_TYPES.VERTICAL: { for (int i = 0; i < boardSize; i++) { winningMoves.Add(selectedWinLine + (i * boardSize)); } break; } case WIN_TYPES.DIAGONAL: { if (selectedWinLine == 0) { for (int i = 0; i < boardSize; i++) { winningMoves.Add(i + (i * boardSize)); } } else { int currTile = boardSize - 1; for (int i = 0; i < boardSize; i++) { winningMoves.Add(currTile); currTile += boardSize - 1; } } break; } case WIN_TYPES.DRAW: { if (boardSize == 3) { settings.tileSelections = new int[] { 0, 1, 4, 8, 5, 6, 7, 3, 2 }; } else if (boardSize == 4) { settings.tileSelections = new int[] { 0, 1, 4, 8, 5, 6, 7, 3, 2, 9, 10, 11, 12, 13, 14, 15 }; } return(settings); } default: break; } //Generate losing move list and make sure it doesn't include a win List <int> losingMoves; do { losingMoves = RandomNumberUtil.GetRandomValues(0, boardSize * boardSize, boardSize, true, new List <int>(winningMoves)); } while (CheckForWins(losingMoves)); settings.tileSelections = CombineMoveLists(winningMoves, losingMoves); return(settings); }