public override void PreProccess()
        {
            // TODO 记下伤害值、异常状态
            int damage;

            ox = Executor.GetCombatX();
            oy = Executor.GetCombatY();
            dx = (44.0f - Executor.GetCombatX()) / TOTAL_FRAME;
            dy = (14.0f - Executor.GetCombatY()) / TOTAL_FRAME;
            for (int i = 0; i < Targets.Count; i++)
            {
                FightingCharacter fc = Targets[i];
                if (!fc.IsAlive)
                {
                    continue;
                }
                damage = Executor.Attack - fc.Defend;
                if (damage <= 0)
                {
                    damage = 1;
                }
                damage += (int)(Context.Random.NextDouble() * 3);
                fc.HP  -= damage;
                RaiseAnimations.Add(new RaiseAnimation(Context, Targets[i].GetCombatX(), Targets[i].GetCombatY(), -damage, 0));
            }
        }
        protected override bool UpdateRaiseAnimation(long delta)
        {
            if (RaiseAnimations != null) //全体
            {
                if (RaiseAnimations.Count == 0)
                {
                    return(false);
                }
                else
                {
                    for (int i = 0; i < RaiseAnimations.Count; i++)
                    {
                        if (!RaiseAnimations[i].Update(delta))
                        {
                            RaiseAnimations.RemoveAt(i);
                            if (RaiseAnimations.Count <= 0)
                            {
                                return(false);
                            }
                        }
                    }
                    return(true);
                }
            }

            return(false);
        }
 public override void PreProccess()
 {
     ExecutorX = Executor.GetCombatX();
     ExecutorY = Executor.GetCombatY();
     //		mAni = magic.getMagicAni(); TODO null fix
     Animation.StartAni();
     Animation.SetIteratorNum(2);
     RaiseAnimations.Add(new RaiseAnimation(Context, 10, 20, 10, 0));
     RaiseAnimations.Add(new RaiseAnimation(Context, 30, 10, 10, 0));
 }
 public override void PreProccess()
 {
     ExecutorX = Executor.GetCombatX();
     ExecutorY = Executor.GetCombatY();
     Animation = _magic.Animation;
     Animation.StartAni();
     Animation.SetIteratorNum(2);
     RaiseAnimations.Add(new RaiseAnimation(Context, 10, 20, 10, 0));
     RaiseAnimations.Add(new RaiseAnimation(Context, 30, 10, 10, 0));
 }
 public override void PreProccess()
 {
     ExecutorX = Executor.GetCombatX();
     ExecutorY = Executor.GetCombatY();
     Animation = _magic.Animation;
     Animation.StartAni();
     Animation.SetIteratorNum(2);
     _magic.Use(Executor, Targets);
     RaiseAnimations.Add(new RaiseAnimation(Context, 10, 10, 10, 0));
     RaiseAnimations.Add(new RaiseAnimation(Context, 30, 10, 20, 0 /*FightingCharacter.BUFF_MASK_DU*/));
 }
        private void UseMagic(FightingCharacter target)
        {
            //TODO 处理异常状态
            var debuffs = target.DeBuffRound.Clone() as int[];
            var oldhp   = target.HP;

            _magic.Use(Attackers[0], target);
            var damage = oldhp - target.HP;

            RaiseAnimations.Add(new RaiseAnimation(Context, target.GetCombatX(), target.GetCombatY(), -damage, 0));
        }
 public override void PreProccess()
 {
     // TODO 记下伤害值、异常状态
     ExecutorX = Executor.GetCombatX();
     ExecutorX = Executor.GetCombatY();
     Animation = _hiddenWeapon.Animation;
     Animation.StartAni();
     Animation.SetIteratorNum(2);
     // TODO effect it
     RaiseAnimations.Add(new RaiseAnimation(Context, 10, 20, 10, 0));
     RaiseAnimations.Add(new RaiseAnimation(Context, 30, 10, 10, 0));
 }