Exemplo n.º 1
0
        public void Update()
        {
            if (!comboStarted)
            {
                return;
            }

            inputCounter += Time.deltaTime;

            for (int i = validCombos.Count - 1; i >= 0; i--)
            {
                ComboSequence sequence = validCombos[i];

                if (currentInputIndex >= sequence.items.Length)
                {
                    validCombos.RemoveAt(i);
                    continue;
                }

                ComboSequenceItem sequenceItem = sequence.items[currentInputIndex];

                if (sequenceItem.timeConstraints && inputCounter > sequenceItem.maxDelay)
                {
                    validCombos.RemoveAt(i);
                    comboSystem.messenger.SendOnComboFail(sequence);
                }
            }

            if (validCombos.Count == 0)
            {
                EndCombo();
            }
            else
            {
                comboSystem.messenger.SendOnComboStay();
            }
        }
Exemplo n.º 2
0
        void ShowComboSequences()
        {
            if (string.IsNullOrEmpty(comboManagerProperty.FindPropertyRelative("inputEnumName").GetValue<string>())){
                EditorGUILayout.HelpBox("Create an Enum starting with the prefix 'Combo' with your input options.", MessageType.Info);
                return;
            }

            combosProperty = comboManagerProperty.FindPropertyRelative("combos");

            if (AddFoldOut(combosProperty, "Combos".ToGUIContent())) {
                comboManager.combos[comboManager.combos.Length - 1] = new ComboSequence(comboSystem);
                comboManager.combos[comboManager.combos.Length - 1].SetUniqueName("default", "", comboManager.combos);
            }

            if (combosProperty.isExpanded) {
                EditorGUI.indentLevel += 1;

                for (int i = 0; i < combosProperty.arraySize; i++) {
                    currentSequence = comboManager.combos[i];
                    currentSequenceProperty = combosProperty.GetArrayElementAtIndex(i);

                    BeginBox();

                    if (DeleteFoldOut(combosProperty, i, GetComboSequenceName(currentSequence).ToGUIContent(), GetComboSequenceStyle())) {
                        break;
                    }

                    ShowComboSequence();

                    EndBox();
                }

                Separator();
                EditorGUI.indentLevel -= 1;
            }
        }
Exemplo n.º 3
0
        string GetComboSequenceName(ComboSequence sequence)
        {
            string displayName = sequence.Name + " (";

            foreach (ComboSequenceItem item in sequence.items) {
                displayName += GetComboSequenceItemName(item);

                if (item != sequence.items.Last()) {
                    displayName += " + ";
                }
            }

            displayName += ")";

            return displayName;
        }
Exemplo n.º 4
0
 public void SendOnComboSuccess(ComboSequence sequence)
 {
     foreach (IComboListener listener in listeners) {
         listener.OnComboSuccess(sequence.Name);
     }
 }