internal List <int> attack_animation(AttackAnims anim)
        {
            List <Battle_Animation_Variable_Set> anim_set;

            if (anim.HasEnumFlag(AttackAnims.Attack))
            {
                anim_set = Attack;
            }
            else if (anim.HasEnumFlag(AttackAnims.Hold))
            {
                anim_set = Hold;
            }
            else //if (anim.Overlaps(AttackAnims.Return))
            {
                anim_set = Return;
            }

            for (int i = anim_set.Count - 1; i >= 0; i--)
            {
                var animation = anim_set[i];
                // Check for hit, crit, damage caused
                if (!animation.test_attack_flag_match(anim,
                                                      AttackAnims.HitDefined, AttackAnims.Hit))
                {
                    continue;
                }
                if (!animation.test_attack_flag_match(anim,
                                                      AttackAnims.CritDefined, AttackAnims.Crit))
                {
                    continue;
                }
                if (!animation.test_attack_flag_match(anim,
                                                      AttackAnims.DamageDefined, AttackAnims.CausedDamage))
                {
                    continue;
                }
                if (!animation.test_attack_flag_match(anim,
                                                      AttackAnims.SkillDefined, AttackAnims.SkillActive))
                {
                    continue;
                }

                // All checks passed
                return(animation.Animation);
            }

            // Should never hit this, but just in case
            return(null);
        }
示例#2
0
 internal bool test_attack_flag_match(AttackAnims anim,
                                      AttackAnims definition_flag, AttackAnims test_flag)
 {
     // If this animation doesn't care about this definition, return true
     if (!AnimDefinition.HasEnumFlag(definition_flag))
     {
         return(true);
     }
     // Check if the animation data and the requested anim have the same flag
     return(AnimDefinition.HasEnumFlag(test_flag) == anim.HasEnumFlag(test_flag));
 }
示例#3
0
        public bool test_attack_flag_match(AttackAnims anim)
        {
            foreach (var pair in ATTACK_DEFINITION_FLAGS)
            {
                AttackAnims definition_flag = pair.Key;
                AttackAnims test_flag       = pair.Value;

                // If this animation doesn't care about this definition, continue
                if (!AnimDefinition.HasEnumFlag(definition_flag))
                {
                    continue;
                }
                // Check if the animation data and the requested anim have the same flag
                if (AnimDefinition.HasEnumFlag(test_flag) != anim.HasEnumFlag(test_flag))
                {
                    return(false);
                }
            }
            return(true);
        }
示例#4
0
        public override string ToString()
        {
            string key = "Default";

            if (AnimDefinition != AttackAnims.None)
            {
                List <string> flags = new List <string>();
                if (AnimDefinition.HasEnumFlag(AttackAnims.HitDefined))
                {
                    flags.Add(AnimDefinition.HasEnumFlag(AttackAnims.Hit) ? "Hit" : "Miss");
                }
                if (AnimDefinition.HasEnumFlag(AttackAnims.CritDefined))
                {
                    flags.Add(AnimDefinition.HasEnumFlag(AttackAnims.Crit) ? "Crit" : "No-crit");
                }
                if (AnimDefinition.HasEnumFlag(AttackAnims.DamageDefined))
                {
                    flags.Add(AnimDefinition.HasEnumFlag(AttackAnims.CausedDamage) ? "Damage" : "No-dmg");
                }
                if (AnimDefinition.HasEnumFlag(AttackAnims.SkillDefined))
                {
                    flags.Add(AnimDefinition.HasEnumFlag(AttackAnims.SkillActive) ? "Skill" : "No-skill");
                }
                key = string.Join(", ", flags);
            }

            return(string.Format("{0}: {1}", key,
                                 !Animation.Any() ? "Nothing" : string.Join(", ", Animation)));
        }