Example #1
0
        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;
                }
            }
        }
Example #2
0
        public virtual void Initialize(Vector2 position, int damage, DamageType damageType, Vector2 direction, Faction faction
                                       , SoundEffectInstance flyingSoundInstance, SoundEffectInstance hitSoundInstance, Character parent = null)
        {
            Position   = position;
            Damage     = damage;
            DamageType = damageType;
            Direction  = direction;
            Direction.Normalize();
            Angle   = Math.Atan(Direction.Y / Direction.X);
            Faction = faction;
            Parent  = parent;

            flyingSound = new SoundEffect2D(flyingSoundInstance, this)
            {
                IsLooping = true,
                Volume    = 0.4f
            };
            hitSound = new SoundEffect2D(hitSoundInstance, this)
            {
                IsLooping = false,
                Volume    = 0.5f
            };
            flyingSound.Play();
        }