Example #1
0
        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;
        }
Example #2
0
        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;
        }