public void Init(InitIntent intent) { // Get gameplay parameters from level manager rows = levelManager.GetComponent <LevelManager>().rows; columns = levelManager.GetComponent <LevelManager>().columns; maxValue = levelManager.GetComponent <LevelManager>().maxValue; numberOfTargets = levelManager.GetComponent <LevelManager>().numberOfTargets; movesLimit = levelManager.GetComponent <LevelManager>().movesLimit; // Fix grid layout to make correct number of columns gameField.GetComponent <GridLayoutGroup>().constraintCount = columns; // Generate the field & pass the target value if (intent == InitIntent.NewLevel) { fieldGenerator = new FieldGenerator(rows, columns, maxValue, numberOfTargets, movesLimit); } targetValue = fieldGenerator.targetValue; // Set global value text in the top HUD currentTargetValue = 0; globalTargetText.text = targetValue.ToString(); currentTargetText.text = currentTargetValue.ToString(); // Set progress bar resetProgressBar(); // Create an array of game field cells gameFieldCells = new GameFieldCell[rows, columns]; // Instantiate game field cells and set their values for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { // Instantiate & name var cell = Instantiate(cellPrefab, gameField.transform).GetComponent <GameFieldCell>(); gameFieldCells[i, j] = cell; cell.gameObject.name = "Button Row " + fieldGenerator.cells[i, j].row.ToString() + " Col " + fieldGenerator.cells[i, j].column.ToString(); cell.gameplayManager = gameObject.GetComponent <GameplayManager>(); cell.helpMessageManager = helpMessageManager.GetComponent <HelpMessageManager>(); cell.soundPlayer = soundPlayer.GetComponent <SoundPlayer>(); // Here goes something ugly IMHO cell.normalPressSound = normalPressSound; cell.usedPressSound = usedPressSound; cell.arrowsOnSound = arrowsOnSound; cell.arrowsOffSound = arrowsOffSound; // Set values from the generator cell.row = fieldGenerator.cells[i, j].row; cell.column = fieldGenerator.cells[i, j].column; cell.Value = fieldGenerator.cells[i, j].value; cell.isTarget = fieldGenerator.cells[i, j].isTarget; } } // Set game state to normal gameStateManager.GetComponent <GameStateManager>().StateChange(GameStates.Normal); }
public void StartLevel(int levelNumber, InitIntent intent) { // Disable gameplay manager gameplayManager.GetComponent <GameplayManager>().Reset(); // Set current level number and other parameters currentLevelNumber = levelNumber; if (currentLevelNumber < levels.Length) { rows = levels[currentLevelNumber].rows; columns = levels[currentLevelNumber].columns; maxValue = levels[currentLevelNumber].maxValue; numberOfTargets = levels[currentLevelNumber].numberOfTargets; movesLimit = levels[currentLevelNumber].movesLimit; } else { rows = levels[levels.Length - 1].rows; columns = levels[levels.Length - 1].columns; maxValue = levels[levels.Length - 1].maxValue; numberOfTargets = levels[levels.Length - 1].numberOfTargets; movesLimit = levels[levels.Length - 1].movesLimit; } // Enable gameplay manager so it can take parameters and generate grid gameplayManager.GetComponent <GameplayManager>().Init(intent); // Update current level & highscore PlayerPrefs.SetInt("currentLevel", currentLevelNumber); if (currentLevelNumber > PlayerPrefs.GetInt("bestResult")) { PlayerPrefs.SetInt("bestResult", currentLevelNumber); } PlayerPrefs.Save(); // Set level number in top HUD levelNumberText.GetComponent <Text>().text = "Level " + (currentLevelNumber + 1).ToString(); //Debug.Log("Level " + (currentLevelNumber + 1).ToString() + " start"); }