public static Action CreateAttackAction(StandardCharacter character, CellPartEnum attackDirection, ArrayList path, ArrayList targets) { Action action = new Action(ActionTypeEnum.Attack); SubAction subAction = new SubAction(); action._subActions.Add(subAction); subAction._character = character; subAction._path = path; if (path != null && path.Count > 0) { subAction.AddStartMoving(); subAction.AddMoving(); subAction.AddStopMoving(); } // target getting hit or death ArrayList defendTriggers = new ArrayList(); ArrayList hitTriggers = new ArrayList(); foreach (Heroes.Core.Battle.Characters.Armies.Army target in targets) { SubAction subAction2 = new SubAction(); action._subActions.Add(subAction2); subAction2._character = target; AnimationSequence animationSeq = null; if (target._isDead) animationSeq = subAction2.AddDeath(attackDirection); else if (target._isDefend) animationSeq = subAction2.AddDefend(attackDirection); else animationSeq = subAction2.AddGettingHit(attackDirection); subAction2._currentAnimationSeq = animationSeq; if (target._isDefend) defendTriggers.Add(animationSeq); else hitTriggers.Add(animationSeq); } subAction.AddStartAttack(attackDirection, defendTriggers); subAction.AddStopAttack(attackDirection, hitTriggers); subAction._currentAnimationSeq = (AnimationSequence)subAction._animationSeqs[0]; return action; }
public static Action CreateMoveAction(StandardCharacter character, ArrayList path) { Action action = new Action(ActionTypeEnum.Moving); SubAction subAction = new SubAction(); subAction._character = character; subAction._path = path; subAction.AddStartMoving(); subAction.AddMoving(); subAction.AddStopMoving(); subAction._currentAnimationSeq = (AnimationSequence)subAction._animationSeqs[0]; action._subActions.Add(subAction); return action; }