public void ChooseAttack(CharacterStates.BaseState currState, CharacterProperties.Attack currAttack, FightingGameInputCodeBut button, FightingGameInputCodeDir direction = FightingGameInputCodeDir.None)
            {
                InputNotation notation = SelectInputNotation(button, direction);

                List <CharacterProperties.Attack> attackCandidates = charData.SelectAttacks(GetOrientation(), GetGroundRelation(), notation);

                CharacterProperties.Attack attack = charData.ChooseAttackFromSelectability(attackCandidates, currState, currAttack);

                if (attack != null)
                {
                    attackState.SetActiveAttack(attack);
                }
            }
Example #2
0
            public Attack ChooseAttackFromSelectability(List <Attack> attacks, CharacterStates.BaseState currState, Attack currAttack)
            {
                List <Attack> validAttacks = attacks
                                             .Where(atk => attackSelectableCallbackMap[atk].Invoke(currState, currAttack))
                                             .OrderBy(atk => atk.priority)
                                             .ToList();

                if (validAttacks.Count > 0)
                {
                    return(validAttacks[0]);
                }
                else
                {
                    return(null);
                }
            }