示例#1
0
    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);
    }
示例#2
0
    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");
    }