static void OnChordTypePresets2BangClickedWithLeftButton(Bang bang, int category, bool stateEnabled)
 {
     for (int i = 0; i < _chordType.Count; i++) // activo todos los tipos de acorde cuyo índice sea menor a 4, y desactivo los otros
     {
         if (i < 11)
         {
             _chordType[i].stateEnabled    = true;
             ChordVoicing.isTypeEnabled[i] = true;
         }
         else
         {
             _chordType[i].stateEnabled    = false;
             ChordVoicing.isTypeEnabled[i] = false;
         }
     }
 }
Пример #2
0
        static void OnRandomizeBangClickedWithLeftButton(Bang bang, int category, bool stateEnabled)
        {
            ChordAnsweringManager.evaluatedChordTypeAnswer      = "";
            ChordAnsweringManager.evaluatedChordInversionAnswer = "";
            ChordAnsweringManager.chordDescriptionPart1         = "";
            ChordAnsweringManager.chordDescriptionPart2         = "";
            ChordAnsweringManager.allowAnswer = true;
            chord1.GenerateRandomVoicing();            //llamo a la función de chord1 "GenerateRandomVoicing"
            chord1.PlaySimultaneous();                 //llamo a la función de chord1 "Play"

            if (_alreadyRandomizedFirstChord == false) //solo quiero permitir que se repitan acordes una vez que haya randomizado un acorde
            {
                chordPlaying[DictionaryKeyForRepeat].stateEnabled     = true;
                chordPlaying[DictionaryKeyForArpeggiate].stateEnabled = true;
                _alreadyRandomizedFirstChord = true;
            }
        }
