public virtual void Hit(IMario player, Vector2 direction) { if (player.HasStar()) { Enemy.Kill(); SoundManager.PlayKickSound(); } else if (direction.Y < Utility.ZERO) { Enemy.CurrentState = Enemy is Koopa ? (EnemyStateBase)new KoopaKnockedOutState(Enemy) : new GoombaStompedState(Enemy); player.InvincibilityPulse(Utility.DELAY); SoundManager.PlayStompSound(); } else { player.TakeDamage(); } }
public override void Hit(IMario player, Vector2 direction) { if (damageDelay > Utility.ZERO) return; if (player.HasStar()) { Enemy.Kill(); SoundManager.PlayKickSound(); } else if (direction.Y < Utility.ZERO || !CanHarmPlayer()) { if (!CanHarmPlayer()) { Enemy.Velocity = player.Bounds.Center.X <= Enemy.Bounds.Center.X ? new Vector2(Utility.KOOPA_HIT_VELOCITY, Enemy.Velocity.Y) : new Vector2(-Utility.KOOPA_HIT_VELOCITY, Enemy.Velocity.Y); SoundManager.PlayKickSound(); } else Enemy.Velocity = Vector2.Zero; player.InvincibilityPulse(Utility.DELAY); } else { player.TakeDamage(); Enemy.Velocity *= -Utility.ONE; } damageDelay = Utility.DELAY; }