protected override void DrawRaiseAnimation(ICanvas canvas) { if (RaiseAnimation != null) { RaiseAnimation.Draw(canvas); } }
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); }
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); }
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)); }