bool IsSolvable(PuzzleCombination _combination, TurbineButtonData newButton)
    {
        int[] currentEs = _combination.InitialEValues;

        currentEs[0] -= newButton.E1Modifier;
        if (currentEs[0] < 0 || currentEs[0] > 100)
        {
            return(false);
        }
        currentEs[1] -= newButton.E2Modifier;
        if (currentEs[1] < 0 || currentEs[1] > 100)
        {
            return(false);
        }
        currentEs[2] -= newButton.E3Modifier;
        if (currentEs[2] < 0 || currentEs[2] > 100)
        {
            return(false);
        }
        currentEs[3] -= newButton.E4Modifier;
        if (currentEs[3] < 0 || currentEs[3] > 100)
        {
            return(false);
        }

        return(true);
    }
    private void GenerateNewPuzzleCombination()
    {
        PuzzleCombination        newComb = new PuzzleCombination();
        TurbineButtonData        possibleButton;
        List <TurbineButtonData> usedButtons = new List <TurbineButtonData>();

        //Numero di pulsanti richiesti;
        for (int i = 0; i < LabledButtons.Count; i++)
        {
            if (i < 2)
            {
                while (newComb.Solution.Count == i)
                {
                    possibleButton = GetUnchosenButton(usedButtons);
                    if (IsSolvable(newComb, possibleButton))
                    {
                        newComb.Solution.Add(possibleButton);
                        usedButtons.Add(possibleButton);
                        break;
                    }
                }
            }
            else
            {
                possibleButton = GetUnchosenButton(usedButtons);
                usedButtons.Add(possibleButton);
                newComb.Fillers.Add(possibleButton);
            }
        }

        newComb.ResetEValues();
        combination = newComb;
    }