protected override void DrawRaiseAnimation(ICanvas canvas)
 {
     if (RaiseAnimation != null)
     {
         RaiseAnimation.Draw(canvas);
     }
 }
예제 #2
0
 public override void Draw(ICanvas canvas)
 {
     if (State == CombatAnimationState.Magic)
     {
         Animation.DrawAbsolutely(canvas, TargetX, TargetY);
     }
     else if (State == CombatAnimationState.End)
     {
         RaiseAnimation.Draw(canvas);
     }
 }
 public override void PreProccess()
 {
     // TODO 记下伤害值、异常状态 there is null pointer
     ExecutorX = Executor.GetCombatX();
     ExecutorY = Executor.GetCombatY();
     Animation = _hiddenWeapon.Animation;
     Animation.StartAni();
     Animation.SetIteratorNum(2);
     // TODO effect it
     TargetX        = Target.GetCombatX();
     TargetY        = Target.GetCombatY();
     RaiseAnimation = new RaiseAnimation(Context, TargetX, Target.GetCombatTop(), 10, 0);
 }
예제 #4
0
        public override void PreProccess()
        {
            Animation = _magic.Animation;
            Animation.StartAni();
            Animation.SetIteratorNum(2);
            TargetX = Target.GetCombatX();
            TargetY = Target.GetCombatY();

            var oldHp        = Target.HP;
            var magicRestore = (MagicRestore)_magic;

            magicRestore.Use(Executor, Target);
            var value = Target.HP - oldHp;

            RaiseAnimation = new RaiseAnimation(Context, Target.GetCombatX(), Target.GetCombatTop(), value, 0);
        }
        public override bool Update(long delta)
        {
            base.Update(delta);
            switch (State)
            {
            case CombatAnimationState.Start:
                if (_currentFrame < 10)
                {
                    if (Executor is PlayerCharacter)
                    {
                        Executor.FightingSprite.CurrentFrame = _currentFrame * 3 / 10 + 6;
                    }
                    else
                    {
                        Executor.SetCombatPos(ExecutorX + 2, ExecutorY + 2);
                    }
                }
                else
                {
                    State = CombatAnimationState.Magic;
                }
                break;

            case CombatAnimationState.Magic:
                if (!Animation.Update(delta))
                {
                    State = CombatAnimationState.End;
                    if (Executor is PlayerCharacter)
                    {
                        ((PlayerCharacter)Executor).SetFrameByState();
                    }
                    else
                    {
                        Executor.FightingSprite.Move(-2, -2);
                    }
                }
                break;

            case CombatAnimationState.End:
                return(RaiseAnimation.Update(delta));
                //			break;
            }
            return(true);
        }
예제 #6
0
        public override void PreProccess()
        {
            ExecutorX = Executor.GetCombatX();
            ExecutorY = Executor.GetCombatY();
            Animation = _magic.Animation;
            Animation.StartAni();
            Animation.SetIteratorNum(2);
            int ohp = Target.HP;

            if (_magic is MagicAttack magicAttack)
            {
                magicAttack.Use(Executor, Target);
            }
            TargetX        = Target.GetCombatX();
            TargetY        = Target.GetCombatY() - Target.FightingSprite.Height / 2;
            RaiseAnimation = new RaiseAnimation(Context, Target.GetCombatX(), Target.GetCombatY(), Target.HP - ohp, 0 /*FightingCharacter.BUFF_MASK_DU*/);

            if (_magic is MagicSpecial)
            {
                //TODO 完成特殊魔法
            }
        }
        public override void PreProccess()
        {
            // TODO 记下伤害值、异常状态
            int hp = 0;

            if (_goods is GoodsMedicine goodsMedicine)
            {
                Animation = goodsMedicine.Animation;
                hp        = Target.HP;
                Target.UseMedicine(_goods);
                hp = Target.HP - hp;
            }
            else
            {
                Animation = Context.LibData.GetSrs(2, 1);
            }
            Animation.StartAni();
            Animation.SetIteratorNum(2);
            TargetX        = Target.GetCombatX();
            TargetY        = Target.GetCombatY();
            RaiseAnimation = new RaiseAnimation(Context, Target.GetCombatX(), Target.GetCombatTop(), hp, 0);
        }
        public override void PreProccess()
        {
            // TODO 记下伤害值、异常状态
            int damage;

            ox     = Executor.GetCombatX();
            oy     = Executor.GetCombatY();
            dx     = (float)(Target.GetCombatX() - Executor.GetCombatX()) / TOTAL_FRAME;
            dy     = (float)(Target.GetCombatY() - Executor.GetCombatY()) / TOTAL_FRAME;
            damage = Executor.Attack - Target.Defend;
            if (damage <= 0)
            {
                damage = 1;
            }
            //if (_attacker is PlayerCharacter)
            //{
            //    damage *= 10;
            //}
            damage        += (int)(Context.Random.NextDouble() * 10);
            Target.HP      = Target.HP - damage;
            RaiseAnimation = new RaiseAnimation(Context, Target.GetCombatLeft(), Target.GetCombatTop(), -damage, 0);
        }
 protected override bool UpdateRaiseAnimation(long delta)
 {
     return(RaiseAnimation != null && RaiseAnimation.Update(delta));
 }