Пример #3
0
        public static Checkbox slowerArpeggiations = null;        //la asigno en el initialize, así me aseguro de que para ese momento va a haber cargado lo necesario. La hago public porque quiero que el ChordVoicing pueda acceder a ella, para determinar la velocidad a la que hacer los arpegios.


        public static void Initialize()
        {
            //creo los bangs, asocio los delegates a las funciones correspondientes, y luego los agrego al diccionario (podría agregarlos al diccionario y luego asociar sus delegates, pero eso creo que sería menos eficiente, porque buscar al bang correspondiente adentro de un diccionario lleva más tiempo que accederlo directamente, me parece)
            Bang currentBang = null; //voy a usar una variable llamada "currentBang" como carretilla, para ir referenciando a los bangs que creo, asignándoles una función a su delegate, y agregándolos al diccionario.

            currentBang = new Bang(new Vector2(LayoutManager.marginLeft, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 2), "Randomize Chord", (int)BangCategory.Chord, true, Keys.Left);
            currentBang.BangClickedWithLeftButton += OnRandomizeBangClickedWithLeftButton;
            chordPlaying.Add(DictionaryKeyForRandomize, currentBang);

            //una vez que agregué ese bang al diccionario, voy a acceder a él por medio del diccionario, así que paso a usar la variable "currentBang" para hacer lo mismo con los otros bangs.
            currentBang = new Bang(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 2), "Repeat Chord", (int)BangCategory.Chord, false, Keys.Right);
            currentBang.BangClickedWithLeftButton += OnRepeatBangClickedWithLeftButton;
            chordPlaying.Add(DictionaryKeyForRepeat, currentBang);

            currentBang = new Bang(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 2, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 2), "Repeat as Arpeggio", (int)BangCategory.Chord, false, Keys.Up);
            currentBang.BangClickedWithLeftButton += OnArpeggiateBangClickedWithLeftButton;
            chordPlaying.Add(DictionaryKeyForArpeggiate, currentBang);


            slowerArpeggiations = new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 3, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 2), "Slower Arpeggiations", (int)CheckboxCategory.Option, true, false, Keys.OemMinus, Keys.Subtract);

            slowerArpeggiations.CheckboxClickedWithLeftButton += OnSlowerArpeggiationsCheckboxClickedWithLeftButton;
        }
        static void OnSubmitBangClickedWithLeftButton(Bang bang, int category, bool stateEnabled) //le sumo uno al contador de respuestas totales, evalúo si la respuesta es correcta o no y actúo en consecuencia
        {
            allowAnswer = false;                                                                  // deshabilito la opción de responder

            ScoreManager.totalAnswers++;                                                          //sumo uno al contador de cuántas respuestas dio el jugador (que es visible en la UI).

            if (ChordListManager.selectedType == (int)ChordPlayingManager.chord1.type)
            {
                ScoreManager.correctTypes++;
                evaluatedChordTypeAnswer       = "CORRECT TYPE!!";
                _evaluatedChordTypeAnswerColor = Main.fontColorForCorrectAnswer;
            }
            else
            {
                evaluatedChordTypeAnswer       = "WRONG TYPE...";
                _evaluatedChordTypeAnswerColor = Main.fontColorForWrongAnswer;
            }

            if (ChordListManager.selectedInversion == (int)ChordPlayingManager.chord1.inversion)
            {
                ScoreManager.correctInversions++;
                evaluatedChordInversionAnswer       = "CORRECT INVERSION!!";
                _evaluatedChordInversionAnswerColor = Main.fontColorForCorrectAnswer;
            }
            else
            {
                evaluatedChordInversionAnswer       = "WRONG INVERSION...";
                _evaluatedChordInversionAnswerColor = Main.fontColorForWrongAnswer;
            }

            //actualizo los porcentajes de aciertos
            ScoreManager.correctTypesPercentage      = (ScoreManager.correctTypes * 100) / ScoreManager.totalAnswers;
            ScoreManager.correctInversionsPercentage = (ScoreManager.correctInversions * 100) / ScoreManager.totalAnswers;

            DisplayChordDescription();
        }
        static void OnRevealBangClickedWithLeftButton(Bang bang, int category, bool stateEnabled)
        {
            allowAnswer = false; // deshabilito la opción de responder

            DisplayChordDescription();
        }
        private static Bang _reset = null; //no la referencio ahora sino en Initialize, así sé que para ese momento cargó todos los assets.

        public static void Initialize()
        {
            _reset = new Bang(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 3, LayoutManager.marginTop + LayoutManager.gridRowSeparation), "Reset Score", (int)BangCategory.Chord, true, Keys.OemPeriod, Keys.Decimal);

            _reset.BangClickedWithLeftButton += OnResetBangClickedWithLeftButton;
        }
        } = 0;                                                 //variable donde almaceno el número correspondiente a la inversión de acorde que tenga seleccionada el jugador (por defecto la primera)

        public static void Initialize()
        {
            for (int i = 0; i < ChordVoicing.isTypeEnabled.Length; i++)
            {
                ChordVoicing.isTypeEnabled[i] = true;                                                         //por ahora comienzo la instancia del acorde con todos los tipos de acorde habilitados
            }
            for (int i = 0; i < ChordVoicing.isInversionEnabled.Length; i++)
            {
                ChordVoicing.isInversionEnabled[i] = true;                                                              //por ahora voy a mantener siempre todas las inversiones habilitadas, porque funcionan de forma demasiado particular dependiendo del tipo de acorde, y hasta que desarrolle un buen sistema para implementarlas dan para problemas. Lo que sí podría hacer tal vez sin demasiado trabajo es que al seleccionar un tipo de acorde se muestren en rojo las inversiones que no aplican; HACER ESTO, Y TRABAJAR EL DESHABILITADO DE INVERSIONES DE FORMA PURAMENTE ESTÉTICA (QUE SE MUESTREN EN ROJO LAS QUE NO APLICAN), NO DESACTIVAR VERDADERAMENTE LAS INVERSIONES DE LA CLASS "CHORD" (INCLUSO DESHABILITAR ESA POSIBILIDAD, Y ELIMINAR LA VARIABLE "isInversionEnabled", PORQUE SINO ME PARECE QUE SE PODRÍAN DAR PROBLEMAS.
            }
            //OBS.: Las tríadas aumentadas y tétradas disminuidas ignoran los settings de Inversions habilitadas, siempre se consideran en root position. Y los acordes con 9na y los sus siempre los hago en estado fundamental (aunque estos sí a lo mejor podrían tener inversiones), al menos por ahora.

            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 5), $"{Dictionaries.chordType[0]}", (int)CheckboxCategory.ChordType, true, true));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 6), $"{Dictionaries.chordType[1]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 7), $"{Dictionaries.chordType[2]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 8), $"{Dictionaries.chordType[3]}", (int)CheckboxCategory.ChordType, true, false));

            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 5), $"{Dictionaries.chordType[4]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 6), $"{Dictionaries.chordType[5]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 7), $"{Dictionaries.chordType[6]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 8), $"{Dictionaries.chordType[7]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 9), $"{Dictionaries.chordType[8]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 10), $"{Dictionaries.chordType[9]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 11), $"{Dictionaries.chordType[10]}", (int)CheckboxCategory.ChordType, true, false));

            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 2, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 5), $"{Dictionaries.chordType[11]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 2, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 6), $"{Dictionaries.chordType[12]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 2, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 7), $"{Dictionaries.chordType[13]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 2, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 8), $"{Dictionaries.chordType[14]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 2, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 9), $"{Dictionaries.chordType[15]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 2, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 10), $"{Dictionaries.chordType[16]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 2, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 11), $"{Dictionaries.chordType[17]}", (int)CheckboxCategory.ChordType, true, false));

            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 3, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 5), $"{Dictionaries.chordType[18]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 3, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 6), $"{Dictionaries.chordType[19]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 3, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 7), $"{Dictionaries.chordType[20]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 3, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 8), $"{Dictionaries.chordType[21]}", (int)CheckboxCategory.ChordType, true, false));
            _chordType.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 3, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 9), $"{Dictionaries.chordType[22]}", (int)CheckboxCategory.ChordType, true, false));

            _chordInversion.Add(new Checkbox(new Vector2(LayoutManager.marginLeft, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 15), $"{Dictionaries.chordInversion[0]}", (int)CheckboxCategory.ChordInversion, true, true));
            _chordInversion.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 15), $"{Dictionaries.chordInversion[1]}", (int)CheckboxCategory.ChordInversion, true, false));
            _chordInversion.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 2, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 15), $"{Dictionaries.chordInversion[2]}", (int)CheckboxCategory.ChordInversion, true, false));
            _chordInversion.Add(new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 3, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 15), $"{Dictionaries.chordInversion[3]}", (int)CheckboxCategory.ChordInversion, true, false));

            _onlyRootPosition = new Checkbox(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 3, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 18), "Only Root Position", (int)CheckboxCategory.Option, true, false, Keys.D0, Keys.NumPad0);


            //asocio los delegates de los Checkboxes con las funciones correspondientes
            for (int checkboxIndexInTypeList = 0; checkboxIndexInTypeList < _chordType.Count; checkboxIndexInTypeList++)
            {
                _chordType[checkboxIndexInTypeList].CheckboxClickedWithLeftButton  += GetOnChordTypeCheckboxClickedWithLeftButton(checkboxIndexInTypeList);  //ver comentario de asignación anterior, hago más o menos lo mismo.
                _chordType[checkboxIndexInTypeList].CheckboxClickedWithRightButton += GetOnChordTypeCheckboxClickedWithRightButton(checkboxIndexInTypeList); //al delegate "CheckboxClickedRight" de cada uno de los checkboxes de la lista "chordType" le asigno lo que devuelva la función "GetOnChordTypeCheckboxClickedWithRightButton(checkboxIndexInTypeList)", siendo checkboxIndexInTypeList el número de la checkbox en la lista (que se corresponde con el número de chordType de acorde) (va a devolver un una lambda expression que use ese checkboxIndexInTypeList)
            }

            for (int checkboxIndexInInversionList = 0; checkboxIndexInInversionList < _chordInversion.Count; checkboxIndexInInversionList++)
            {
                _chordInversion[checkboxIndexInInversionList].CheckboxClickedWithLeftButton += GetOnChordInversionCheckboxClickedWithLeftButton(checkboxIndexInInversionList); //ver comentario de asignación anterior, hago más o menos lo mismo.
            }


            _onlyRootPosition.CheckboxClickedWithLeftButton += OnOnlyRootPositionCheckboxClickedWithLeftButton;

            //creo los bangs, asocio los delegates a las funciones correspondientes, y luego los agrego al diccionario (podría agregarlos al diccionario y luego asociar sus delegates, pero eso creo que sería menos eficiente, porque buscar al bang correspondiente adentro de un diccionario lleva más tiempo que accederlo directamente, me parece)
            Bang currentBang = null; //voy a usar una variable llamada "currentBang" como carretilla, para ir referenciando a los bangs que creo, asignándoles una función a su delegate, y agregándolos al diccionario.

            currentBang = new Bang(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 12), "Basic", (int)BangCategory.Chord, true, Keys.D1, Keys.NumPad1);
            currentBang.BangClickedWithLeftButton += OnChordTypePresets1BangClickedWithLeftButton;
            _chordTypePresets.Add(1, currentBang);

            //una vez que agregué ese bang al diccionario, voy a acceder a él por medio del diccionario, así que paso a usar la variable "currentBang" para hacer lo mismo con los otros bangs.
            currentBang = new Bang(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 2, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 12), "Advanced", (int)BangCategory.Chord, true, Keys.D2, Keys.NumPad2);
            currentBang.BangClickedWithLeftButton += OnChordTypePresets2BangClickedWithLeftButton;
            _chordTypePresets.Add(2, currentBang);

            currentBang = new Bang(new Vector2(LayoutManager.marginLeft + LayoutManager.gridColumnSeparation * 3, LayoutManager.marginTop + LayoutManager.gridRowSeparation * 12), "Expert", (int)BangCategory.Chord, true, Keys.D3, Keys.NumPad3);
            currentBang.BangClickedWithLeftButton += OnChordTypePresets3BangClickedWithLeftButton;
            _chordTypePresets.Add(3, currentBang);
        }
Пример #8
0
 static void OnArpeggiateBangClickedWithLeftButton(Bang bang, int category, bool stateEnabled)
 {
     chord1.PlayArpeggio(); //llamo a la función de chord1 "PlayArpeggio"
 }
Пример #9
0
 static void OnRepeatBangClickedWithLeftButton(Bang bang, int category, bool stateEnabled)
 {
     chord1.PlaySimultaneous(); //llamo a la función de chord1 "Play"
 }