public HitAttribute(AttackStateType height, ReadOnlyList<HitType> attackdata) { if (attackdata == null) throw new ArgumentNullException("attackdata"); m_attackheight = height; m_attackdata = attackdata; }
Object ToHitAttribute(String s) { AttackStateType attackheight = AttackStateType.None; List <Combat.HitType> attackdata = new List <Combat.HitType>(); Boolean first = true; foreach (String str in Regex.Split(s, @"\s*,\s*", RegexOptions.IgnoreCase)) { if (first == true) { first = false; if (TryConvert(str, out attackheight) == false) { return(Failure); } } else { Combat.HitType hittype; if (TryConvert(str, out hittype) == false) { return(Failure); } attackdata.Add(hittype); } } return(new Combat.HitAttribute(attackheight, new ReadOnlyList <Combat.HitType>(attackdata))); }
public bool HasHeight(AttackStateType height) { if (height == AttackStateType.None) { return(false); } return((AttackHeight & height) == height); }
public HitAttribute(AttackStateType height, ReadOnlyList <HitType> attackdata) { if (attackdata == null) { throw new ArgumentNullException(nameof(attackdata)); } m_attackheight = height; m_attackdata = attackdata; }
public static Node Parse(ParseState parsestate) { Operator @operator = parsestate.CurrentOperator; if (@operator != Operator.Equals && @operator != Operator.NotEquals) { return(null); } parsestate.BaseNode.Arguments.Add(@operator); ++parsestate.TokenIndex; AttackStateType ast = parsestate.ConvertCurrentToken <AttackStateType>(); if (ast == AttackStateType.None) { return(null); } parsestate.BaseNode.Arguments.Add(ast); ++parsestate.TokenIndex; List <Combat.HitType> hittypes = new List <Combat.HitType>(); while (true) { if (parsestate.CurrentSymbol != Symbol.Comma) { break; } ++parsestate.TokenIndex; Combat.HitType?hittype = parsestate.ConvertCurrentToken <Combat.HitType?>(); if (hittype == null) { --parsestate.TokenIndex; break; } hittypes.Add(hittype.Value); ++parsestate.TokenIndex; } parsestate.BaseNode.Arguments.Add(hittypes.ToArray()); return(parsestate.BaseNode); }
public static Boolean Evaluate(Object state, ref Boolean error, Operator @operator, AttackStateType ast, Combat.HitType[] hittypes) { Combat.Character character = state as Combat.Character; if (character == null) { error = true; return false; } if (character.MoveType != xnaMugen.MoveType.Attack) return false; Combat.HitAttribute attr = character.OffensiveInfo.HitDef.HitAttribute; Boolean heightmatch = (attr.AttackHeight & ast) != AttackStateType.None; Boolean datamatch = false; foreach (Combat.HitType hittype in hittypes) { if (attr.HasData(hittype) == false) continue; datamatch = true; break; } switch (@operator) { case Operator.Equals: return heightmatch && datamatch; case Operator.NotEquals: return !heightmatch || !datamatch; default: error = true; return false; } }
Object ToAttackStateType(String s) { AttackStateType ast = AttackStateType.None; if (s.IndexOf("s", StringComparison.OrdinalIgnoreCase) != -1) { ast |= AttackStateType.Standing; } if (s.IndexOf("c", StringComparison.OrdinalIgnoreCase) != -1) { ast |= AttackStateType.Crouching; } if (s.IndexOf("a", StringComparison.OrdinalIgnoreCase) != -1) { ast |= AttackStateType.Air; } if (ast == AttackStateType.None && s != String.Empty) { return(Failure); } return(ast); }
public Boolean HasHeight(AttackStateType height) { if (height == AttackStateType.None) return false; return (AttackHeight & height) == height; }
public static Boolean Evaluate(Object state, ref Boolean error, Operator @operator, AttackStateType ast, Combat.HitType[] hittypes) { Combat.Character character = state as Combat.Character; if (character == null) { error = true; return(false); } if (character.MoveType != xnaMugen.MoveType.Attack) { return(false); } Combat.HitAttribute attr = character.OffensiveInfo.HitDef.HitAttribute; Boolean heightmatch = (attr.AttackHeight & ast) != AttackStateType.None; Boolean datamatch = false; foreach (Combat.HitType hittype in hittypes) { if (attr.HasData(hittype) == false) { continue; } datamatch = true; break; } switch (@operator) { case Operator.Equals: return(heightmatch && datamatch); case Operator.NotEquals: return(!heightmatch || !datamatch); default: error = true; return(false); } }
public void changeState(AttackStateType type) { // Debug.Log(type.ToString()); _currentState = _states[type]; _currentState.reset(); //todo..remove enter }