public override void Update(GameTime gameTime, List <Sprite> otherSprites, List <Sprite> hittableSprites) { UpdateTimer(gameTime); flyingSound.Update3DEffect(); CheckLifespan(); HandleAnimation(gameTime); Move(); CheckCollisions(hittableSprites); }
private void CheckCollision(Sprite sprite) { if (CollisionPolygon.Intersects(sprite.CollisionPolygon)) { if (sprite is Character characerSprite) { if (characerSprite.Faction != this.Faction) { flyingSound.Stop(); hitSound.Update3DEffect(); hitSound.Play(); int actualDamage = CalculateDamage(Damage, DamageType, characerSprite, out bool isCrit, out bool isBlocked); characerSprite.Health -= actualDamage; if (isBlocked) { characerSprite.CollisionDisplaytList.Add(new CollisionToDisplay("blocked", Color.Snow)); } else if (isCrit) { characerSprite.CollisionDisplaytList.Add(new CollisionToDisplay("*" + actualDamage.ToString() + "*", Color.Red)); } else { characerSprite.CollisionDisplaytList.Add(new CollisionToDisplay(actualDamage.ToString(), Color.OrangeRed)); } ToRemove = true; } } else { flyingSound.Stop(); hitSound.Update3DEffect(); hitSound.Play(); ToRemove = true; } } }